1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\Type\Generic;
4:
5: use PHPStan\Turbo\ReferencedByTurboExtension;
6: use PHPStan\Type\CompoundType;
7: use PHPStan\Type\IsSuperTypeOfResult;
8: use PHPStan\Type\Type;
9:
10: /**
11: * @api
12: * @api-do-not-implement
13: */
14: #[ReferencedByTurboExtension(key: 'templateType')]
15: interface TemplateType extends CompoundType
16: {
17:
18: /** @return non-empty-string */
19: public function getName(): string;
20:
21: public function getScope(): TemplateTypeScope;
22:
23: public function getBound(): Type;
24:
25: public function getDefault(): ?Type;
26:
27: public function toArgument(): TemplateType;
28:
29: public function isArgument(): bool;
30:
31: public function isValidVariance(Type $a, Type $b, bool $strict = false): IsSuperTypeOfResult;
32:
33: public function getVariance(): TemplateTypeVariance;
34:
35: public function getStrategy(): TemplateTypeStrategy;
36:
37: }
38: