import { AmfNamespace } from './definitions/Namespace.js';
export const IAmfScalarTypes = [
    AmfNamespace.aml.vocabularies.shapes.ScalarShape,
    AmfNamespace.aml.vocabularies.shapes.AnyShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfArrayTypes = [
    AmfNamespace.aml.vocabularies.shapes.ArrayShape,
    AmfNamespace.aml.vocabularies.shapes.AnyShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfNodeTypes = [
    AmfNamespace.w3.shacl.NodeShape,
    AmfNamespace.aml.vocabularies.shapes.AnyShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfPropertyTypes = [
    AmfNamespace.w3.shacl.PropertyShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfNilTypes = [
    AmfNamespace.aml.vocabularies.shapes.NilShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfUnionTypes = [
    AmfNamespace.aml.vocabularies.shapes.UnionShape,
    AmfNamespace.aml.vocabularies.shapes.AnyShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfFileTypes = [
    AmfNamespace.aml.vocabularies.shapes.FileShape,
    AmfNamespace.aml.vocabularies.shapes.AnyShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfAnyTypes = [
    AmfNamespace.aml.vocabularies.shapes.AnyShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfSchemaTypes = [
    AmfNamespace.aml.vocabularies.shapes.SchemaShape,
    AmfNamespace.aml.vocabularies.shapes.AnyShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfTupleTypes = [
    AmfNamespace.aml.vocabularies.shapes.TupleShape,
    AmfNamespace.aml.vocabularies.shapes.ArrayShape,
    AmfNamespace.aml.vocabularies.shapes.AnyShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfRecursiveTypes = [
    AmfNamespace.aml.vocabularies.shapes.RecursiveShape,
    AmfNamespace.w3.shacl.Shape,
    AmfNamespace.aml.vocabularies.shapes.Shape,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfXmlSerializationTypes = [
    AmfNamespace.aml.vocabularies.shapes.XMLSerializer,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfScalarNodeTypes = [
    AmfNamespace.aml.vocabularies.data.Scalar,
    AmfNamespace.aml.vocabularies.data.Node,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfArrayNodeTypes = [
    AmfNamespace.aml.vocabularies.data.Array,
    AmfNamespace.w3.rdfSchema.Seq,
    AmfNamespace.aml.vocabularies.data.Node,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfObjectNodeTypes = [
    AmfNamespace.aml.vocabularies.data.Object,
    AmfNamespace.aml.vocabularies.data.Node,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
export const IAmfExampleTypes = [
    AmfNamespace.aml.vocabularies.apiContract.Example,
    AmfNamespace.aml.vocabularies.document.DomainElement,
];
/**
 * Translates the DomainProperty type to an AMF data type.
 * @param type The property data type
 * @returns AMF shape dataType
 */
export function modelTypeToAmfDataType(type, bindings) {
    if (type === 'number') {
        if (bindings?.format === 'int32' || bindings?.format === 'int64') {
            return AmfNamespace.w3.xmlSchema.integer;
        }
        return AmfNamespace.w3.xmlSchema.number;
    }
    if (type === 'boolean') {
        return AmfNamespace.aml.vocabularies.shapes.boolean;
    }
    if (type === 'date') {
        return AmfNamespace.w3.xmlSchema.date;
    }
    if (type === 'datetime') {
        return AmfNamespace.w3.xmlSchema.dateTime;
    }
    if (type === 'time') {
        return AmfNamespace.aml.vocabularies.shapes.dateTimeOnly;
    }
    if (type === 'binary' && bindings && bindings.format === 'base64') {
        return AmfNamespace.w3.xmlSchema.base64Binary;
    }
    return AmfNamespace.w3.xmlSchema.string;
    // switch (type) {
    //   // case 'nil':
    //   //   return AmfNamespace.aml.vocabularies.shapes.nil
    //   // case 'any':
    //   //   return AmfNamespace.aml.vocabularies.shapes.AnyShape
    //   default:
    //     if (type === 'binary' && bindings && bindings.format === 'base64') {
    //       return AmfNamespace.w3.xmlSchema.base64Binary
    //     }
    //     // if (bindings && bindings.format === 'binary') {
    //     //   return AmfNamespace.w3.xmlSchema.base64Binary
    //     // }
    //     return AmfNamespace.w3.xmlSchema.string
    // }
}
//# sourceMappingURL=AmfTypes.js.map