export type ExtensionPlacement = 'before' | 'after'; export interface ExtensionRule { placement: ExtensionPlacement; } export class ExtensionPoint { add(item: T, rule?: ExtensionRule) { } addAll(...items: T[]) { } }