import { IPayloadFilt, Payload } from "./Payload";
import { Tuple } from "./exports";
import { Observable } from "rxjs";
import { PayloadEndpoint } from "./PayloadEndpoint";
import { IFilterUpdateCallable, TupleLoader } from "./TupleLoader";
import { VortexStatusService } from "./VortexStatusService";
import { PayloadEnvelope } from "./PayloadEnvelope";
import { NgLifeCycleEvents } from "../util/NgLifeCycleEvents";
import { HttpHeaders } from "@angular/common/http";
import * as i0 from "@angular/core";
export declare class VortexService {
    private vortexStatusService;
    private vortex;
    private static _vortexUrl;
    private static vortexClientName;
    private static vortexHeaders;
    private lastReconnectPromise;
    constructor(vortexStatusService: VortexStatusService);
    /**
     * Set Vortex URL
     *
     * This method should not be used except in rare cases, such as an ios or android app.
     *
     * @param url The new URL for the vortex to use.
     */
    static setVortexUrl(url: string | null): void;
    /**
     * Vortex URL
     *
     * The URL that the vortex is trying to connect to
     *
     * @return The new URL for the vortex to use.
     */
    static getVortexUrl(): string | null;
    /**
     * Set Vortex HTTP Headers
     *
     * Set HTTP headers that will be sent when connecting to vortexes via HTTP.
     * NOTE Websockets are over HTTP.
     *
     * Calling this method is required if the http service requires
     * authentication, for example, with an oauth2 token, such as an azure
     * proxy.
     *
     * @param headers The new headers to use.
     */
    static setVortexHeaders(headers: HttpHeaders): void;
    /**
     * Set Vortex Name
     *
     * @param vortexClientName The vortexClientName to tell the server that we are.
     */
    static setVortexClientName(vortexClientName: string): void;
    disconnect(): Promise<void>;
    reconnect(): Promise<void>;
    private _reconnect;
    sendTuple(filt: IPayloadFilt | string, tuples: any[] | Tuple[]): void;
    sendFilt(filt: any): void;
    /** Send Payload
     *
     * @param {Payload[] | Payload} payload
     * @returns {Promise<void>}
     */
    sendPayload(payload: Payload[] | Payload): Promise<void>;
    /** Send Payload Envelope(s)
     *
     * @param {PayloadEnvelope[] | PayloadEnvelope} payloadEnvelope
     * @returns {Promise<void>}
     */
    sendPayloadEnvelope(payloadEnvelope: PayloadEnvelope[] | PayloadEnvelope): Promise<void>;
    createEndpointObservable(component: NgLifeCycleEvents, filter: IPayloadFilt, processLatestOnly?: boolean): Observable<PayloadEnvelope>;
    createEndpoint(component: NgLifeCycleEvents, filter: IPayloadFilt, processLatestOnly?: boolean): PayloadEndpoint;
    createTupleLoader(component: NgLifeCycleEvents, filterUpdateCallable: IFilterUpdateCallable | IPayloadFilt): TupleLoader;
    static ɵfac: i0.ɵɵFactoryDeclaration<VortexService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<VortexService>;
}
