import { Observable } from 'rxjs/Observable';
import { Http, Response } from '@angular/http';
import { CoreoTokenContext, CoreoAuthToken } from './token-context';
import { CoreoConfig } from './config';
import { CoreoRecord } from './record';
export interface CoreoClientRequestOptions {
    url?: string;
    method?: string;
    headers?: any;
    body?: string | FormData | null;
    authentication?: CoreoAuthToken | false;
}
export declare class CoreoClientError extends Error {
    private m;
    private response;
    constructor(m: string, response: Response);
    readonly statusCode: number;
    readonly message: string;
}
export declare class CoreoClient {
    private http;
    private config;
    private tokenContext;
    constructor(http: Http, config: CoreoConfig, tokenContext: CoreoTokenContext);
    getAuthorizationHeader(token: CoreoAuthToken): string;
    post(path: string, body?: FormData | any, options?: CoreoClientRequestOptions): Observable<any>;
    postRecord(record: CoreoRecord): Observable<any>;
    request(path: string, options?: CoreoClientRequestOptions): Observable<any>;
    graphqlQuery(query: string, variables?: any, options?: CoreoClientRequestOptions): Observable<any>;
    private handleError(error);
}
export default CoreoClient;
