import './fetch-polyfill';
export declare type FetchMiddleware = (request: Request, next: (request: Request) => Promise<Response>) => Promise<Response>;
/**
 * The fetcher object is responsible for calling fetch()
 *
 * This is wrapped in an object because we want to support
 * 'fetch middlewares'. These middlewares are similar to server-side
 * middlewares and can intercept requests and alter requests/responses.
 */
export declare class Fetcher {
    middlewares: [RegExp, FetchMiddleware][];
    advertiseKetting: boolean;
    /**
     * A wrapper for MDN fetch()
     *
     * This wrapper supports 'fetch middlewares'. It will call them
     * in sequence.
     */
    fetch(resource: string | Request, init?: RequestInit): Promise<Response>;
    /**
     * Returns the list of middlewares that are applicable to
     * a specific origin
     */
    getMiddlewaresByOrigin(origin: string): FetchMiddleware[];
    /**
     * Add a middleware
     */
    use(mw: FetchMiddleware, origin?: string): void;
    /**
     * Does a HTTP request and throws an exception if the server emitted
     * a HTTP error.
     *
     * @see https://developer.mozilla.org/en-US/docs/Web/API/Request/Request
     */
    fetchOrThrow(resource: string | Request, init?: RequestInit): Promise<Response>;
}
export default Fetcher;
