import { SseMessageChunkData } from '../../chat/sse-types';
import { SseCallbackFn, SseEventType, StreamablePrepareCallback, XaiStreamableOptions, XaiStreamableRequestData } from './streamable.types';
/**
 *
 */
export declare class XaiSseFetch {
    private checkAuth;
    protected debug: boolean;
    protected eventDataParsed: boolean;
    private method;
    protected controller?: AbortController;
    private apiPrefix;
    private readonly apiPath;
    protected headers: {
        [k: string]: any;
    };
    private fetchInprogress;
    private reqCached;
    private eventListeners;
    private sseCaches;
    constructor(apiPath: string, options: XaiStreamableOptions);
    get url(): string;
    /**
     * request id
     */
    get reqid(): string;
    get msgid(): string;
    get inprogress(): boolean;
    get error(): string | undefined;
    get result(): string;
    protected log(data: any, type?: 'error' | 'warn' | 'log', prefix?: string): void;
    /**
     * @public
     *  launch fetch request
     * @param data request data
     * @param cb prepare request parametes callback
     * @returns XaiStreamFetch instance
     */
    connect<D extends XaiStreamableRequestData = XaiStreamableRequestData>(data: D, cb?: StreamablePrepareCallback): Promise<XaiSseFetch>;
    /**
     * disconnect
     */
    disconnect(): void;
    cancel(): void;
    protected dispatchEvent<T = any>(eventName: SseEventType, data: T): void;
    /**
     * when abort on completed will emit close
     * @param _ev
     */
    protected abortEventHandler(_ev: Event): void;
    /**
     * regist event
     * @param eventName
     * @param handler
     */
    addListener(eventName: SseEventType, handler: SseCallbackFn): this;
    /**
     *
     * @param eventName
     * @param handler
     * @returns
     */
    removeListener(eventName: SseEventType, handler: SseCallbackFn): XaiSseFetch;
    /**
     * @private
     * init request cache & put reqid into header
     *
     * @param data
     * front request Data if reqid or msgid is null
     *  will auto created and fill to data
     */
    private createRequestCache;
    /**
     * before call sse reset repsonse cache
     */
    private resetPrepareCaches;
    private updateSomeSseCahces;
    /**
     * merge headers and check Authorization token
     * @param requestHeaders
     * @returns headers
     */
    private prepareHeaders;
    private setHeaderReqid;
    /**
     *
     * @param some
     */
    private updateSomeRequestCache;
    private resetReqCache;
    /**
     *
     * @param options
     */
    private _registListeners;
    private pushMessageCache;
    private appendResult;
    private setQuestion;
    /**
     * @private
     *
     * @returns function onLine(arr:Uint8Array,fieldLength:number)=>void
     */
    protected _parseChunkMessage<C extends SseMessageChunkData = SseMessageChunkData>(): (line: Uint8Array, fieldLength: number) => void;
}
