<?php

namespace NoahVet\Reef\Contract\Phpunit;

use NoahVet\Reef\Phpunit\Fixture\PermissionFixture;

interface EndpointTestBuilderInterface
{
    public function withBasePath(string $basePath): static;

    public function withRequestExample(string $filePath, string $componentName): static;

    public function withResponseExample(string $filePath, string $componentName): static;

    /** @param PermissionFixture[] $permissions */
    public function withPermissions(array $permissions): static;

    public function withSuperAdminPermissions(): static;

    /** @param list<string> $fields */
    public function withBlacklist(array $fields): static;

    /** @param array<string, string> $headers */
    public function withHeaders(array $headers): static;

    public function withMultipartType(string $subtype): static;

    public function withPrincipalId(string $uuid): static;

    public function execute(): EndpointTestResponseInterface;
}
