import { Observable } from 'rxjs' import { RR } from './api.types' import { RPCOptions } from '@start9labs/shared' import { T } from '@start9labs/start-sdk' import { GetPackageRes, GetPackagesRes, MarketplacePkg, } from '@start9labs/marketplace' import { WebSocketSubject } from 'rxjs/webSocket' export abstract class ApiService { // http // for sideloading packages abstract uploadPackage(guid: string, body: Blob): Promise // for getting static files: ex icons, instructions, licenses abstract getStaticProxy( pkg: MarketplacePkg, path: 'LICENSE.md' | 'instructions.md', ): Promise abstract getStaticInstalled( id: T.PackageId, path: 'LICENSE.md' | 'instructions.md', ): Promise // websocket abstract openWebsocket$( guid: string, config?: RR.WebsocketConfig, ): WebSocketSubject // state abstract echo(params: RR.EchoReq, url: string): Promise abstract getState(): Promise // db abstract subscribeToPatchDB( params: RR.SubscribePatchReq, ): Promise abstract setDbValue( pathArr: Array, value: T, ): Promise // auth abstract login(params: RR.LoginReq): Promise abstract logout(params: RR.LogoutReq): Promise abstract getSessions(params: RR.GetSessionsReq): Promise abstract killSessions(params: RR.KillSessionsReq): Promise abstract resetPassword( params: RR.ResetPasswordReq, ): Promise // diagnostic abstract diagnosticGetError(): Promise abstract diagnosticRestart(): Promise abstract diagnosticForgetDrive(): Promise abstract diagnosticRepairDisk(): Promise abstract diagnosticGetLogs( params: RR.GetServerLogsReq, ): Promise // init abstract initGetProgress(): Promise abstract initFollowLogs( params: RR.FollowServerLogsReq, ): Promise // server abstract getSystemTime( params: RR.GetSystemTimeReq, ): Promise abstract getServerLogs( params: RR.GetServerLogsReq, ): Promise abstract getKernelLogs( params: RR.GetServerLogsReq, ): Promise abstract getTorLogs(params: RR.GetServerLogsReq): Promise abstract followServerLogs( params: RR.FollowServerLogsReq, ): Promise abstract followKernelLogs( params: RR.FollowServerLogsReq, ): Promise abstract followTorLogs( params: RR.FollowServerLogsReq, ): Promise abstract getServerMetrics( params: RR.GetServerMetricsReq, ): Promise abstract updateServer(url?: string): Promise abstract restartServer( params: RR.RestartServerReq, ): Promise abstract shutdownServer( params: RR.ShutdownServerReq, ): Promise abstract repairDisk(params: RR.DiskRepairReq): Promise abstract resetTor(params: RR.ResetTorReq): Promise // smtp abstract setSmtp(params: RR.SetSMTPReq): Promise abstract clearSmtp(params: RR.ClearSMTPReq): Promise abstract testSmtp(params: RR.TestSMTPReq): Promise // marketplace URLs abstract registryRequest( registryUrl: string, options: RPCOptions, ): Promise abstract checkOSUpdate(qp: RR.CheckOSUpdateReq): Promise abstract getRegistryInfo(registryUrl: string): Promise abstract getRegistryPackage( url: string, id: string, versionRange: string | null, ): Promise abstract getRegistryPackages(registryUrl: string): Promise // notification abstract getNotifications( params: RR.GetNotificationsReq, ): Promise abstract deleteNotification( params: RR.DeleteNotificationReq, ): Promise abstract deleteAllNotifications( params: RR.DeleteAllNotificationsReq, ): Promise // wifi abstract getWifi( params: RR.GetWifiReq, timeout: number, ): Promise abstract setWifiCountry( params: RR.SetWifiCountryReq, ): Promise abstract addWifi(params: RR.AddWifiReq): Promise abstract connectWifi(params: RR.ConnectWifiReq): Promise abstract deleteWifi(params: RR.DeleteWifiReq): Promise // ssh abstract getSshKeys(params: RR.GetSSHKeysReq): Promise abstract addSshKey(params: RR.AddSSHKeyReq): Promise abstract deleteSshKey(params: RR.DeleteSSHKeyReq): Promise // backup abstract getBackupTargets( params: RR.GetBackupTargetsReq, ): Promise abstract addBackupTarget( params: RR.AddBackupTargetReq, ): Promise abstract updateBackupTarget( params: RR.UpdateBackupTargetReq, ): Promise abstract removeBackupTarget( params: RR.RemoveBackupTargetReq, ): Promise abstract getBackupInfo( params: RR.GetBackupInfoReq, ): Promise abstract createBackup(params: RR.CreateBackupReq): Promise // package abstract getPackageLogs( params: RR.GetPackageLogsReq, ): Promise abstract followPackageLogs( params: RR.FollowPackageLogsReq, ): Promise abstract installPackage( params: RR.InstallPackageReq, ): Promise abstract getActionInput( params: RR.GetActionInputReq, ): Promise abstract runAction(params: RR.ActionReq): Promise abstract restorePackages( params: RR.RestorePackagesReq, ): Promise abstract startPackage(params: RR.StartPackageReq): Promise abstract restartPackage( params: RR.RestartPackageReq, ): Promise abstract stopPackage(params: RR.StopPackageReq): Promise abstract rebuildPackage( params: RR.RebuildPackageReq, ): Promise abstract uninstallPackage( params: RR.UninstallPackageReq, ): Promise abstract sideloadPackage(): Promise abstract initAcme(params: RR.InitAcmeReq): Promise abstract removeAcme(params: RR.RemoveAcmeReq): Promise abstract addTorKey(params: RR.AddTorKeyReq): Promise abstract generateTorKey( params: RR.GenerateTorKeyReq, ): Promise abstract serverBindingSetPubic( params: RR.ServerBindingSetPublicReq, ): Promise abstract serverAddOnion(params: RR.ServerAddOnionReq): Promise abstract serverRemoveOnion( params: RR.ServerRemoveOnionReq, ): Promise abstract serverAddDomain( params: RR.ServerAddDomainReq, ): Promise abstract serverRemoveDomain( params: RR.ServerRemoveDomainReq, ): Promise abstract pkgBindingSetPubic( params: RR.PkgBindingSetPublicReq, ): Promise abstract pkgAddOnion(params: RR.PkgAddOnionReq): Promise abstract pkgRemoveOnion( params: RR.PkgRemoveOnionReq, ): Promise abstract pkgAddDomain(params: RR.PkgAddDomainReq): Promise abstract pkgRemoveDomain( params: RR.PkgRemoveDomainReq, ): Promise }