import { IConfig } from '../models/IConfig';
import * as url from 'url';
import { RequestOptions } from 'https';
import { HttpMethod } from './models/HttpMethod';
export declare class TibberQueryBase {
    active: boolean;
    private _config;
    private _headerManager;
    private _requestTimeout;
    get requestTimeout(): number;
    set requestTimeout(value: number);
    get config(): IConfig;
    set config(value: IConfig);
    /**
     *
     */
    constructor(config: IConfig, requestTimeout?: number);
    /**
     * Try to parse a string and return a valid JSON object.
     * If string is not valid JSON, it will return an empty object instead.
     * @param input Input string to try to parse as a JSON object
     * @returns Parsed or empty Json object
     */
    protected JsonTryParse(input: string): object;
    /**
     *
     * @param method HTTP method to use
     * @param uri Uri to use
     * @returns An object containing request options
     */
    protected getRequestOptions(method: HttpMethod, uri: url.UrlWithParsedQuery): RequestOptions;
    /**
     * General GQL query
     * @param query GQL query.
     * @param variables Variables used by query parameter.
     * @return Query result as JSON data
     */
    query(query: string, variables?: object): Promise<any>;
    /**
     * Get selected home with some selected properties, including address and owner.
     * @param homeId Tibber home ID
     * @return IHome object
     */
    getWebsocketSubscriptionUrl(): Promise<url.URL>;
    /**
     * Get selected home with some selected properties, including address and owner.
     * @param homeId Tibber home ID
     * @return IHome object
     */
    getRealTimeEnabled(homeId: string): Promise<boolean>;
}
