import { ServiceBindingInfo } from "navidev-adt-api";
import { Entities, Entity, MetadataInfoOptions, ResultMetadataContent } from "./metadataTypes";
import MetadataApp from "./metadataApp";
import { AdtConnection } from "../adtConnection/adtConnection";
export default class MetadataV4App extends MetadataApp {
    private entitiesWithSemantics;
    constructor(connectionController: AdtConnection, serviceBindingInfo: ServiceBindingInfo, options?: MetadataInfoOptions);
    /**
     * Obtiene el contenido del metadata. En los V4 hay como 2 metadatas el especifico y el general.
     * El específico contiene la información de las entidades propias de la aplicación y el general contiene
     * las entidades de SAP, como la moneda, unidad de medida, etc.
     * @param serviceBindingInfo
     */
    getMetadataInfo(): Promise<ResultMetadataContent>;
    /**
     * Proceso el el metadata especifico del servicio
     * @param bodyParsed
     */
    processMetadataEspecific(bodyParsed: any): Promise<void>;
    /**
     * Procesado del metadata general. El metadata general contiene entidades que mete SAP por defecto, como PDF y otras historias,
     * pero me interesa las entidades asociadas cuando tengo campos con valores semanticos (moneda o unidades de medida).
     * @param bodyParsed
     */
    processMetadataCommon(bodyParsed: any): void;
    protected extractEntityCommon(bodyParsed: any, entityName: string): Entity | undefined;
    protected extractEntities(bodyParsed: any): Promise<Entities>;
    /**
     * Extrae las anotaciones del vocabulario de la entidad. El vocabulario son las anotaciones fiori de los campos.
     * @param entityInfo
     * @param annotations
     */
    protected extractEntityAnnotationVocab(entityInfo: Entity, annotations: any): void;
    /**
     * Procesa la anotación de lineItem
     * @param values
     * @param entityInfo
     */
    private processLineItemAnnotation;
    /**
     * Procesa la anotación de identification
     * @param values
     * @param entityInfo
     */
    private processIdentificationAnnotation;
    /**
     * Extrae lo que se puede hacer con la entidad: crear, borrar, modificar. Esto se encuentra
     * en la anotación del container. El nombre suele ser: "SAP__self.Container/<entidad>". El "SAP__self" sale
     * del alias que tiene el servicio.
     * @param entityInfo
     * @param annotations
     */
    private extratEntityRestrictions;
    /**
     * Extrae los campos de la entityType
     * @param entityType
     * @returns
     */
    private extractEntityTypeFields;
    /**
     * Rellena el campo con la información de la ayuda para búsqueda.
     * @param rowAnnotation
     * @param field
     * @param entityInfo
     * @param entities
     */
    private fillFieldWithValuesList;
    /**
     * Añade que entidad tiene un campo semantico. Campo semantico son campos de moneda, unidad de medida, etc.
     * @param entityName
     * @param semantic
     */
    private addEntityWithSemantics;
    /**
     * Obtiene el alias del namespace del metadata necesario para búsquedas internas
     * @param bodyParsed
     * @returns
     */
    private extractNamespaceAlias;
    /**
     * Rellena en la entidad donde hay un campo semantic cual es la entidad de SAP para obtener los valores. Además, de informar
     * dicha entidad en las entidades leidas del metadata especifico del servicio
     * @param entitySemantic
     * @param entityTypeName
     * @param semantic
     */
    private fillEntitySemantic;
    /**
     * Enlaza el campo de la entidad que se esta procesando con la entidad de la ayuda para búsqueda
     * @param field
     * @param entityInfo
     * @param bodyParsed Cuerpo del metadata de la ayuda para búsqueda
     */
    private linkFieldEntityWithEntityValueList;
    /**
     * Procesa los parámetros de la ayuda para búsqueda donde están los campos que la formarán y
     * los campos de entrada y salida.
     * @param field
     * @param valueListParameters
     */
    private processParametersValueHelp;
    /**
     * Rellena la estructura de info de la entidad en base al cuerpo del metadata
     * @param rowEntity
     * @param nameSpace
     * @returns
     */
    private fillExtractInfo;
    /**
     * Rellena la info básico de un campo
     * @param rowProperty
     * @param keyFields
     * @returns
     */
    private fillFieldInfo;
    /**
     * Extrae los campos de las entidades comunes
     * @param entityType
     * @param entityInfo
     * @param annotations
     * @returns
     */
    private extractFieldsEntityCommon;
    /**
     * Convierte un string en un TextArrangementTypes
     * @param value
     * @returns
     */
    private convertTextArrangementType;
}
//# sourceMappingURL=metadataV4App.d.ts.map