type PiEvents = 'session_start' | 'turn_end' | 'agent_start' | 'agent_end' | 'agent_settled' | 'session_shutdown'; interface PiLike { on: (event: PiEvents, handler: (event: any, ctx: any) => void | Promise) => void; sendUserMessage: (content: string, options?: { deliverAs?: 'steer' | 'followUp'; }) => void; sendMessage: (message: { customType: string; content: string; display?: boolean; details?: Record; }, options?: { deliverAs?: 'steer' | 'followUp' | 'nextTurn'; triggerTurn?: boolean; }) => void; } /** Register one current watcher. `start()` only wires up pi's event handlers — * it calls no Pi action, so this is safe to run during extension factory * execution, before Pi has bound its action methods (sendUserMessage / * sendMessage throw until then). The watcher only starts polling and sending * once its own `session_start` handler fires and arms it — the first event * Pi emits once actions are bound. The returned disposer owns only this * registration's generation. */ export declare function registerCanvasInboxWatcher(pi: PiLike): () => void; export default registerCanvasInboxWatcher;