import { A2A } from "../../types/index.js";
import { EventEmitter } from "eventemitter3";
export declare class Messenger extends EventEmitter<A2A.MessageMap> implements A2A.MessageProducer, A2A.MessageConsumer {
    private _message;
    private _messages;
    private resolvers;
    private done;
    /**
     * @param message - The initial message to send
     * @note The initial message is tied to the messenger and cannot be changed
     */
    constructor(message: A2A.MessageSendParams);
    /**
     * @returns True if the channel is open
     */
    get isOpen(): boolean;
    /**
     * @returns The list of commands
     */
    get message(): A2A.MessageSendParams;
    /**
     * @returns The current message
     */
    get messages(): A2A.MessageSendParams[];
    /**
     * @returns The command channel as an async iterable
     */
    [Symbol.asyncIterator](): AsyncIterableIterator<A2A.MessageSendParams, A2A.MessageSendParams, A2A.MessageSendParams | undefined>;
    valueOf(): A2A.MessageSendParams;
    send(message: A2A.MessageSendParams): Promise<void>;
    close(): Promise<void>;
    next(): Promise<IteratorResult<A2A.MessageSendParams>>;
    return(value: A2A.MessageSendParams): Promise<IteratorResult<A2A.MessageSendParams>>;
    static create(messageParams: A2A.MessageSendParams): A2A.MessageConsumerProxy;
}
