export interface UseSendProps {
    onAbort?: () => void;
    sendHandler?: (...args: any[]) => void;
    abortHandler?: () => void;
    finishHandler?: () => void;
}
type OnError = (eventSource: EventSource, event: Event) => void;
type BaseFetchOptions = Omit<RequestInit, 'headers' | 'signal'> & {
    headers?: HeadersInit | Headers;
};
type Transformer<T> = (message: string) => T;
interface BaseSSEProps<T = string> {
    baseURL?: string;
    type?: SSEType;
    onFinish?: (data: T[]) => void;
    onAbort?: (data: T[]) => void;
    transformer?: Transformer<T>;
    onMessage?: (message: T) => void;
}
interface SSEWithFetchProps {
    baseOptions?: BaseFetchOptions;
    onError?: (e: unknown) => void;
}
interface SSEWithSSEProps {
    baseOptions?: EventSourceInit;
    onError?: OnError;
    onOpen?: () => void;
}
type SSEType = 'fetch' | 'sse' | 'sip';
export type SSEProps<T> = BaseSSEProps<T> & (SSEWithSSEProps | SSEWithFetchProps);
export declare class XRequest<T> {
    #private;
    constructor({ baseURL, onAbort, onMessage, onError, baseOptions, transformer, type, onFinish, ...props }?: SSEProps<T>);
    send(url: string, options?: EventSourceInit | BaseFetchOptions): this;
    abort(): void;
}
/**
 * @description 一个用于处理发送操作管理请求状态的实用函数，支持可选的中止功能，同时支持 Promise 和 SSE（服务端事件）。
 *
 * @type {@link WithAbortProps}
 * @property {(signal: AbortSignal) => Promise<any>} promise - 一个返回 Promise 的函数，接受一个用于取消的 `AbortSignal`。
 *
 * @type {@link WithSSEProps}
 * @property {EventSource} eventSource - 用于处理服务器发送事件的“EventSource”实例。
 *
 * @type {@link UseSendProps}
 * @property {WithAbortProps | WithSSEProps} props - "WithAbortProps" 或 "WithSSEProps",具体取决于使用情况。
 * @property {() => void} [onAbort] - 可选的回调函数，在操作被中止时触发。
 * @property {(...args: any[]) => void} [sendHandler] - 可选的处理函数，在发送开始前调用。
 *
 * @param {UseSendProps} props - `useSend` 函数的配置选项。
 *
 * @returns 返回一个包含实用方法和状态的对象。
 *
 * @property {Ref<boolean>} loading - 一个响应式引用，指示是否正在执行发送操作。
 *
 *
 * @property {() => void} abort - 一个用于中止当前操作的函数，可以中止 Promise 或关闭 EventSource。
 *
 * @property {(...args: any[]) => void} send - 一个用于启动发送操作的函数，如果提供了 `sendHandler` 则会调用。
 */
export declare function useSend({ onAbort, sendHandler, abortHandler }?: UseSendProps): {
    loading: import('vue').Ref<boolean, boolean>;
    abort: () => void;
    send: (...args: any[]) => void;
    finish: () => void;
};
export {};
