import { UpdatableUI } from "./obsidian.js";
import type { DeepReadonly } from "ts-essentials";
import type { Fixer } from "./fixers.js";
import type { PluginContext } from "./plugin.js";
import { PluginSettingTab } from "obsidian";
import type { ReadonlyTuple } from "./types.js";
export declare abstract class AdvancedSettingTab<S extends PluginContext.Settings> extends PluginSettingTab {
    #private;
    protected readonly context: PluginContext<S>;
    protected readonly ui: UpdatableUI;
    constructor(context: PluginContext<S>);
    display(): void;
    protected onLoad(): void;
    protected onUnload(): void;
    protected newSectionWidget(text: () => DocumentFragment | string, heading?: 1 | 2 | 3 | 4 | 5 | 6): void;
    protected newTitleWidget(): void;
    protected newDescriptionWidget(): void;
    protected newLanguageWidget(languages: ReadonlyTuple<S["language"]>, languageNamer: (language: S["language"] | "") => string, defaults: DeepReadonly<Pick<S, "language">>): void;
    protected newAllSettingsWidget(defaults: DeepReadonly<Partial<S>>, fixer: Fixer<S>): void;
    protected newNoticeTimeoutWidget(defaults: DeepReadonly<Pick<S, "errorNoticeTimeout" | "noticeTimeout">>): void;
    protected snapshot(): Promise<unknown>;
    protected postMutate(local?: boolean): void;
    protected abstract snapshot0(): Partial<S>;
}
//# sourceMappingURL=settings-tab.d.ts.map