import { ActionId, ActionInput, ActionMetadata, SetMainStatus, DependencyRequirement, CheckDependenciesResult, SetHealth, BindParams, HostId, NetInfo, Host, ExportServiceInterfaceParams, ServiceInterface, CreateTaskParams, MountParams, StatusInfo, Manifest, HostnameInfo, } from './osBindings' import { PackageId, Dependencies, ServiceInterfaceId, SmtpValue, ActionResult, PluginHostnameInfo, } from './types' /** Used to reach out from the pure js runtime */ export type Effects = { readonly eventId: string | null child: (name: string) => Effects constRetry?: () => void isInContext: boolean onLeaveContext: (fn: () => void | null | undefined) => void clearCallbacks: ( options: { only: number[] } | { except: number[] }, ) => Promise // action action: { /** Define an action that can be invoked by a user or service */ export(options: { id: ActionId; metadata: ActionMetadata }): Promise /** Remove all exported actions */ clear(options: { except: ActionId[] }): Promise getInput(options: { packageId?: PackageId actionId: ActionId }): Promise run>(options: { packageId?: PackageId actionId: ActionId input?: Input }): Promise createTask(options: CreateTaskParams): Promise clearTasks( options: { only: string[] } | { except: string[] }, ): Promise } // control /** restart this service's main function */ restart(): Promise /** stop this service's main function */ shutdown(): Promise /** ask the host os what the service's current status is */ getStatus(options: { packageId?: PackageId callback?: () => void }): Promise /** DEPRECATED: indicate to the host os what runstate the service is in */ setMainStatus(options: SetMainStatus): Promise // dependency /** Set the dependencies of what the service needs, usually run during the inputSpec action as a best practice */ setDependencies(options: { dependencies: Dependencies }): Promise /** Get the list of the dependencies, both the dynamic set by the effect of setDependencies and the end result any required in the manifest */ getDependencies(): Promise /** Test whether current dependency requirements are satisfied */ checkDependencies(options: { packageIds?: PackageId[] }): Promise /** mount a volume of a dependency */ mount(options: MountParams): Promise /** Returns a list of the ids of all installed packages */ getInstalledPackages(): Promise /** Returns the manifest of a service */ getServiceManifest(options: { packageId: PackageId callback?: () => void }): Promise // health /** sets the result of a health check */ setHealth(o: SetHealth): Promise // subcontainer subcontainer: { /** A low level api used by SubContainer */ createFs(options: { imageId: string name: string | null }): Promise<[string, string]> /** A low level api used by SubContainer */ destroyFs(options: { guid: string }): Promise } // net // bind /** Creates a host connected to the specified port with the provided options */ bind(options: BindParams): Promise /** Get the port address for a service */ getServicePortForward(options: { packageId?: PackageId hostId: HostId internalPort: number }): Promise /** Removes all network bindings, called in the setupInputSpec */ clearBindings(options: { except: { id: HostId; internalPort: number }[] }): Promise // host /** Returns information about the specified host, if it exists */ getHostInfo(options: { packageId?: PackageId hostId: HostId callback?: () => void }): Promise /** Returns the IP address of the container */ getContainerIp(options: { packageId?: PackageId callback?: () => void }): Promise /** Returns the IP address of StartOS */ getOsIp(): Promise /** Returns the effective outbound gateway for this service */ getOutboundGateway(options: { callback?: () => void }): Promise // interface /** Creates an interface bound to a specific host and port to show to the user */ exportServiceInterface(options: ExportServiceInterfaceParams): Promise /** Returns an exported service interface */ getServiceInterface(options: { packageId?: PackageId serviceInterfaceId: ServiceInterfaceId callback?: () => void }): Promise /** Returns all exported service interfaces for a package */ listServiceInterfaces(options: { packageId?: PackageId callback?: () => void }): Promise> /** Removes all service interfaces */ clearServiceInterfaces(options: { except: ServiceInterfaceId[] }): Promise plugin: { url: { register(options: { tableAction: ActionId }): Promise exportUrl(options: { hostnameInfo: PluginHostnameInfo removeAction: ActionId | null overflowActions: ActionId[] }): Promise clearUrls(options: { except: PluginHostnameInfo[] }): Promise } } // ssl /** Returns a PEM encoded fullchain for the hostnames specified */ getSslCertificate: (options: { hostnames: string[] algorithm?: 'ecdsa' | 'ed25519' callback?: () => void }) => Promise<[string, string, string]> /** Returns a PEM encoded private key corresponding to the certificate for the hostnames specified */ getSslKey: (options: { hostnames: string[] algorithm?: 'ecdsa' | 'ed25519' }) => Promise /** sets the version that this service's data has been migrated to */ setDataVersion(options: { version: string | null }): Promise /** returns the version that this service's data has been migrated to */ getDataVersion(): Promise // system /** Returns globally configured SMTP settings, if they exist */ getSystemSmtp(options: { callback?: () => void }): Promise }