import type { HarnessOption } from "../models/harness";
/** Options for {@link usePersistedModel}. */
export interface UsePersistedModelOptions {
    /**
     * Filter the model registry by harness before validating the stored model.
     *
     * When `"cursor"`, the persisted model is read from a cursor-specific
     * localStorage key and validated against cursor-provider models.
     * When `"native"` or omitted, the default key and registry apply.
     */
    readonly harness?: HarnessOption;
}
/** Return value of {@link usePersistedModel}. */
export type UsePersistedModelReturn = readonly [
    modelId: string | undefined,
    setModelId: (id: string) => void
];
/**
 * Model selection with localStorage persistence.
 *
 * Restores the last selected model on mount and validates it against the
 * model registry. Invalid or removed models are silently ignored (returns
 * `undefined`). On change, persists the new selection to localStorage so
 * it survives page reloads and navigation.
 *
 * When `options.harness` is provided, the stored model is read from a
 * harness-specific key and validated against the harness-filtered registry.
 *
 * Handles legacy compound keys (`"cursor/default"`) gracefully by
 * extracting the plain modelId portion before validation.
 *
 * Used by both the session launcher (new session) and session page
 * (follow-up messages) to maintain a consistent model preference.
 */
export declare function usePersistedModel(options?: UsePersistedModelOptions): UsePersistedModelReturn;
//# sourceMappingURL=usePersistedModel.d.ts.map