///
import 'isomorphic-fetch';
import HttpAgent, { HttpsAgent } from 'agentkeepalive';
import IAuth from "../utils/auth/IAuth";
import IItem from "../data/IItem";
import IItemExport from "../data/IItemExport";
interface IReqHeaders {
[name: string]: string;
}
interface IReqParams {
method: string;
headers: IReqHeaders;
body: string;
agent?: HttpAgent;
}
interface IContext {
statusCode: number;
headers?: object;
httpBody?: any;
}
interface FetchResponse {
status: number;
headers: object;
httpBody?: any;
text: () => Promise;
}
declare type Transport = (url: string, reqParams: IReqParams) => Promise;
export default class PubControlClient {
uri?: string;
auth?: IAuth;
httpKeepAliveAgent?: HttpAgent;
httpsKeepAliveAgent?: HttpsAgent;
constructor(uri: string);
setAuthBasic(username: string, password: string): void;
setAuthJwt(token: string): void;
setAuthJwt(claim: object, key?: Buffer | string): void;
publish(channel: string, item: IItem): Promise;
_startPubCall(uri: string | undefined, authHeader: string | null, items: IItemExport[]): Promise;
_performHttpRequest(transport: Transport, uri: string, reqParams: IReqParams): Promise;
_finishHttpRequest(mode: string, httpData: any, context: IContext): void;
}
export {};