/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { Class, Enumeration, Measure, PrimitiveType, Unit, } from '@finos/legend-graph';
import { UnsupportedOperationError } from '@finos/legend-shared';
export var CLASS_PROPERTY_TYPE;
(function (CLASS_PROPERTY_TYPE) {
    CLASS_PROPERTY_TYPE["CLASS"] = "CLASS";
    CLASS_PROPERTY_TYPE["ENUMERATION"] = "ENUMERATION";
    CLASS_PROPERTY_TYPE["MEASURE"] = "MEASURE";
    CLASS_PROPERTY_TYPE["UNIT"] = "UNIT";
    CLASS_PROPERTY_TYPE["PRIMITIVE"] = "PRIMITIVE";
})(CLASS_PROPERTY_TYPE || (CLASS_PROPERTY_TYPE = {}));
export const getClassPropertyType = (type) => {
    if (type instanceof PrimitiveType) {
        return CLASS_PROPERTY_TYPE.PRIMITIVE;
    }
    else if (type instanceof Enumeration) {
        return CLASS_PROPERTY_TYPE.ENUMERATION;
    }
    else if (type instanceof Class) {
        return CLASS_PROPERTY_TYPE.CLASS;
    }
    else if (type instanceof Unit) {
        return CLASS_PROPERTY_TYPE.UNIT;
    }
    else if (type instanceof Measure) {
        return CLASS_PROPERTY_TYPE.MEASURE;
    }
    throw new UnsupportedOperationError(`Can't classify class property`, type);
};
export var PACKAGEABLE_ELEMENT_TYPE;
(function (PACKAGEABLE_ELEMENT_TYPE) {
    PACKAGEABLE_ELEMENT_TYPE["PRIMITIVE"] = "PRIMITIVE";
    PACKAGEABLE_ELEMENT_TYPE["PACKAGE"] = "PACKAGE";
    PACKAGEABLE_ELEMENT_TYPE["PROFILE"] = "PROFILE";
    PACKAGEABLE_ELEMENT_TYPE["ENUMERATION"] = "ENUMERATION";
    PACKAGEABLE_ELEMENT_TYPE["CLASS"] = "CLASS";
    PACKAGEABLE_ELEMENT_TYPE["ASSOCIATION"] = "ASSOCIATION";
    PACKAGEABLE_ELEMENT_TYPE["FUNCTION"] = "FUNCTION";
    PACKAGEABLE_ELEMENT_TYPE["MEASURE"] = "MEASURE";
    PACKAGEABLE_ELEMENT_TYPE["UNIT"] = "UNIT";
    PACKAGEABLE_ELEMENT_TYPE["FLAT_DATA_STORE"] = "FLAT_DATA_STORE";
    PACKAGEABLE_ELEMENT_TYPE["DATABASE"] = "DATABASE";
    PACKAGEABLE_ELEMENT_TYPE["SERVICE_STORE"] = "SERVICE_STORE";
    PACKAGEABLE_ELEMENT_TYPE["MAPPING"] = "MAPPING";
    PACKAGEABLE_ELEMENT_TYPE["SERVICE"] = "SERVICE";
    PACKAGEABLE_ELEMENT_TYPE["EXECUTION_ENVIRONMENT"] = "EXECUTION_ENVIRONMENT";
    PACKAGEABLE_ELEMENT_TYPE["CONNECTION"] = "CONNECTION";
    PACKAGEABLE_ELEMENT_TYPE["RUNTIME"] = "RUNTIME";
    PACKAGEABLE_ELEMENT_TYPE["FILE_GENERATION"] = "FILE_GENERATION";
    PACKAGEABLE_ELEMENT_TYPE["GENERATION_SPECIFICATION"] = "GENERATION_SPECIFICATION";
    PACKAGEABLE_ELEMENT_TYPE["SECTION_INDEX"] = "SECTION_INDEX";
    PACKAGEABLE_ELEMENT_TYPE["DATA"] = "DATA";
    PACKAGEABLE_ELEMENT_TYPE["SNOWFLAKE_APP"] = "SNOWFLAKE_APP";
    PACKAGEABLE_ELEMENT_TYPE["SNOWFLAKE_M2M_UDF"] = "SNOWFLAKE_M2M_UDF";
    PACKAGEABLE_ELEMENT_TYPE["HOSTED_SERVICE"] = "HOSTED_SERVICE";
    PACKAGEABLE_ELEMENT_TYPE["MEM_SQL_FUNCTION"] = "MEM_SQL_FUNCTION";
    // New Strategical Data Product
    PACKAGEABLE_ELEMENT_TYPE["_DATA_PRODUCT"] = "BETA_DATA_PRODUCT";
    PACKAGEABLE_ELEMENT_TYPE["TEMPORARY__LOCAL_CONNECTION"] = "LOCAL_CONNECTION";
    PACKAGEABLE_ELEMENT_TYPE["INTERNAL__UnknownElement"] = "UNKNOWN";
    PACKAGEABLE_ELEMENT_TYPE["INGEST_DEFINITION"] = "INGEST_DEFINITION";
})(PACKAGEABLE_ELEMENT_TYPE || (PACKAGEABLE_ELEMENT_TYPE = {}));
export var PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY;
(function (PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY) {
    PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY["MODEL"] = "Model";
    PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY["STORE"] = "Store";
    PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY["QUERY"] = "Query";
    PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY["EXTERNAL_FORMAT"] = "External Format";
    PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY["GENERATION"] = "Generation";
    PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY["OTHER"] = "Other";
})(PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY || (PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY = {}));
//# sourceMappingURL=ModelClassifierUtils.js.map