<?php

declare(strict_types=1);

namespace PpPhp\Core\Platform\Catalog\Contracts;

use PpPhp\Core\Platform\Catalog\Definitions\AbstractCatalogDefinition;
use PpPhp\Core\Platform\Identity\PlatformIdentity;

interface CatalogInstanceInterface
{
    public function identity(): PlatformIdentity;

    public function definition(): AbstractCatalogDefinition;

    public function properties(): array;

    public function property(string $name, mixed $default = null): mixed;

    public function setProperty(string $name, mixed $value): static;
}
