import { IVisitor } from '../../core/visitors/IVisitor';
import { AaiMessageBase } from './AaiMessageBase';
/**
 * Constructor.
 * @param {Node} parent
 * @param {string} name
 * @class
 * @extends AaiMessageBase
 * @author Jakub Senko <jsenko@redhat.com>
 */
export declare abstract class AaiMessage extends AaiMessageBase {
    /**
     * The message may be "composite".
     * In this case, nested messages are stored here.
     * @see <a href="https://www.asyncapi.com/docs/specifications/2.0.0/#a-name-operationobject-a-operation-object">AsyncAPI 2.0.0 spec</a>
     */
    oneOf: Array<AaiMessage>;
    _isOneOfMessage: boolean;
    /**
     * Objects of `any` type are deserialized as follows:
     * In TypeScript, this field contains the raw JS object, in case of Java
     * it is a {@link com.fasterxml.jackson.databind.node.ObjectNode}.
     *
     * @see <a href="https://www.asyncapi.com/docs/specifications/2.0.0/#messageObject">AsyncAPI 2.0.0 spec</a>
     */
    payload: any;
    traits: Array<AaiMessageTrait>;
    constructor(parent?: any, name?: any);
    /**
     * @see io.apicurio.datamodels.core.models.Node#accept(io.apicurio.datamodels.core.visitors.IVisitor)
     * @param {*} visitor
     */
    accept(visitor: IVisitor): void;
    /**
     * Add a oneOf message.
     * @param {AaiMessage} item
     */
    addOneOfMessage(item: AaiMessage): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.models.AaiMessageBase#addTag(io.apicurio.datamodels.asyncapi.models.AaiTag)
     * @param {AaiTag} tag
     */
    addTag(tag: AaiTag): void;
    /**
     * @param {AaiMessageTrait} traitModel
     */
    addTrait(traitModel: AaiMessageTrait): void;
}
import { AaiTag } from './AaiTag';
import { AaiMessageTrait } from './AaiMessageTrait';
