murmuraba
Version:
Real-time audio noise reduction with advanced chunked processing for web applications
64 lines • 2.25 kB
TypeScript
/**
* Domain Layer - Gain Control Business Logic
* Pure business logic with no dependencies on frameworks or infrastructure
*/
export interface GainPolicy {
readonly minGain: number;
readonly maxGain: number;
readonly defaultGain: number;
readonly step: number;
}
export declare const MEDICAL_GAIN_POLICY: GainPolicy;
export declare const BROADCAST_GAIN_POLICY: GainPolicy;
export declare class GainValue {
private readonly value;
private constructor();
static create(value: number, policy?: GainPolicy): GainValue;
getValue(): number;
getDbValue(): number;
increment(policy: GainPolicy): GainValue;
decrement(policy: GainPolicy): GainValue;
equals(other: GainValue): boolean;
isNormalLevel(): boolean;
isBoostLevel(): boolean;
toString(): string;
}
export declare enum GainPreset {
LOW = "LOW",
NORMAL = "NORMAL",
HIGH = "HIGH",
BOOST = "BOOST"
}
export declare class GainPresetService {
private static readonly presetValues;
static getPresetValue(preset: GainPreset): GainValue;
static getAllPresets(): Array<{
preset: GainPreset;
value: GainValue;
description: string;
}>;
}
export interface GainRepository {
getCurrentGain(): Promise<GainValue>;
setGain(gain: GainValue): Promise<void>;
savePreset(name: string, gain: GainValue): Promise<void>;
loadPreset(name: string): Promise<GainValue | null>;
}
export interface GainEventPublisher {
publishGainChanged(oldGain: GainValue, newGain: GainValue): void;
publishPresetApplied(preset: GainPreset, gain: GainValue): void;
}
export declare class GainController {
private readonly repository;
private readonly eventPublisher;
private readonly policy;
constructor(repository: GainRepository, eventPublisher: GainEventPublisher, policy?: GainPolicy);
getCurrentGain(): Promise<GainValue>;
setGain(targetGain: number): Promise<GainValue>;
applyPreset(preset: GainPreset): Promise<GainValue>;
incrementGain(): Promise<GainValue>;
decrementGain(): Promise<GainValue>;
saveCurrentAsPreset(name: string): Promise<void>;
loadNamedPreset(name: string): Promise<GainValue | null>;
}
//# sourceMappingURL=gain-domain.d.ts.map