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