import { IApiCustomDomainProperty } from '../definitions/Base.js';
import { IApiDataNodeUnion } from '../definitions/Shapes.js';
export type IDataNodeInit = 'scalar' | 'object' | 'array';
/**
 * A class that manipulates the AMF's DataNode node.
 */
export declare class AmfDataNode {
    id: string;
    /**
     * AMF domain types.
     * This is set in the constructor
     */
    types: string[];
    /**
     * The name of this data node.
     */
    name?: string;
    /**
     * Set when the object node type
     */
    properties?: Record<string, AmfDataNode>;
    /**
     * Scalar type value. Always a string.
     */
    value?: string;
    /**
     * Scalar type value data type.
     */
    dataType?: string;
    /**
     * Set when the type is array.
     */
    members?: AmfDataNode[];
    customDomainProperties: IApiCustomDomainProperty[];
    static scalar(value: string, type: string): AmfDataNode;
    constructor(init: IApiDataNodeUnion | IDataNodeInit);
    toJSON(): IApiDataNodeUnion;
    /**
     * Adds a member to the list of members.
     * It throws when this is not an array node.
     *
     * @param init The member to add.
     */
    addMember(init: AmfDataNode): void;
    /**
     * Removes a member from the list of members.
     * It throws when this is not an array node.
     *
     * @param id The domain id of the member to remove.
     */
    removeMember(id: string): void;
    /**
     * Adds a property to the ObjectNode.
     * It throws when this is not an object node.
     *
     * @param name The name of the property.
     * @param value The instance of the DataNode to set.
     */
    addProperty(name: string, value: AmfDataNode): void;
    /**
     * Deletes a property by name.
     *
     * @param name The name of the property to delete.
     */
    removeProperty(name: string): void;
}
//# sourceMappingURL=AmfDataNode.d.ts.map