/**
 * Reactive state for admin app settings management.
 *
 * Flows every operation through an injected `AppSettingsRpc` adapter — mirrors
 * `AdminInvitesRpc` / `AuditLogRpc`. Tests can inject plain-function stubs
 * and consumers adapt their typed RPC client to the same shape.
 *
 * Holds two `AsyncSlot`s — `list` (the initial fetch) and `update` (the
 * `app_settings_update` write). Slots track status/error; the canonical
 * `settings` lives on the class so consumers don't unwrap `slot.data`.
 *
 * @module
 */
import { AsyncSlot } from './async_slot.svelte.js';
import type { AppSettingsWithUsernameJson } from '../auth/app_settings_schema.js';
import type { AppSettingsGetOutput, AppSettingsUpdateInput, AppSettingsUpdateOutput } from '../auth/admin_action_specs.js';
/**
 * Narrow RPC surface consumed by `AppSettingsState`. Consumers adapt their
 * typed RPC client to this shape. Method signatures track the wire spec
 * inputs/outputs directly so the adapter needs no casts.
 */
export interface AppSettingsRpc {
    get: () => Promise<AppSettingsGetOutput>;
    update: (params: AppSettingsUpdateInput) => Promise<AppSettingsUpdateOutput>;
}
/**
 * Svelte context carrying the reactive `AppSettingsRpc` accessor. Mirrors
 * `admin_accounts_rpc_context`. `get()` throws when no provisioner ran above
 * the component — the adapter is required.
 */
export declare const app_settings_rpc_context: {
    get: (error_message?: string) => () => AppSettingsRpc;
    get_maybe: () => (() => AppSettingsRpc) | undefined;
    set: (value: () => AppSettingsRpc) => () => AppSettingsRpc;
};
export interface AppSettingsStateOptions {
    /** Reactive accessor for the RPC adapter. */
    get_rpc: () => AppSettingsRpc;
}
export declare class AppSettingsState {
    #private;
    readonly list: AsyncSlot<void, string>;
    readonly update: AsyncSlot<void, string>;
    settings: AppSettingsWithUsernameJson | null;
    constructor(options: AppSettingsStateOptions);
    fetch(): Promise<void>;
    update_open_signup(value: boolean): Promise<void>;
}
//# sourceMappingURL=app_settings_state.svelte.d.ts.map