import { Observable, Subject } from 'rxjs'; import { DestroyableClass } from '../utils/DestroyableClass'; import { SettingsInterface } from './SettingsInterface'; export declare abstract class SettingsManager> extends DestroyableClass implements SettingsInterface { protected inputSettings: InputSettings; protected outputSettings?: OutputSettings; protected outputSettingsUpdateSubject: Subject; _settings$: Observable; constructor(initialSettings: Partial); _prepareUpdate(settings: Partial): { hasChanged: boolean; state: OutputSettings; commit: () => OutputSettings; }; abstract getOutputSettings(inputSettings: InputSettings): OutputSettings; abstract getDefaultSettings(): InputSettings; update(settings: Partial): void; get values(): OutputSettings; get values$(): Observable; watch(keys: K[]): Observable>; destroy(): void; }