/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import { AddAgentInfoRequest, AgentInfoRequest, AgentPubKey, AppAuthenticationToken, AppBundleSource, SignalCb, AttachAppInterfaceRequest, CallZomeRequest, CapSecret, CellId, CreateCloneCellRequest, DeleteCloneCellRequest, DisableAppRequest, DisableCloneCellRequest, DnaDefinition, DnaHash, DumpFullStateRequest, DumpNetworkStatsRequest, DumpStateRequest, EnableAppRequest, EnableCloneCellRequest, FullStateDump, GetCompatibleCellsRequest, GetCompatibleCellsResponse, GetDnaDefinitionRequest, GrantedFunctions, GrantZomeCallCapabilityRequest, InstallAppRequest, IssueAppAuthenticationTokenRequest, ListAppsRequest, MemproofMap, NetworkInfoRequest, RegisterDnaRequest, StartAppRequest, StorageInfoRequest, UninstallAppRequest, UpdateCoordinatorsRequest, RevokeAgentKeyRequest } from "@holochain/client";
import { URL } from "node:url";
import { AgentsAppsOptions, AppOptions, IConductor } from "../../types.js";
import { TryCpClient, TryCpConductorLogLevel } from "../index.js";
/**
 * The default partial config for a TryCP conductor.
 *
 * @public
 */
export declare const DEFAULT_PARTIAL_PLAYER_CONFIG: string;
/**
 * @public
 */
export type ConductorId = string;
/**
 * @public
 */
export interface TryCpConductorOptions {
    /**
     * Identifier for the conductor (optional).
     */
    id?: ConductorId;
    /**
     * Configuration for the conductor (optional).
     */
    partialConfig?: string;
    /**
     * Disable DPKI in the conductor instance.
     *
     * default: false // defaults to using DPKI
     *
     * unstable
     */
    /**
     * Set a DPKI network seed.
     *
     * unstable
     */
    /**
     * Start up conductor after creation.
     *
     * default: true
     */
    startup?: boolean;
    /**
     * Log level of the conductor (optional).
     *
     * default: "error"
     */
    logLevel?: TryCpConductorLogLevel;
}
/**
 * The function to create a TryCP Conductor. By default configures and starts
 * it.
 *
 * @param tryCpClient - The client connection to the TryCP server on which to
 * create the conductor.
 * @param options - Options to configure how the conductor will be started and run.
 * @returns A conductor instance.
 *
 * @public
 */
export declare const createTryCpConductor: (tryCpClient: TryCpClient, options?: TryCpConductorOptions) => Promise<TryCpConductor>;
/**
 * A class to manage a conductor running on a TryCP server.
 *
 * @public
 */
