1: <?php
2:
3: declare(strict_types=1);
4:
5: namespace LaravelUi5\OData\Edm\Contracts\Type;
6:
7: use LaravelUi5\OData\Edm\Contracts\NamedElementInterface;
8:
9: /**
10: * Root contract for every type that can appear as the resolved type
11: * of a structural or navigation property.
12: *
13: * The four concrete subtypes of this interface are:
14: * - PrimitiveTypeInterface (wraps a EdmPrimitiveType case)
15: * - EntityTypeInterface (§6)
16: * - ComplexTypeInterface (§9)
17: * - EnumTypeInterface (§10)
18: * - TypeDefinitionInterface (§11)
19: *
20: * Callers that need type-specific behaviour should use instanceof
21: * checks or a visitor pattern rather than downcasting blindly.
22: */
23: interface TypeInterface extends NamedElementInterface
24: {
25: /**
26: * The fully qualified name of this type including its namespace,
27: * e.g. "MyService.Customer" or "Edm.String".
28: */
29: public function getQualifiedName(): string;
30: }
31: