/**
 * Typed wrapper around the `user_preference` entity that the agent activation
 * flow uses to remember the operator's onboarding choices.
 *
 * `user_preference` is intentionally schema-less at the storage layer — Neotoma
 * infers its schema lazily the first time the entity is stored, and the shape
 * evolves as new preferences are added (data-type checklist, onboarding mode,
 * primary vertical, secondary verticals, …). This module exposes the canonical
 * field shape so callers across CLI, MCP, and HTTP surfaces don't reinvent it.
 *
 * Storage is deliberately delegated to whatever store path the caller already
 * has (e.g. `store_structured` over MCP, `neotoma store` from CLI) instead of
 * wiring this module directly into the SQLite or HTTP layer. That keeps the
 * wrapper portable and keeps unit tests pure-function.
 */
/** Onboarding modes presented in Stage 1 of the activation flow. */
export type OnboardingMode = "quick_win" | "guided" | "power_user";
/** Preference checkbox categories presented in Stage 1. */
export type PreferenceCategory = "project_files" | "chat_transcripts" | "meeting_notes" | "notes_journals" | "code_context" | "email" | "financial_docs" | "custom_paths";
/**
 * Shape of the `vertical_detection` payload persisted alongside the chosen
 * vertical. Mirrors the fields returned by
 * `detectVerticalFromSignals(...)` so the agent can show the operator how the
 * inference was made on later inspection.
 */
export interface VerticalDetectionRecord {
    method: "filesystem_signals" | "user_declared" | "ambiguous_resolution";
    ambiguous: boolean;
    scores?: Record<string, number>;
    recorded_at: string;
}
/** Canonical field shape for the `user_preference` entity. */
export interface UserPreferenceRecord {
    entity_type: "user_preference";
    /** Display label for the operator (defaults to the install username). */
    canonical_name?: string;
    /** Explicit identity_opt_out so Neotoma keeps a single user_preference row. */
    identity_opt_out?: "heuristic_canonical_name";
    /** Onboarding mode chosen in Stage 1. */
    onboarding_mode?: OnboardingMode;
    /** Preference categories ticked by the operator. */
    preference_categories?: PreferenceCategory[];
    /** Single canonical vertical for the install (Stage 0.5). */
    primary_vertical?: string;
    /** Optional list of secondary verticals when the install is multi-domain. */
    secondary_verticals?: string[];
    /** Metadata about how `primary_vertical` was determined. */
    vertical_detection?: VerticalDetectionRecord;
    /** Free-form notes the agent may capture during onboarding. */
    notes?: string;
}
/**
 * Returns true when `slug` is a known vertical (or the meta-fallback).
 * Defensive helper used before persisting a user_preference so we don't write
 * a typo that would break later registry lookups.
 */
export declare function isKnownVerticalSlug(slug: string): boolean;
/**
 * Build a `user_preference` payload ready to hand to `store_structured`.
 * Throws when an unknown vertical slug is supplied so the agent fails fast at
 * the activation boundary instead of silently corrupting later detection runs.
 */
export declare function buildUserPreferenceUpsert(input: {
    primary_vertical?: string;
    secondary_verticals?: string[];
    onboarding_mode?: OnboardingMode;
    preference_categories?: PreferenceCategory[];
    vertical_detection?: VerticalDetectionRecord;
    canonical_name?: string;
    notes?: string;
}): UserPreferenceRecord;
/**
 * Suggested schema extension applied via `update_schema_incremental` once the
 * user_preference entity has been auto-inferred. Exposed as data so an
 * activation runner (CLI/MCP) can apply it idempotently without duplicating
 * the field list.
 */
export declare const USER_PREFERENCE_SCHEMA_EXTENSION: {
    readonly entity_type: "user_preference";
    readonly fields_to_add: {
        readonly primary_vertical: {
            readonly type: "string";
            readonly description: "Single canonical vertical (use case) for this operator's install. Slug from `src/services/verticals/registry.ts`.";
        };
        readonly secondary_verticals: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly description: "List of additional vertical slugs the operator works in alongside the primary one.";
        };
        readonly vertical_detection: {
            readonly type: "object";
            readonly description: "Metadata about how primary_vertical was determined (filesystem signals, user-declared, ambiguity resolution).";
        };
        readonly onboarding_mode: {
            readonly type: "string";
            readonly enum: readonly ["quick_win", "guided", "power_user"];
            readonly description: "Onboarding mode selected in Stage 1 of the activation flow.";
        };
        readonly preference_categories: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly description: "Data-type checkboxes ticked by the operator in Stage 1.";
        };
    };
};
//# sourceMappingURL=user_preference.d.ts.map