/// <reference types="node" />
import * as http from 'http';
import { Express } from 'express';
import { Request, Response } from 'superagent';
declare type MultiPartValueSingle = Parameters<Request['attach']>[1];
declare type Path = string;
declare type Params = string | object;
declare type Headers = {
    [key: string]: string;
};
declare type Files = {
    [filename: string]: MultiPartValueSingle;
};
declare type Config = {
    serializer?: (query: object) => string;
};
declare type SendRequest = (path: Path, params?: Params, headers?: Headers, files?: Files) => Promise<Response>;
declare type DoubleAgent = {
    get: SendRequest;
    head: SendRequest;
    put: SendRequest;
    post: SendRequest;
    patch: SendRequest;
    delete: SendRequest;
    defaultHeaders: object;
    app: Express;
    server: http.Server;
    urlFor: (path: string) => string;
};
declare const agent: (app: Express, config?: Config) => DoubleAgent;
export default agent;
