import { AssistantEventName, AssistantEventPayload } from "../types/events.js";
import { AssistantClient } from "../types/client.js";
import { ClientStack } from "./tap-client-stack-context.js";

//#region src/utils/tap-assistant-context.d.ts
type EmitFn = <TEvent extends Exclude<AssistantEventName, "*">>(event: TEvent, payload: AssistantEventPayload[TEvent], clientStack: ClientStack) => void;
type AssistantTapContextValue = {
  clientRef: {
    parent: AssistantClient;
    current: AssistantClient | null;
  };
  emit: EmitFn;
};
declare const withAssistantTapContextProvider: <TResult>(value: AssistantTapContextValue, fn: () => TResult) => TResult;
declare const tapAssistantClientRef: () => {
  parent: AssistantClient;
  current: AssistantClient | null;
};
declare const tapAssistantEmit: () => <TEvent extends Exclude<AssistantEventName, "*">>(event: TEvent, payload: AssistantEventPayload[TEvent]) => void;
//#endregion
export { AssistantTapContextValue, tapAssistantClientRef, tapAssistantEmit, withAssistantTapContextProvider };
//# sourceMappingURL=tap-assistant-context.d.ts.map