| 1: | <?php |
| 2: | |
| 3: | namespace LaravelUi5\Core\Contracts; |
| 4: | |
| 5: | /** |
| 6: | * Resolves effective settings for a Configurable target into an immutable Ui5Config. |
| 7: | * |
| 8: | * Notes: |
| 9: | * - Core implementation returns defaults only. |
| 10: | * - This method MUST be side-effect-free and MUST NOT mutate $target. |
| 11: | */ |
| 12: | interface SettingResolverInterface |
| 13: | { |
| 14: | /** |
| 15: | * Build an immutable configuration bag for the given target and context. |
| 16: | * |
| 17: | * @param ConfigurableInterface $target The class decorated with #[Setting(...)] attributes |
| 18: | * @param Ui5ContextInterface|null $ctx Runtime context (artifact, tenant, partner, locale). Can be null in tests. |
| 19: | * @return Ui5Config Typed, read-only configuration values keyed by setting key |
| 20: | */ |
| 21: | public function resolve(ConfigurableInterface $target, ?Ui5ContextInterface $ctx = null): Ui5Config; |
| 22: | } |
| 23: |