<?php
namespace boru\ai\Asset;

interface AssetProviderInterface
{
    /**
     * Return the provider name this asset provider manages.
     *
     * @return string
     */
    public function providerName();

    /**
     * Ensure an asset has a provider-specific binding that can be used by the provider.
     *
     * @param Asset $asset
     * @param string|null $purpose
     * @param ProviderAssetBinding|null $existingBinding
     * @return ProviderAssetBinding
     */
    public function ensureBinding(Asset $asset, $purpose = null, ProviderAssetBinding $existingBinding = null);
}
