import { MetadataDocument, MetadataDocumentAnnotation } from '../metadataDocument';
import { XmlAttribute } from '../xmlMetadataDocument';
import { DescribeMetadataDecompositionConfig } from './describeMetadataDecompositionConfig';
import { DecompositionConfig, DecomposedSubtypeConfig } from './decompositionConfig';
import { DecompositionStrategy } from './decompositionStrategy';
export declare class DescribeMetadataAnnotation implements MetadataDocumentAnnotation {
    name: string;
}
/**
 * Decomposition strategy driven by describeMetadata results.
 * Each childXmlName is assumed to be a subtype for decomposition.
 *
 * For this decomposition the aggregate and decomposed documents
 * are all mdapi XML. The WSDL is used (while building the decomposition
 * configuration in the metadata registry) to interpret the contents
 * of the aggregate metadata document.
 */
export declare class DescribeMetadataDecomposition implements DecompositionStrategy {
    decompositionConfig: DescribeMetadataDecompositionConfig;
    constructor(decompositionConfig: DecompositionConfig);
    newDocument(metadataName: string, xmlAttributes?: XmlAttribute[]): MetadataDocument;
    newContainerDocument(metadataName: string): MetadataDocument;
    newDecompositionDocument(metadataName: string): MetadataDocument;
    newComposedDocument(metadataName: string): MetadataDocument;
    compose(container: MetadataDocument, decompositions: Map<DecomposedSubtypeConfig, MetadataDocument[]>): MetadataDocument;
    decompose(composed: MetadataDocument, name: string, manifest?: any, metadataType?: any): [MetadataDocument, Map<DecomposedSubtypeConfig, MetadataDocument[]>];
    isComposable(): boolean;
    newAnnotation(): MetadataDocumentAnnotation;
    getAnnotation(decomposition: MetadataDocument, subtypeConfig: DecomposedSubtypeConfig): MetadataDocumentAnnotation;
    private pruneDocuments;
    private pruneContainer;
    private static getName;
    private static importDocumentElementChild;
    private static findDecompositionSubtypeConfig;
    private static getFirstElement;
    private static getXmlAttributes;
    private static getXmlAttributesFromDecomposedSource;
}
