import { PiniaColadaPlugin } from '@pinia/colada';
import { MaybeRefOrGetter } from 'vue';

/**
 * Pinia Colada Auto Refetch plugin.
 *
 * Automatically refreshes queries when they become stale.
 *
 * @module @pinia/colada-plugin-auto-refetch
 */

/**
 * Options for the auto-refetch plugin.
 */
interface PiniaColadaAutoRefetchOptions {
    /**
     * Whether to enable auto refresh by default.
     * @default false
     */
    autoRefetch?: MaybeRefOrGetter<boolean>;
}
/**
 * To store timeouts in the entry extensions.
 * @internal
 */
declare const REFETCH_TIMEOUT_KEY: unique symbol;

/**
 * Plugin that automatically refreshes queries when they become stale
 */
declare function PiniaColadaAutoRefetch(options?: PiniaColadaAutoRefetchOptions): PiniaColadaPlugin;
declare module '@pinia/colada' {
    interface UseQueryOptions<TData, TError, TDataInitial> extends PiniaColadaAutoRefetchOptions {
    }
    interface UseQueryOptionsGlobal extends PiniaColadaAutoRefetchOptions {
    }
    interface UseQueryEntryExtensions<TData, TError, TDataInitial> {
        /**
         * Used to store the timeout for the auto-refetch plugin.
         * @internal
         */
        [REFETCH_TIMEOUT_KEY]?: ReturnType<typeof setTimeout>;
    }
}

export { PiniaColadaAutoRefetch, type PiniaColadaAutoRefetchOptions, REFETCH_TIMEOUT_KEY as _REFETCH_TIMEOUT_KEY };
