import type { RuntimeEventBus } from '../runtime/events/index.js';
import type { CommunicationKind, CommunicationScope } from '@pellux/goodvibes-sdk/platform/runtime/events/communication';
import { type AgentCommunicationMetadata } from '@pellux/goodvibes-sdk/platform/agents/communication-policy';
export interface AgentMessage {
    id: string;
    from: string;
    to: string;
    content: string;
    timestamp: number;
    ttlMs: number;
    kind: CommunicationKind;
    scope: CommunicationScope;
    fromRole?: string;
    toRole?: string;
    cohort?: string;
    wrfcId?: string;
    parentAgentId?: string;
}
export type MessageCallback = (message: AgentMessage) => void;
type MessageOptions = {
    ttlMs?: number;
    kind?: CommunicationKind;
    scope?: CommunicationScope;
    cohort?: string;
    wrfcId?: string;
    parentAgentId?: string;
};
export declare class AgentMessageBus {
    private messages;
    private subscriptions;
    private identities;
    private runtimeBus;
    setRuntimeBus(runtimeBus: RuntimeEventBus | null): void;
    registerAgent(meta: {
        agentId: string;
        template?: string;
        role?: AgentCommunicationMetadata['role'];
        parentAgentId?: string;
        cohort?: string;
        wrfcId?: string;
    }): void;
    private resolveOptions;
    send(fromId: string, toId: string, content: string, ttlOrOptions?: number | MessageOptions): boolean;
    broadcast(fromId: string, content: string, ttlOrOptions?: number | MessageOptions): boolean;
    subscribe(agentId: string, callback: MessageCallback): () => void;
    getMessages(agentId: string): AgentMessage[];
    private emitSent;
    private emitDelivered;
    private emitBlocked;
    cleanup(): void;
    private store;
    private deliver;
}
export {};
//# sourceMappingURL=message-bus-core.d.ts.map