import { n as ChannelOutboundAdapter } from "./outbound.types-DUA-GQqB.js";
import { x as ChannelDirectoryAdapter } from "./types.adapters-MHljVKbc.js";

//#region src/channels/plugins/runtime-forwarders.d.ts
/**
 * Runtime delegate factories for plugin adapters that load heavy runtimes lazily.
 */
type MaybePromise<T> = T | Promise<T>;
type DirectoryMethod = "self" | "listPeersLive" | "listGroupsLive" | "listGroupMembers";
type OutboundMethod = "renderPresentation" | "sendPayload" | "sendText" | "sendMedia" | "sendPoll";
/**
 * Creates a directory adapter whose methods forward to a lazily resolved runtime.
 */
declare function createRuntimeDirectoryLiveAdapter<Runtime>(params: {
  getRuntime: () => MaybePromise<Runtime>;
  self?: (runtime: Runtime) => ChannelDirectoryAdapter["self"] | null | undefined;
  listPeersLive?: (runtime: Runtime) => ChannelDirectoryAdapter["listPeersLive"] | null | undefined;
  listGroupsLive?: (runtime: Runtime) => ChannelDirectoryAdapter["listGroupsLive"] | null | undefined;
  listGroupMembers?: (runtime: Runtime) => ChannelDirectoryAdapter["listGroupMembers"] | null | undefined;
}): Pick<ChannelDirectoryAdapter, DirectoryMethod>;
/**
 * Creates outbound delegates whose methods forward to a lazily resolved runtime.
 */
declare function createRuntimeOutboundDelegates<Runtime>(params: {
  getRuntime: () => MaybePromise<Runtime>;
  renderPresentation?: {
    resolve: (runtime: Runtime) => ChannelOutboundAdapter["renderPresentation"] | null | undefined;
    unavailableMessage?: string;
  };
  sendPayload?: {
    resolve: (runtime: Runtime) => ChannelOutboundAdapter["sendPayload"] | null | undefined;
    unavailableMessage?: string;
  };
  sendText?: {
    resolve: (runtime: Runtime) => ChannelOutboundAdapter["sendText"] | null | undefined;
    unavailableMessage?: string;
  };
  sendMedia?: {
    resolve: (runtime: Runtime) => ChannelOutboundAdapter["sendMedia"] | null | undefined;
    unavailableMessage?: string;
  };
  sendPoll?: {
    resolve: (runtime: Runtime) => ChannelOutboundAdapter["sendPoll"] | null | undefined;
    unavailableMessage?: string;
  };
}): Pick<ChannelOutboundAdapter, OutboundMethod>;
//#endregion
export { createRuntimeOutboundDelegates as n, createRuntimeDirectoryLiveAdapter as t };