import type { Headscale } from "~/server/headscale/api"; export abstract class Integration { protected context: NonNullable; constructor(context: T) { if (!context) { throw new Error("Missing integration context"); } this.context = context; } abstract isAvailable(): Promise | boolean; abstract onConfigChange(headscale: Headscale): Promise | void; abstract get name(): string; }