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