*/ public function sourceFields(string $source): array; public function hasEmailField(string $source): bool; /** @return array{left:string,right:string}|null */ public function joinPath(string $left, string $right): ?array; /** @return list */ public function allKnownSources(): array; public function sourceTable(string $source): ?string; public function fieldSql(string $source, string $field, string $alias): ?string; }