/**
 * One boolean toggle rendered in the platform settings modal app section.
 *
 * @beta
 */
export interface AssistantAppSettingsToggle {
    /** Stable id passed to {@link (AssistantAppSettingsProvider:interface).getValue} / `setValue`. */
    id: string;
    title: string;
    description: string;
    /** Optional `part` name for the toggle row (defaults to `app-toggle-${id}`). */
    part?: string;
    /** When provided and returns false, the toggle is hidden. */
    visible?: () => boolean;
    /** When provided and returns true, the switch is disabled. */
    disabled?: () => boolean;
    /** Optional footnote rendered below the row when the string is non-empty. */
    hint?: () => string | undefined;
}
/**
 * Optional heading above a provider's toggle group.
 *
 * Entirely host-supplied — the assistant has no default title and no default icon, because the
 * section belongs to the host. Omit it and the toggles render bare, which is right when the
 * host's slotted content already titles them.
 *
 * @beta
 */
export interface AssistantAppSettingsHeading {
    readonly title: string;
    /**
     * Icon name for the design system's icon element (a Font Awesome free name, e.g.
     * `'object-group'`). Omitted renders text only; an unknown name renders nothing at all, so
     * check it against the installed Font Awesome set.
     */
    readonly icon?: string;
}
/**
 * App-supplied settings for the host's own section of the settings modal. Register a concrete
 * implementation on the DI token at app bootstrap; the assistant renders the toggles with the
 * same row layout as AI Chat Bot settings.
 *
 * The section itself is untitled by the assistant — no heading text and no icon — because only
 * the host knows what it is. Title it from the `settings-app` slot, which renders above these
 * toggles, and apply `assistantSettingsSectionTitleStyles` to match the built-in headings.
 *
 * @beta
 */
export interface AssistantAppSettingsProvider {
    readonly toggles: readonly AssistantAppSettingsToggle[];
    /**
     * Heading for the toggle group, for hosts that put other controls in the `settings-app` slot
     * and need these distinguished from them. No default: absent means no heading.
     */
    readonly togglesHeading?: AssistantAppSettingsHeading;
    getValue(id: string): boolean;
    setValue(id: string, value: boolean): void;
    /** Notify the assistant to re-read toggle values / visibility. */
    subscribe?(listener: () => void): () => void;
}
/**
 * The DI token for the {@link (AssistantAppSettingsProvider:interface)}. Resolves a noop
 * until the host registers one.
 *
 * @beta
 */
export declare const AssistantAppSettingsProvider: import("@microsoft/fast-foundation").InterfaceSymbol<AssistantAppSettingsProvider>;
//# sourceMappingURL=assistant-app-settings.d.ts.map