import { SetURLSearchParamsLike } from './use-trace-url-state';
export interface TraceFilterPersistenceOptions {
    /** Override the localStorage key. Default: traces filters storage. */
    storageKey?: string;
    /** Toast text overrides; pass `false` to suppress the toast entirely. */
    messages?: {
        saved?: string | false;
        cleared?: string | false;
    };
    /** Skip the once-on-mount hydration from localStorage. Default: false (hydration runs). */
    skipHydration?: boolean;
}
export interface UseTraceFilterPersistenceResult {
    /** True when localStorage has a previously saved filter set. */
    hasSavedFilters: boolean;
    /** Persist the current URL filter params to localStorage. */
    handleSave: () => void;
    /** Forget the saved filter set. */
    handleRemoveSaved: () => void;
}
/**
 * Owns the localStorage save/restore lifecycle for trace filters:
 * - tracks `hasSavedFilters`
 * - exposes `handleSave` / `handleRemoveSaved` (with toast feedback)
 * - hydrates the URL from saved filters once on mount, but only if the URL is filter-clean
 *   (so a shared link / direct nav with explicit filters wins over the saved set)
 *
 * Pass `storageKey` to scope persistence (e.g. per-project). Pass `messages.{saved,cleared} = false`
 * to suppress the toast.
 */
export declare function useTraceFilterPersistence(searchParams: URLSearchParams, setSearchParams: SetURLSearchParamsLike, options?: TraceFilterPersistenceOptions): UseTraceFilterPersistenceResult;