export declare class TryCpConductor implements IConductor {
    readonly id: string;
    readonly tryCpClient: TryCpClient;
    constructor(tryCpClient: TryCpClient, id?: ConductorId);
    static defaultPartialConfig(): string;
    /**
     * Create conductor configuration.
     *
     * @param partialConfig - The configuration to add to the default configuration.
     * @param noDpki - Disable the DPKI service on this conductor.
     * @param dpkiNetworkSeed - Set DPKI network seed.
     * @returns An empty success response.
     */
    configure(partialConfig?: string, noDpki?: boolean, dpkiNetworkSeed?: string): Promise<null>;
    /**
     * Start a configured conductor.
     *
     * @param options - Log level of the conductor. Defaults to "info".
     * @returns An empty success response.
     *
     * @public
     */
    startUp(options?: {
        logLevel?: TryCpConductorLogLevel;
    }): Promise<null>;
    /**
     * Shut down the conductor.
     *
     * @returns An empty success response.
     *
     * @public
     */
    shutDown(): Promise<null>;
    /**
     * Disconnect the TryCP client from the TryCP server.
     *
     * @returns The web socket close code.
     */
    disconnectClient(): Promise<number>;
    /**
     * Download a DNA from a URL to the server's file system.
     *
     * @returns The relative path to the downloaded DNA file.
     */
    downloadDna(url: URL): Promise<string>;
    /**
     * Upload a DNA file from the local file system to the server.
     *
     * @param dnaContent - The DNA as binary content.
     * @returns The relative path to the saved DNA file.
     */
    saveDna(dnaContent: Buffer): Promise<string>;
    /**
     * Connect a web socket to the App API.
     *
     * @param port - The port to attach the app interface to.
     * @returns An empty success response.
     */
    connectAppInterface(token: AppAuthenticationToken, port: number): Promise<null>;
    /**
     * Disconnect a web socket from the App API.
     *
     * @param port - The port of the app interface to disconnect.
     * @returns An empty success response.
     */
    disconnectAppInterface(port: number): Promise<null>;
    downloadLogs(): Promise<import("../types.js").DownloadLogsResponse>;
    /**
     * Attach a signal handler.
     *
     * @param signalHandler - The signal handler to register.
     * @param port - The port of the app interface.
     */
    on(port: number, signalHandler: SignalCb): void;
    /**
     * Detach the registered signal handler.
     */
    off(port: number): void;
    /**
     * Send a call to the Admin API.
     *
     * @param message - The call to send to the Admin API.
     * @returns The response of the call.
     *
     * @internal
     */
    private callAdminApi;
    /**
     * Get all
     * {@link https://github.com/holochain/holochain-client-js/blob/develop/docs/API_adminwebsocket.md | Admin API methods}
     * of the Holochain client.
     *
     * @returns The Admin API web socket.
     */
    adminWs(): {
        addAgentInfo: (request: AddAgentInfoRequest) => Promise<void>;
        agentInfo: (req: AgentInfoRequest) => Promise<import("@holochain/client").AgentInfoResponse>;
        attachAppInterface: (request?: AttachAppInterfaceRequest) => Promise<{
            port: number;
        }>;
        authorizeSigningCredentials: (cellId: CellId, functions?: GrantedFunctions) => Promise<void>;
        deleteCloneCell: (request: DeleteCloneCellRequest) => Promise<void>;
        disableApp: (request: DisableAppRequest) => Promise<null>;
        dumpFullState: (request: DumpFullStateRequest) => Promise<FullStateDump>;
        dumpNetworkStats: (request: DumpNetworkStatsRequest) => Promise<string>;
        dumpState: (request: DumpStateRequest) => Promise<[FullStateDump, string]>;
        enableApp: (request: EnableAppRequest) => Promise<import("@holochain/client").EnableAppResponse>;
        generateAgentPubKey: () => Promise<AgentPubKey>;
        getCompatibleCells: (dnaHash: GetCompatibleCellsRequest) => Promise<GetCompatibleCellsResponse>;
        getDnaDefinition: (dnaHash: GetDnaDefinitionRequest) => Promise<DnaDefinition>;
        grantSigningKey: (cellId: CellId, functions: GrantedFunctions, signingKey: AgentPubKey) => Promise<CapSecret>;
        grantZomeCallCapability: (request: GrantZomeCallCapabilityRequest) => Promise<void>;
        installApp: (request: InstallAppRequest) => Promise<import("@holochain/client").AppInfo>;
        listAppInterfaces: () => Promise<import("@holochain/client").ListAppInterfacesResponse>;
        listApps: (request: ListAppsRequest) => Promise<import("@holochain/client").ListAppsResponse>;
        listCellIds: () => Promise<import("@holochain/client").ListCellIdsResponse>;
        listDnas: () => Promise<import("@holochain/client").ListDnasResponse>;
        registerDna: (request: RegisterDnaRequest) => Promise<DnaHash>;
        revokeAgentKey: (request: RevokeAgentKeyRequest) => Promise<import("@holochain/client").RevokeAgentKeyResponse>;
        startApp: (request: StartAppRequest) => Promise<boolean>;
        storageInfo: (request: StorageInfoRequest) => Promise<import("@holochain/client").StorageInfo>;
        uninstallApp: (request: UninstallAppRequest) => Promise<null>;
        updateCoordinators: (request: UpdateCoordinatorsRequest) => Promise<void>;
        issueAppAuthenticationToken: (request: IssueAppAuthenticationTokenRequest) => Promise<import("@holochain/client").IssueAppAuthenticationTokenResponse>;
    };
    /**
     * Call to the conductor's App API.
     */
    private callAppApi;
    /**
     * Get all
     * {@link https://github.com/holochain/holochain-client-js/blob/develop/docs/API_appwebsocket.md | App API methods}
     * of the Holochain client.
     *
     * @returns The App API web socket.
     */
    connectAppWs(_token: AppAuthenticationToken, port: number): Promise<{
        appInfo: () => Promise<import("@holochain/client").AppInfoResponse>;
        callZome: <T>(request: CallZomeRequest) => Promise<T>;
        enableApp: () => Promise<void>;
        createCloneCell: (request: CreateCloneCellRequest) => Promise<import("@holochain/client").ClonedCell>;
        enableCloneCell: (request: EnableCloneCellRequest) => Promise<import("@holochain/client").ClonedCell>;
        disableCloneCell: (request: DisableCloneCellRequest) => Promise<void>;
        networkInfo: (request: NetworkInfoRequest) => Promise<import("@holochain/client").NetworkInfoResponse>;
        provideMemproofs: (request: MemproofMap) => Promise<void>;
    }>;
    /**
     * Install a hApp bundle into the conductor.
     *
     * @param appBundleSource - The bundle or path to the bundle.
     * @param options - {@link AppOptions} for the hApp bundle (optional).
     * @returns The installed app info.
     */
    installApp(appBundleSource: AppBundleSource, options?: AppOptions): Promise<import("@holochain/client").AppInfo>;
    /**
     * Install a hApp bundle into the conductor.
     *
     * @param options - Apps to install for each agent, with agent pub keys etc.
     * @returns The installed app infos.
     */
    installAgentsApps(options: AgentsAppsOptions): Promise<import("@holochain/client").AppInfo[]>;
}
