<?php
declare(strict_types=1);

namespace PpPhp\Core\Platform\DI\Contracts;

interface RegistrationInterface
{
    public function definition(): DefinitionInterface;
    public function singleton(): self;
    public function scoped(): self;
    public function prototype(): self;
    public function transient(): self;
    public function public(): self;
    public function private(): self;
    public function lazy(bool $lazy = true): self;
    public function tag(string $tag, array $attributes = []): self;
    public function alias(string $alias): self;
    public function metadata(string $key, mixed $value): self;
}
