import { SDKManifest } from "../manifest/ManifestTypes" import { Effects, ExpectedExports } from "../types" export type UninstallFn = (opts: { effects: Effects }) => Promise export class Uninstall { private constructor(readonly fn: UninstallFn) {} static of( fn: UninstallFn, ) { return new Uninstall(fn) } async uninit({ effects, nextVersion, }: Parameters[0]) { if (!nextVersion) await this.fn({ effects, }) } } export function setupUninstall( fn: UninstallFn, ) { return Uninstall.of(fn) }