import { type MaybeRefOrGetter } from '@vueuse/core';
import type { Ref } from 'vue';
/**
 * 成功回调函数类型
 */
type SuccessCallback = (files: File[]) => void;
/**
 * 错误回调函数类型
 */
type ErrorCallback = (error: Error) => void;
/**
 * 粘贴文件选项
 */
export interface UsePasteFileOptions {
    /**
     * 允许的文件类型，例如 'image/png,image/jpeg'
     */
    accept?: string;
    /**
     * 是否禁用粘贴文件功能
     */
    disabled?: Ref<boolean> | boolean;
    /**
     * 是否自动阻止默认行为
     * @default true
     */
    preventDefault?: boolean;
}
/**
 * 粘贴文件hooks返回值类型
 */
interface UsePasteFileReturn {
    /**
     * 添加成功回调函数
     * @param callback 当成功粘贴文件时调用的回调函数
     * @returns 移除该回调的函数
     */
    onSuccess: (callback: SuccessCallback) => () => void;
    /**
     * 添加错误回调函数
     * @param callback 当粘贴文件出错时调用的回调函数
     * @returns 移除该回调的函数
     */
    onError: (callback: ErrorCallback) => () => void;
    /**
     * 清理函数，移除事件监听器和所有回调
     */
    cleanup: () => void;
    /**
     * 是否正在处理粘贴事件
     */
    isProcessing: Ref<boolean>;
}
/**
 * 粘贴文件hooks
 * @param target 监听的DOM元素或事件目标
 * @param options 配置选项
 * @returns 包含onSuccess、onError、cleanup方法和isProcessing状态的对象
 *
 * @example
 * ```ts
 * const { onSuccess, onError, cleanup, isProcessing } = usePasteFile(
 *   document,
 *   {
 *     accept: 'image/png,image/jpeg',
 *     disabled: ref(false),
 *     preventDefault: true
 *   }
 * );
 *
 * // 添加成功回调
 * const removeSuccessListener = onSuccess((files) => {
 *   console.log('粘贴的文件:', files);
 * });
 *
 * // 添加错误回调
 * onError((error) => {
 *   console.error('粘贴处理错误:', error);
 * });
 *
 * // 移除特定的成功回调
 * removeSuccessListener();
 *
 * // 清理所有事件监听器和回调
 * // cleanup();
 * ```
 */
export declare const usePasteFile: (target: MaybeRefOrGetter<EventTarget | null | undefined>, options?: UsePasteFileOptions) => UsePasteFileReturn;
export {};
