import { Entity } from "../gwMetadata/metadataTypes";
import { SelectFields } from "./crudOperationsTypes";
export type OptionsSAPJSON2Object = {};
export default class BaseUtils {
    protected entityInfo: Entity;
    protected odataVersion: string;
    constructor(entityInfo: Entity, odataVersion: string);
    /**
     * Convierte valor para pasarlo por url para método como READ o PATCH
     * @param value
     * @param fieldName
     * @returns
     */
    protected convertQueryValue(value: any, fieldName: string): any;
    /**
     * Convierte el valor de un campo al formato de SAP.
     * Nota importante: Para los método de READ y QUERY hay un determinados campos que se deben englobar
     * en un tipo para que funcione. Por ejemplo, el campo de fecha que hay que poner datetime'<valor de la fecha>' para
     * que funcione. Pero el formato de datetime'' no es válido para el método de POST/PUT/PATCH.
     * @param value
     * @param fieldName
     * @returns
     */
    protected convertJSON2SAPValue(value: any, fieldName: string): any;
    /**
     * Convierte una fecha en formato SAP a Date en formato javascript.
     * @param value
     */
    convertSAPDate2Date(value: string): Date | null;
    /**
     * Convierte la fecha de SAP con offset a Date en formato javascript.
     * @param value
     */
    convertSAPDateOffset2Date(value: string): Date | null;
    /**
     * Convierte el valor de un campo de SAP a JSON
     * @param value
     * @param fieldName
     * @returns
     */
    protected convertSAPValue2JSON(value: any, fieldName: string): any;
    /**
     * Devuelve si un campo existe en la entidad.
     * @param fieldName
     * @returns
     */
    existeFieldEntity(fieldName: string): boolean;
    /**
     * Mapea un JSON a un objeto de salida solo con los campos de la entidad.
     * @param json
     * @returns
     */
    mappingSAPJSON2Object<T>(json: Record<string, any>, selectFields?: SelectFields, options?: OptionsSAPJSON2Object): T;
    /**
     * Parsea un objeto al formato JSON que espera SAP.
     * @param values
     * @returns
     */
    mappingObject2SAPJSON<D>(values: D, excludeFields?: SelectFields): string;
    /**
     * Convierte un Array en formato JSON a un Array de objetos con los campos de la entidad.
     * @param json
     */
    mappingSAPJSON2Array<T>(json: any[], selectFields?: SelectFields): T;
    /**
     * Mapeo de los campos de borrador que provienen del JSON
     * @param key
     * @param json
     * @param jsonOutput
     * @param selectFields
     */
    protected mappingSAPJSONDraftFields(key: string, json: Record<string, any>, jsonOutput: Record<string, any>, selectFields?: SelectFields): void;
}
//# sourceMappingURL=baseUtils.d.ts.map