import type { RuntimeEventBus } from '../runtime/events/index.js';
import type { CommunicationKind, CommunicationScope } from '../../events/communication.js';
import { type AgentCommunicationMetadata } from './communication-policy.js';
export interface AgentMessage {
    id: string;
    from: string;
    to: string;
    content: string;
    timestamp: number;
    ttlMs: number;
    kind: CommunicationKind;
    scope: CommunicationScope;
    fromRole?: string | undefined;
    toRole?: string | undefined;
    cohort?: string | undefined;
    wrfcId?: string | undefined;
    parentAgentId?: string | undefined;
}
export type MessageCallback = (message: AgentMessage) => void;
type MessageOptions = {
    ttlMs?: number | undefined;
    kind?: CommunicationKind | undefined;
    scope?: CommunicationScope | undefined;
    cohort?: string | undefined;
    wrfcId?: string | undefined;
    parentAgentId?: string | undefined;
};
export declare class AgentMessageBus {
    private messages;
    private subscriptions;
    private identities;
    private runtimeBus;
    setRuntimeBus(runtimeBus: RuntimeEventBus | null): void;
    registerAgent(meta: {
        agentId: string;
        template?: string | undefined;
        role?: AgentCommunicationMetadata['role'] | undefined;
        parentAgentId?: string | undefined;
        cohort?: string | undefined;
        wrfcId?: string | undefined;
    }): 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