headplane/app/server/config/integration/abstract.ts

17 lines
423 B
TypeScript
Raw Normal View History

2025-04-02 21:29:00 -04:00
import type { ApiClient } from '~/server/headscale/api-client';
2025-02-27 13:42:36 -05:00
export abstract class Integration<T> {
protected context: NonNullable<T>;
constructor(context: T) {
if (!context) {
throw new Error('Missing integration context');
}
this.context = context;
}
abstract isAvailable(): Promise<boolean> | boolean;
2025-04-02 21:29:00 -04:00
abstract onConfigChange(client: ApiClient): Promise<void> | void;
2025-02-27 13:42:36 -05:00
abstract get name(): string;
}