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: