import { SocketConnection, ConnectionOptions } from '@uprtcl/multiplatform';
import { Dictionary } from '@uprtcl/micro-orchestrator';
export interface HolochainCallOptions {
    instance: string;
    zome: string;
    funcName: string;
    params: any;
}
export interface HolochainConnectionOptions {
    host: string;
    devEnv?: {
        templateDnasPaths: Dictionary<string>;
    };
}
export declare class HolochainConnection extends SocketConnection {
    protected hcConnectionOptions: HolochainConnectionOptions;
    connection: (instance: string, zome: string, funcName: string, params: any) => Promise<any>;
    private signalListeners;
    onsignal: (callback: (params: any) => void) => void;
    private genericCall;
    constructor(hcConnectionOptions: HolochainConnectionOptions, options?: ConnectionOptions);
    createSocket(): Promise<WebSocket>;
    getAgentConfig(agentAddress: string): Promise<{
        id: string;
        public_address: string;
    }>;
    cloneDna(agentId: string, newDnaId: string, newInstanceId: string, templateDnaAddress: string, properties: any, findInterface: (interfaces: Array<any>) => any): Promise<void>;
    /**
     * Returns whether this connection is attached to an admin permissioned interface
     */
    isAdminInterface(): Promise<boolean>;
    /**
     * Will return undefined if we are not on holoscape
     */
    getHoloscapeDataDir(): string | undefined;
    callAdmin(funcName: string, params: any): Promise<any>;
    call(instance: string, zome: string, funcName: string, params: any): Promise<any>;
    onSignal(signalName: string, callback: (params: any) => void): Promise<void>;
}
