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