<?php

namespace NoahVet\Reef\Application\Security\Service;

use NoahVet\Reef\Domain\Security\Policy\PolicyInterface;

interface PolicyOrchestratorInterface
{
    /**
     * Returns all policies that can handle the given subject.
     *
     * @return list<PolicyInterface<object>>
     */
    public function getPoliciesFor(object $subject): array;

    /**
     * @return iterable<PolicyInterface<object>>
     */
    public function all(): iterable;
}
