export function createPluginRuntimeStore(errorMessage: string): { setRuntime: (next: T) => void; clearRuntime: () => void; tryGetRuntime: () => T | null; getRuntime: () => T; } { let runtime: T | null = null; return { setRuntime(next: T) { runtime = next; }, clearRuntime() { runtime = null; }, tryGetRuntime() { return runtime; }, getRuntime() { if (!runtime) { throw new Error(errorMessage); } return runtime; }, }; }