import type { RuntimeApiClient } from "~/server/headscale/api/endpoints"; 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(client: RuntimeApiClient): Promise | void; abstract get name(): string; }