interface PlayerSettings { volume?: number; muted?: boolean; playbackRate?: number; stableVolume?: boolean; ambientMode?: boolean; hdr?: boolean; cropBars?: boolean; objectFit?: string; /** Remembered as a LANGUAGE, not a track index — see MoviElement. */ audioLang?: string; subtitleLang?: string; } export declare class SettingsStorage { private static instance; private settings; /** * Choices saved since the file was last written. The write is debounced, and * every element that connects calls load() — a hover preview, a miniplayer, * the next page's player — which used to replace `settings` with what was on * disk. A choice made inside that window was then dropped (the timer wrote * the old file back) and handed to the new element as the OLD value: the * late restore put back the answer the viewer had just changed. Kept here * and laid over whatever the file says until it has been written. */ private pending; private savePromise; private constructor(); static getInstance(): SettingsStorage; load(): Promise; save(settings: Partial): Promise; get(): PlayerSettings; } export {}; //# sourceMappingURL=SettingsStorage.d.ts.map