export interface HeimdallConstructor {
    vendorId: string;
    homeOrkOrigin: string;
    voucherURL: string;
    signed_client_origin: string;
}
export declare abstract class Heimdall<T> implements EnclaveFlow<T> {
    name: string;
    _windowType: windowType;
    enclaveOrigin: string;
    voucherURL: string;
    signed_client_origin: string;
    vendorId: string;
    private enclaveWindow;
    constructor(init: HeimdallConstructor);
    enclaveClosed(): boolean;
    getOrkUrl(): URL;
    open(): Promise<boolean>;
    send(data: any): void;
    recieve(type: string): Promise<any>;
    close(): void;
    onerror(data: any): void;
    private openPopUp;
    private closeHiddenIframe;
    private openHiddenIframe;
    private closePopupEnclave;
    private waitForWindowPostMessage;
    private sendPostWindowMessage;
    private processEvent;
}
export declare enum windowType {
    Popup = 0,
    Redirect = 1,
    Hidden = 2
}
interface EnclaveFlow<T> {
    name: string;
    _windowType: windowType;
    open(): Promise<boolean>;
    send(data: any): void;
    recieve(type: string): Promise<any>;
    close(): void;
    onerror(data: any): void;
    getOrkUrl(): URL;
}
export {};
