import { ShapeBase } from './ShapeBase.js';
import { IApiAnyShape, IApiArrayShape, IApiDataExample, IApiDataNodeUnion, IApiNodeShape, IApiPropertyShape, IApiScalarShape, IShapeUnion, IApiUnionShape } from '../definitions/Shapes.js';
interface IProcessNodeOptions {
    forceName?: string;
    indent?: number;
    noWrap?: boolean;
}
interface ICollectExamplesOptions {
    nodeName?: string;
    indent?: number;
    isWrapped?: boolean;
    tagFill?: string;
}
/**
 * Normalizes given name to a value that can be accepted by `createElement`
 * function on a document object.
 * @param name A name to process
 * @returns The normalized name
 */
export declare const normalizeXmlTagName: (name: string) => string;
export declare function shapeToXmlTagName(shape: IApiAnyShape): string;
export declare class ShapeXmlSchemaGenerator extends ShapeBase {
    /**
     * Generates a XML example from the structured value.
     *
     * @param schema The Shape definition
     */
    generate(schema: IShapeUnion | IApiPropertyShape<IShapeUnion>): string | undefined;
    /**
     * Processes the Shape definition and returns a JavaScript object or array.
     */
    processNode(schema: IShapeUnion, options?: IProcessNodeOptions, isRoot?: boolean): string | undefined;
    /**
     * Serializes generated JS value according to the mime type.
     */
    serialize(value: unknown): string | undefined;
    /**
     * Picks the union member to render.
     */
    protected _readCurrentUnion(anyOf: IShapeUnion[]): IShapeUnion;
    protected _collectProperties(schema: IApiNodeShape): IApiPropertyShape[];
    protected _nodeShapeObject(schema: IApiNodeShape, options?: IProcessNodeOptions): string;
    protected _scalarShapeObject(schema: IApiScalarShape, options?: IProcessNodeOptions): string;
    protected _nilShapeObject(schema: IApiScalarShape, options?: IProcessNodeOptions): string | undefined;
    /**
     * @returns The value for the property or undefined when cannot generate the value.
     */
    protected _propertyShapeObject(schema: IApiPropertyShape, options?: IProcessNodeOptions): string | undefined;
    protected _collectExamples(schema: IShapeUnion, opts?: ICollectExamplesOptions): string | undefined;
    protected _createTabs(indent?: number, offset?: number): string;
    protected _nodePropertyObject(schema: IApiPropertyShape<IApiNodeShape>, options?: IProcessNodeOptions): string;
    protected _nodePropertyArray(schema: IApiPropertyShape<IApiArrayShape>, options?: IProcessNodeOptions): string;
    protected _arrayShapeObject(schema: IApiArrayShape, options?: IProcessNodeOptions, isRoot?: boolean): string;
    /**
     * Creates an example from an array shape when the items is the scalar shape.
     * Note, it assumes the previous step tested whether the `items` is scalar.
     *
     * @param schema The array schema
     * @param options Processing options.
     */
    protected _scalarItems(schema: IApiArrayShape<IApiScalarShape>, options?: IProcessNodeOptions): string;
    /**
     * Renders a NodeShape as an array item.
     *
     * @param schema The array shape with item that is NodeShape.
     * @param options Rendering options.
     */
    protected _nodeItems(schema: IApiArrayShape<IApiNodeShape>, options?: IProcessNodeOptions): string;
    /**
     * @param example The example to turn into a JS object
     */
    protected _exampleToObject(example?: IApiDataExample): string | undefined;
    protected _unionShapeObject(schema: IApiUnionShape, options?: IProcessNodeOptions): string | undefined;
    /**
     * @param schema The schema with unions
     * @param defaultValue The definition of a default value.
     */
    protected _unionDefaultValue(schema: IShapeUnion, defaultValue: IApiDataNodeUnion, options?: IProcessNodeOptions): string | undefined;
    protected _fileShapeObject(): string | undefined;
    protected _schemaShapeObject(): string | undefined;
    protected _tupleShapeObject(): string | undefined;
    protected _anyShapeObject(schema: IApiAnyShape): string | undefined;
}
export {};
//# sourceMappingURL=ShapeXmlSchemaGenerator.d.ts.map