export interface CanvasEvents {
    'handle:action': CanvasHandleActionEvent;
    'node:select': {
        nodeId: string;
    };
    'node:delete': {
        nodeId: string;
    };
}
export interface CanvasHandleActionEvent {
    handleId: string;
    nodeId: string;
    handleType: 'artifact' | 'input' | 'output';
    position: 'top' | 'bottom' | 'left' | 'right';
    timestamp?: number;
}
type EventName = keyof CanvasEvents;
type EventPayload<T extends EventName> = CanvasEvents[T];
type EventCallback<T extends EventName> = (payload: EventPayload<T>) => void;
export interface ICanvasEventBus {
    emit<T extends EventName>(eventName: T, payload: EventPayload<T>): void;
    on<T extends EventName>(eventName: T, callback: EventCallback<T>): () => void;
    off<T extends EventName>(eventName: T, callback: EventCallback<T>): void;
    once<T extends EventName>(eventName: T, callback: EventCallback<T>): () => void;
    clear(): void;
}
export declare const canvasEventBus: ICanvasEventBus;
export {};
//# sourceMappingURL=CanvasEventBus.d.ts.map