/**
 * @param {import('@comapeo/core').MapeoManager} manager
 * @param {import('./lib/sub-channel.js').MessagePortLike} messagePort
 * @param {Parameters<typeof createServer>[2]} [opts]
 */
export function createMapeoServer(manager: import("@comapeo/core").MapeoManager, messagePort: import("./lib/sub-channel.js").MessagePortLike, opts?: Parameters<typeof createServer>[2]): {
    close(): void;
};
/**
 * @typedef {object} RpcApi
 * @property {object} mapServer
 * @property {(options?: { localPort?: number, remotePort?: number }) => Promise<{ localPort: number, remotePort: number }>} mapServer.listen
 * @property {() => Promise<void>} mapServer.close
 */
/**
 * RPC messages that are not part of core, e.g. the different servers for maps,
 * and in the future for serving blobs and icons (once extracted from core)
 * @param {RpcApi} rpc
 * @param {import('./lib/sub-channel.js').MessagePortLike} messagePort
 * @param {Parameters<typeof createServer>[2]} [opts]
 */
export function createAppRpcServer(rpc: RpcApi, messagePort: import("./lib/sub-channel.js").MessagePortLike, opts?: Parameters<typeof createServer>[2]): {
    close(): void;
};
export class MapeoRpcApi {
    /**
     * @param {import('@comapeo/core').MapeoManager} manager
     */
    constructor(manager: import("@comapeo/core").MapeoManager);
    /**
     * @param {string} projectId
     * @returns {Promise<boolean>}
     */
    assertProjectExists(projectId: string): Promise<boolean>;
    #private;
}
export type RpcApi = {
    mapServer: {
        listen: (options?: {
            localPort?: number;
            remotePort?: number;
        }) => Promise<{
            localPort: number;
            remotePort: number;
        }>;
        close: () => Promise<void>;
    };
};
import { createServer } from 'rpc-reflector/server.js';
