--- /dev/null
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\HttpKernel\HttpCache;
+
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+
+interface SurrogateInterface
+{
+ /**
+ * Returns surrogate name.
+ *
+ * @return string
+ */
+ public function getName();
+
+ /**
+ * Returns a new cache strategy instance.
+ *
+ * @return ResponseCacheStrategyInterface A ResponseCacheStrategyInterface instance
+ */
+ public function createCacheStrategy();
+
+ /**
+ * Checks that at least one surrogate has Surrogate capability.
+ *
+ * @param Request $request A Request instance
+ *
+ * @return bool true if one surrogate has Surrogate capability, false otherwise
+ */
+ public function hasSurrogateCapability(Request $request);
+
+ /**
+ * Adds Surrogate-capability to the given Request.
+ *
+ * @param Request $request A Request instance
+ */
+ public function addSurrogateCapability(Request $request);
+
+ /**
+ * Adds HTTP headers to specify that the Response needs to be parsed for Surrogate.
+ *
+ * This method only adds an Surrogate HTTP header if the Response has some Surrogate tags.
+ *
+ * @param Response $response A Response instance
+ */
+ public function addSurrogateControl(Response $response);
+
+ /**
+ * Checks that the Response needs to be parsed for Surrogate tags.
+ *
+ * @param Response $response A Response instance
+ *
+ * @return bool true if the Response needs to be parsed, false otherwise
+ */
+ public function needsParsing(Response $response);
+
+ /**
+ * Renders a Surrogate tag.
+ *
+ * @param string $uri A URI
+ * @param string $alt An alternate URI
+ * @param bool $ignoreErrors Whether to ignore errors or not
+ * @param string $comment A comment to add as an esi:include tag
+ *
+ * @return string
+ */
+ public function renderIncludeTag($uri, $alt = null, $ignoreErrors = true, $comment = '');
+
+ /**
+ * Replaces a Response Surrogate tags with the included resource content.
+ *
+ * @param Request $request A Request instance
+ * @param Response $response A Response instance
+ *
+ * @return Response
+ */
+ public function process(Request $request, Response $response);
+
+ /**
+ * Handles a Surrogate from the cache.
+ *
+ * @param HttpCache $cache An HttpCache instance
+ * @param string $uri The main URI
+ * @param string $alt An alternative URI
+ * @param bool $ignoreErrors Whether to ignore errors or not
+ *
+ * @return string
+ *
+ * @throws \RuntimeException
+ * @throws \Exception
+ */
+ public function handle(HttpCache $cache, $uri, $alt, $ignoreErrors);
+}