import type { ComputedRef, Ref } from "vue"; import type { InterruptEvent, InterruptHandlerProps, InterruptRenderProps } from "../types/interrupt"; export type { InterruptEvent, InterruptHandlerProps, InterruptRenderProps }; type InterruptHandlerFn = (props: InterruptHandlerProps) => TResult | PromiseLike; type InterruptResultFromHandler = THandler extends (...args: never[]) => infer TResult ? TResult extends PromiseLike ? TResolved | null : TResult | null : null; type InterruptResult = InterruptResultFromHandler>; export interface UseInterruptConfig { handler?: InterruptHandlerFn; enabled?: (event: InterruptEvent) => boolean; agentId?: string; renderInChat?: boolean; } export interface UseInterruptResult { interrupt: Ref | null>; result: Ref>; hasInterrupt: ComputedRef; resolveInterrupt: (response: unknown) => void; slotProps: ComputedRef> | null>; } export declare function isPromiseLike(value: TValue | PromiseLike): value is PromiseLike; /** * Vue composable for handling `on_interrupt` custom events from an agent. * * It tracks the latest pending interrupt, optionally derives UI data via * `handler`, and can publish slot state into `CopilotChat` so consumers render * interrupts through the `#interrupt` slot instead of render functions/TSX. * * @example * ```ts * const { interrupt, hasInterrupt, resolveInterrupt } = useInterrupt({ * handler: ({ event }) => ({ label: String(event.value) }), * }); * ``` */ export declare function useInterrupt(config?: UseInterruptConfig): UseInterruptResult; //# sourceMappingURL=use-interrupt.d.ts.map