import type { ShopUser, UpdatePasswordParams } from '@scayle/storefront-core';
import type { UseRpcReturn, UseRpcCacheKey } from './useRpc.js';
import type { ComputedRef } from 'vue';
/**
 * Extended parameters for the `useUser` composable.
 */
export interface ExtendedUseUserParams {
    /** The key used for caching the user data. Defaults to 'useUser'. */
    key?: UseRpcCacheKey;
    /** Whether to fetch the user data immediately. Defaults to `true`. */
    immediate?: boolean;
    /** Whether to enable lazy loading of user data. Defaults to `false`. */
    lazy?: boolean;
}
type UseUserBaseReturn = Pick<Awaited<UseRpcReturn<'getUser'>>, 'error' | 'status' | 'refresh'> & {
    updateUser: (payload: Partial<ShopUser>) => Promise<void>;
    updatePassword: (payload: UpdatePasswordParams) => Promise<void>;
    user: ComputedRef<ShopUser | undefined>;
    isLoggedIn: ComputedRef<boolean>;
    customerType: ComputedRef<'new' | 'guest' | 'existing'>;
    forceRefresh: () => Promise<void>;
};
/**
 * Provides user information and related actions.
 *
 * This composable retrieves user data via the `getUser` RPC method and offers
 * functionalities to update user details, change passwords, and force-refresh user data.
 * It uses `useRpc` for data fetching and provides computed properties for user status,
 * login status, and customer type.
 *
 * The composable also handles caching of user data and allows for lazy loading
 * and immediate fetching based on the provided options.
 *
 * @param options Options to customize the behavior of the composable,
 *                such as caching key, immediate fetching, and lazy loading.
 *
 * @returns A promise that resolves to an object containing user information,
 *          update functions, and status properties. It also includes the resolved
 *          object directly as properties.
 */
export declare function useUser(options?: ExtendedUseUserParams): UseUserBaseReturn & Promise<UseUserBaseReturn>;
export {};
