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(): Promise | void; abstract get name(): string; }