export type HttpRequesterEventType = 'request' | 'response';
export type HttpRequesterRequestCallback = (requester: HttpRequester, url: string, options: RequestInit) => void;
export type HttpRequesterResponseCallback = (requester: HttpRequester, response: Response, text: string) => void;
export type HttpRequesterIteratorCallback = (requester: HttpRequester, url: string, headers: Record<string, string>) => void;
export type HttpRequesterRequestOptions = {
    url: string;
    headers?: {
        [k: string]: any;
    };
    data: {
        [k: string]: any;
    };
    dataType: string;
};
export interface AbortableAsyncIterator<T extends any = any> extends AsyncIterable<T> {
    abortController: AbortController;
}
export default class HttpRequester {
    private fetch;
    private requestCallbacks;
    private responseCallbacks;
    private iteratorCallbacks;
    static makeUrl(url: string, data: {
        [k: string]: any;
    }): string;
    constructor(ponyFetch?: WindowOrWorkerGlobalScope['fetch']);
    on<T extends HttpRequesterEventType>(event: T, callback: T extends 'request' ? HttpRequesterRequestCallback : T extends 'response' ? HttpRequesterResponseCallback : T extends 'iterator' ? HttpRequesterIteratorCallback : never): () => boolean;
    off<T extends HttpRequesterEventType>(event: T, callback: T extends 'request' ? HttpRequesterRequestCallback : T extends 'response' ? HttpRequesterResponseCallback : T extends 'iterator' ? HttpRequesterIteratorCallback : never): boolean;
    GET(opt: HttpRequesterRequestOptions): Promise<any>;
    POST(opt: HttpRequesterRequestOptions): Promise<any>;
    POST_ITERATOR(opt: HttpRequesterRequestOptions): Promise<AbortableAsyncIterator<any>>;
    PUT(opt: HttpRequesterRequestOptions): Promise<any>;
    PATCH(opt: HttpRequesterRequestOptions): Promise<any>;
    DELETE(opt: HttpRequesterRequestOptions): Promise<any>;
    _httpRequest(method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', opt: HttpRequesterRequestOptions): Promise<any>;
    _iteratorRequest(method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', opt: HttpRequesterRequestOptions): Promise<AbortableAsyncIterator>;
}
export declare class InvalidResponseError extends Error {
    constructor(message: string);
}
export declare class ConnectionClosedUnexpectedlyError extends Error {
    constructor(message: string);
}
export declare class ConnectionError extends Error {
    constructor(message: string);
}
export declare class HttpError extends Error {
    status: number;
    statusText: string;
    constructor(name: string, response: Response, errObj: {
        textStatus: string;
    });
}
export declare class InformationalError extends HttpError {
    constructor(response: Response, errObj: {
        textStatus: string;
    });
}
export declare class SuccessError extends HttpError {
    constructor(response: Response, errObj: {
        textStatus: string;
    });
}
export declare class RedirectError extends HttpError {
    constructor(response: Response, errObj: {
        textStatus: string;
    });
}
export declare class ClientError extends HttpError {
    constructor(response: Response, errObj: {
        textStatus: string;
    });
}
export declare class ServerError extends HttpError {
    constructor(response: Response, errObj: {
        textStatus: string;
    });
}
