1: <?php
2:
3: namespace LaravelUi5\Core\Ui5\Capabilities;
4:
5: use LaravelUi5\Core\Contracts\ConfigurableInterface;
6: use LaravelUi5\Core\Contracts\ParameterizableInterface;
7:
8: /**
9: * Contract for UI5 Data Providers.
10: *
11: * A DataProvider encapsulates read-only, idempotent logic for delivering
12: * structured data to UI5 artifacts such as Cards, Resources, or Reports.
13: *
14: * Responsibilities:
15: * - Assemble domain-specific data in a backend-driven way.
16: * - Return results in a structured array suitable for JSON serialization.
17: * - Optionally implement {@see ParameterizableInterface} to receive
18: * validated request parameters.
19: * - Optionally implement {@see ConfigurableInterface} to receive resolved
20: * tenant- or artifact-specific settings.
21: *
22: * Notes:
23: * - DataProviders must not perform state-changing operations.
24: * - Dependencies (services, repositories) should be injected via constructor DI.
25: * - The return array should be normalized (arrays, scalars, nested objects),
26: * not raw models or resources.
27: */
28: interface DataProviderInterface extends ExecutableInterface
29: {
30: }
31: