/**
 * usePerPagePreference persists a paginated component's items-per-page selection
 * in localStorage, namespaced by the currently logged-in user and the active
 * route. Built on top of `useLocalStorageModel` so it inherits the existing
 * encryption + TTL + debounced-write behavior backed by `localstorage-slim`.
 *
 * The full storage key is composed as:
 *
 *   nuxt-commons:perPage:<username|anon>:<route.path>:<storageKey>
 *
 * If `storageKey` is empty/undefined, persistence is disabled and the function
 * is a no-op (so callers can opt-in safely without breaking existing usage).
 */
import { type Ref } from 'vue';
export interface PerPagePreferenceOptions {
    /**
     * Logical key identifying the table/iterator instance (e.g. `modelName`).
     *  Persistence is disabled when this is empty.
     */
    storageKey?: string;
    /** TTL in seconds — defaults to 90 days. */
    ttlSeconds?: number;
    /** Encrypt the stored value via localstorage-slim — defaults to `true`. */
    encrypt?: boolean;
    /** Optional encryption secret. When omitted, localstorage-slim derives one. */
    secret?: string;
    /** Debounce window for writes, in ms — defaults to 200. */
    debounceMs?: number;
    /**
     * Explicit opt-out switch — when `false`, the composable becomes a no-op
     *  even if `storageKey` is set.
     */
    enabled?: boolean;
}
export declare function usePerPagePreference(perPage: Ref<string | number | undefined>, options?: PerPagePreferenceOptions): {
    isHydrated: Ref<boolean, boolean>;
    storageKey: import("vue").ComputedRef<string>;
    remove: () => void;
    read: () => unknown;
    write: (val: string | number | undefined) => void;
};
