1: <?php
2:
3: namespace LaravelUi5\Core\Ui5\Contracts;
4:
5: /**
6: * Contract for discoverable UI5 Resources.
7: *
8: * A Resource is a lightweight, read-only UI5 artifact that exposes
9: * structured data for consumption by the client (e.g. cards, dashboards, lists).
10: *
11: * Responsibilities:
12: * - Declares its identity (slug, urlKey) via Ui5ArtifactInterface + SluggableInterface.
13: * - Provides access to its runtime logic via a ResourceDataProvider.
14: *
15: * The actual execution logic lives in the ResourceDataProvider, keeping
16: * metadata and runtime separate.
17: */
18: interface Ui5ResourceInterface extends Ui5ArtifactInterface, SluggableInterface
19: {
20:
21: /**
22: * Returns the data provider that implements the runtime logic for this resource.
23: *
24: * @return DataProviderInterface
25: */
26: public function getProvider(): DataProviderInterface;
27: }
28: