import { ActionId, ActionInput, ActionMetadata, SetMainStatus, DependencyRequirement, CheckDependenciesResult, SetHealth, BindParams, HostId, NetInfo, Host, ExportServiceInterfaceParams, ServiceInterface, CreateTaskParams, MountParams, StatusInfo, Manifest } 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: { /** 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; }; /** 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; /** 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; /** sets the result of a health check */ setHealth(o: SetHealth): Promise; 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; }; /** 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; /** 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; /** 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; }; }; /** 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; /** Returns globally configured SMTP settings, if they exist */ getSystemSmtp(options: { callback?: () => void; }): Promise; };