*/ public function capabilities(): array; public function supports(string $capability): bool; /** * @return array */ public function executeCommand(HostingAccount $account, string $command, int $timeout = 600): array; /** * @return array */ public function executeTerminalCommand(HostingAccount $account, string $command, string $workingDirectory, int $timeout = 300): array; /** * @return array */ public function executeCommandAsRoot(HostingAccount $account, string $command): array; /** * @return array */ public function getUsageStats(HostingAccount $account): array; public function changePassword(HostingAccount $account, string $newPassword): bool; public function installTeamMemberSshKey(HostingAccount $account, string $marker, string $publicKey): void; public function removeTeamMemberSshKey(HostingAccount $account, string $marker): void; /** * @return array */ public function createDatabase(HostedDatabase $database, string $password): array; public function deleteDatabase(HostedDatabase $database): bool; public function changeDatabasePassword(HostedDatabase $database, string $newPassword): bool; /** * @return array */ public function addSite(HostedSite $site): array; public function removeSite(HostedSite $site): bool; public function requestLetsEncryptCertificate(HostedSite $site): bool; public function ensurePhpFpmPool(HostingAccount $account): void; public function setPhpVersion(HostedSite $site, string $version): bool; public function changeAccountPhpVersion(HostingAccount $account, string $version): bool; public function prepareDirectoryForUser(HostingAccount $account, string $path): void; public function setWebServerGroupOwnership(HostingAccount $account, string $path): void; public function removeAppService(HostedSite $site): bool; public function restoreDefaultSiteConfig(HostingAccount $account, HostedSite $site, string $docRoot): void; }