/**
 * 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.
 */
export const MULTIPLICITY_INFINITE = '*';
export const ELEMENT_PATH_DELIMITER = '::';
export const MULTIPLICITY_RANGE_OPERATOR = '..';
export const PROPERTY_ACCESSOR = '.';
export const UNIT_PATH_DELIMITER = '~';
export const LAMBDA_PIPE = '|';
export const DEFAULT_SOURCE_PARAMETER_NAME = 'src';
export const DEFAULT_DATABASE_SCHEMA_NAME = 'default';
export const SECTION_INDEX_ELEMENT_PATH = '__internal__::SectionIndex';
export const VARIABLE_REFERENCE_TOKEN = '$';
export const TYPE_CAST_TOKEN = '@';
export const ARROW_FUNCTION_TOKEN = '->';
export const LATEST_DATE = '%latest';
export const PARSER_SECTION_MARKER = '###';
export const FUNCTION_SIGNATURE_MULTIPLICITY_INFINITE_TOKEN = 'MANY';
export const DIRECTORY_PATH_DELIMITER = '/';
export const SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX = 'sourceInformation';
export const LET_TOKEN = 'let';
export const RESERVERD_PACKAGE_NAMES = ['$implicit'];
export var ROOT_PACKAGE_NAME;
(function (ROOT_PACKAGE_NAME) {
    ROOT_PACKAGE_NAME["CORE"] = "CORE";
    ROOT_PACKAGE_NAME["MAIN"] = "ROOT";
    ROOT_PACKAGE_NAME["MODEL_GENERATION"] = "MODEL_GENERATION_ROOT";
    ROOT_PACKAGE_NAME["SYSTEM"] = "SYSTEM_ROOT";
    ROOT_PACKAGE_NAME["PROJECT_DEPENDENCY_ROOT"] = "PROJECT_DEPENDENCY_ROOT";
})(ROOT_PACKAGE_NAME || (ROOT_PACKAGE_NAME = {}));
export var PRIMITIVE_TYPE;
(function (PRIMITIVE_TYPE) {
    PRIMITIVE_TYPE["STRING"] = "String";
    PRIMITIVE_TYPE["BOOLEAN"] = "Boolean";
    PRIMITIVE_TYPE["BINARY"] = "Binary";
    PRIMITIVE_TYPE["NUMBER"] = "Number";
    PRIMITIVE_TYPE["INTEGER"] = "Integer";
    PRIMITIVE_TYPE["FLOAT"] = "Float";
    PRIMITIVE_TYPE["DECIMAL"] = "Decimal";
    PRIMITIVE_TYPE["DATE"] = "Date";
    PRIMITIVE_TYPE["STRICTDATE"] = "StrictDate";
    PRIMITIVE_TYPE["DATETIME"] = "DateTime";
    PRIMITIVE_TYPE["STRICTTIME"] = "StrictTime";
    // NOTE: `LatestDate` is a special type that is used for milestoning in store so its used in the body of function and lamdba but never should be exposed to users
    // as such, if there is a day we want to have `LatestDate` in the graph but not exposed to the users
    PRIMITIVE_TYPE["LATESTDATE"] = "LatestDate";
    PRIMITIVE_TYPE["BYTE"] = "Byte";
})(PRIMITIVE_TYPE || (PRIMITIVE_TYPE = {}));
export var PRECISE_PRIMITIVE_TYPE;
(function (PRECISE_PRIMITIVE_TYPE) {
    PRECISE_PRIMITIVE_TYPE["VARCHAR"] = "meta::pure::precisePrimitives::Varchar";
    PRECISE_PRIMITIVE_TYPE["INT"] = "meta::pure::precisePrimitives::Int";
    PRECISE_PRIMITIVE_TYPE["TINY_INT"] = "meta::pure::precisePrimitives::TinyInt";
    PRECISE_PRIMITIVE_TYPE["U_TINY_INT"] = "meta::pure::precisePrimitives::UTinyInt";
    PRECISE_PRIMITIVE_TYPE["SMALL_INT"] = "meta::pure::precisePrimitives::SmallInt";
    PRECISE_PRIMITIVE_TYPE["U_SMALL_INT"] = "meta::pure::precisePrimitives::USmallInt";
    PRECISE_PRIMITIVE_TYPE["U_INT"] = "meta::pure::precisePrimitives::UInt";
    PRECISE_PRIMITIVE_TYPE["BIG_INT"] = "meta::pure::precisePrimitives::BigInt";
    PRECISE_PRIMITIVE_TYPE["U_BIG_INT"] = "meta::pure::precisePrimitives::UBigInt";
    PRECISE_PRIMITIVE_TYPE["FLOAT"] = "meta::pure::precisePrimitives::Float4";
    PRECISE_PRIMITIVE_TYPE["DOUBLE"] = "meta::pure::precisePrimitives::Double";
    PRECISE_PRIMITIVE_TYPE["DECIMAL"] = "meta::pure::precisePrimitives::Decimal";
    PRECISE_PRIMITIVE_TYPE["STRICTDATE"] = "meta::pure::precisePrimitives::Date";
    PRECISE_PRIMITIVE_TYPE["DATETIME"] = "meta::pure::precisePrimitives::Timestamp";
    PRECISE_PRIMITIVE_TYPE["STRICTTIME"] = "meta::pure::precisePrimitives::Time";
    PRECISE_PRIMITIVE_TYPE["NUMERIC"] = "meta::pure::precisePrimitives::Numeric";
    PRECISE_PRIMITIVE_TYPE["TIMESTAMP"] = "meta::relational::metamodel::datatype::Timestamp";
})(PRECISE_PRIMITIVE_TYPE || (PRECISE_PRIMITIVE_TYPE = {}));
export var ATOMIC_TEST_TYPE;
(function (ATOMIC_TEST_TYPE) {
    ATOMIC_TEST_TYPE["Service_Test"] = "serviceTest";
    ATOMIC_TEST_TYPE["Mapping_Test"] = "mappingTest";
    ATOMIC_TEST_TYPE["Function_Test"] = "functionTest";
    ATOMIC_TEST_TYPE["DataProduct_AccessPoint_Test"] = "accessPointTest";
})(ATOMIC_TEST_TYPE || (ATOMIC_TEST_TYPE = {}));
// NOTE: the list of auto-import are kept in `m3.pure` file in `finos/legend-pure`,
// this includes a more extensive list of packages which contain native functions, classes, etc.
// See https://github.com/finos/legend-pure/blob/master/legend-pure-core/legend-pure-m3-core/src/main/resources/platform/pure/grammar/m3.pure
export const AUTO_IMPORTS = [
    // 'meta::pure::metamodel',
    'meta::pure::metamodel::type',
    // 'meta::pure::metamodel::type::generics',
    // 'meta::pure::metamodel::relationship',
    // 'meta::pure::metamodel::valuespecification',
    // 'meta::pure::metamodel::multiplicity',
    // 'meta::pure::metamodel::function',
    // 'meta::pure::metamodel::function::property',
    // 'meta::pure::metamodel::extension',
    // 'meta::pure::metamodel::import',
    'meta::pure::functions::date',
    // 'meta::pure::functions::string',
    // 'meta::pure::functions::collection',
    // 'meta::pure::functions::meta',
    // 'meta::pure::functions::constraints',
    // 'meta::pure::functions::lang',
    // 'meta::pure::functions::boolean',
    // 'meta::pure::functions::tools',
    // 'meta::pure::functions::io',
    // 'meta::pure::functions::math',
    // 'meta::pure::functions::asserts',
    // 'meta::pure::functions::test',
    // 'meta::pure::functions::multiplicity',
    // 'meta::pure::router',
    // 'meta::pure::service',
    // 'meta::pure::tds',
    // 'meta::pure::tools',
    'meta::pure::profiles',
    'meta::pure::metamodel::relation',
    'meta::pure::metamodel::variant',
];
export var CORE_PURE_PATH;
(function (CORE_PURE_PATH) {
    // type
    CORE_PURE_PATH["ANY"] = "meta::pure::metamodel::type::Any";
    CORE_PURE_PATH["NIL"] = "meta::pure::metamodel::type::Nil";
    CORE_PURE_PATH["RELATION"] = "meta::pure::metamodel::relation::Relation";
    CORE_PURE_PATH["TABULAR_DATASET"] = "meta::pure::tds::TabularDataSet";
    CORE_PURE_PATH["VARIANT"] = "meta::pure::metamodel::variant::Variant";
    // profile
    CORE_PURE_PATH["PROFILE_DOC"] = "meta::pure::profiles::doc";
    CORE_PURE_PATH["PROFILE_TEMPORAL"] = "meta::pure::profiles::temporal";
    // classifier paths
    CORE_PURE_PATH["PROFILE"] = "meta::pure::metamodel::extension::Profile";
    CORE_PURE_PATH["ENUMERATION"] = "meta::pure::metamodel::type::Enumeration";
    CORE_PURE_PATH["MEASURE"] = "meta::pure::metamodel::type::Measure";
    CORE_PURE_PATH["CLASS"] = "meta::pure::metamodel::type::Class";
    CORE_PURE_PATH["ASSOCIATION"] = "meta::pure::metamodel::relationship::Association";
    CORE_PURE_PATH["FUNCTION"] = "meta::pure::metamodel::function::ConcreteFunctionDefinition";
    CORE_PURE_PATH["FLAT_DATA"] = "meta::flatData::metamodel::FlatData";
    CORE_PURE_PATH["DATABASE"] = "meta::relational::metamodel::Database";
    CORE_PURE_PATH["MAPPING"] = "meta::pure::mapping::Mapping";
    CORE_PURE_PATH["SERVICE"] = "meta::legend::service::metamodel::Service";
    CORE_PURE_PATH["CONNECTION"] = "meta::pure::runtime::PackageableConnection";
    CORE_PURE_PATH["RUNTIME"] = "meta::pure::runtime::PackageableRuntime";
    CORE_PURE_PATH["EXECUTION_ENVIRONMENT"] = "meta::legend::service::metamodel::ExecutionEnvironmentInstance";
    CORE_PURE_PATH["FILE_GENERATION"] = "meta::pure::generation::metamodel::GenerationConfiguration";
    CORE_PURE_PATH["GENERATION_SPECIFICATION"] = "meta::pure::generation::metamodel::GenerationSpecification";
    CORE_PURE_PATH["SECTION_INDEX"] = "meta::pure::metamodel::section::SectionIndex";
    CORE_PURE_PATH["DATA_ELEMENT"] = "meta::pure::data::DataElement";
    CORE_PURE_PATH["SNOWFLAKE_APP"] = "meta::external::function::activator::snowflakeApp::SnowflakeApp";
    CORE_PURE_PATH["SNOWFLAKE_M2M_UDF"] = "meta::external::function::activator::snowflakeM2MUdf::SnowflakeM2MUdf";
    CORE_PURE_PATH["HOSTED_SERVICE"] = "meta::external::function::activator::hostedService::HostedService";
    CORE_PURE_PATH["MEM_SQL_FUNCTION"] = "meta::external::function::activator::memSqlFunction::MemSqlFunction";
    CORE_PURE_PATH["TABULAR_RESULT"] = "meta::pure::mapping::Result";
    CORE_PURE_PATH["DATA_PRODUCT"] = "meta::external::catalog::dataProduct::specification::metamodel::DataProduct";
    CORE_PURE_PATH["INGEST_DEFINITION"] = "meta::external::ingest::specification::metamodel::IngestDefinition";
})(CORE_PURE_PATH || (CORE_PURE_PATH = {}));
export const PURE_DOC_TAG = 'doc';
export const PURE_DEPRECATED_STEREOTYPE = 'deprecated';
export var MILESTONING_STEREOTYPE;
(function (MILESTONING_STEREOTYPE) {
    MILESTONING_STEREOTYPE["BUSINESS_TEMPORAL"] = "businesstemporal";
    MILESTONING_STEREOTYPE["PROCESSING_TEMPORAL"] = "processingtemporal";
    MILESTONING_STEREOTYPE["BITEMPORAL"] = "bitemporal";
})(MILESTONING_STEREOTYPE || (MILESTONING_STEREOTYPE = {}));
export var MILESTONING_VERSION_PROPERTY_SUFFIX;
(function (MILESTONING_VERSION_PROPERTY_SUFFIX) {
    MILESTONING_VERSION_PROPERTY_SUFFIX["ALL_VERSIONS"] = "AllVersions";
    MILESTONING_VERSION_PROPERTY_SUFFIX["ALL_VERSIONS_IN_RANGE"] = "AllVersionsInRange";
})(MILESTONING_VERSION_PROPERTY_SUFFIX || (MILESTONING_VERSION_PROPERTY_SUFFIX = {}));
export const MILESTONING_START_DATE_PARAMETER_NAME = 'startDate';
export const MILESTONING_END_DATE_PARAMETER_NAME = 'endDate';
export const PROCESSING_DATE_MILESTONING_PROPERTY_NAME = 'processingDate';
export const BUSINESS_DATE_MILESTONING_PROPERTY_NAME = 'businessDate';
export var PackageableElementPointerType;
(function (PackageableElementPointerType) {
    PackageableElementPointerType["CLASS"] = "CLASS";
    PackageableElementPointerType["STORE"] = "STORE";
    PackageableElementPointerType["MAPPING"] = "MAPPING";
    PackageableElementPointerType["RUNTIME"] = "RUNTIME";
    PackageableElementPointerType["FUNCTION"] = "FUNCTION";
    PackageableElementPointerType["FILE_GENERATION"] = "FILE_GENERATION";
    PackageableElementPointerType["SERVICE"] = "SERVICE";
    PackageableElementPointerType["DATA"] = "DATA";
    PackageableElementPointerType["ENUMERATION"] = "ENUMERATION";
    PackageableElementPointerType["ASSOCIATION"] = "ASSOCIATION";
    PackageableElementPointerType["BINDING"] = "BINDING";
})(PackageableElementPointerType || (PackageableElementPointerType = {}));
export var SUPPORTED_FUNCTIONS;
(function (SUPPORTED_FUNCTIONS) {
    SUPPORTED_FUNCTIONS["LET"] = "meta::pure::functions::lang::letFunction";
    SUPPORTED_FUNCTIONS["NEW"] = "meta::pure::functions::meta::new";
    // from
    SUPPORTED_FUNCTIONS["FROM"] = "meta::pure::mapping::from";
    SUPPORTED_FUNCTIONS["WITH"] = "meta::pure::mapping::with";
})(SUPPORTED_FUNCTIONS || (SUPPORTED_FUNCTIONS = {}));
export const DATE_TIME_FORMAT_WITH_MILLISECONDS = "yyyy-MM-dd'T'HH:mm:ss.SSSxxxx";
export const DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssxxxx";
export const DATE_FORMAT = 'yyyy-MM-dd';
// Generation Const
export const DEFAULT_GENERATION_PACKAGE = 'generated';
export var MILESTONE_INGEST_COLUMNS;
(function (MILESTONE_INGEST_COLUMNS) {
    MILESTONE_INGEST_COLUMNS["INGEST_LAKE_IN_ID"] = "LAKE_IN_ID";
    MILESTONE_INGEST_COLUMNS["INGEST_LAKE_OUT_ID"] = "LAKE_OUT_ID";
    MILESTONE_INGEST_COLUMNS["INGEST_LAKE_DIGEST"] = "LAKE_DIGEST";
    MILESTONE_INGEST_COLUMNS["INGEST_LAKE_FROM"] = "LAKE_FROM";
    MILESTONE_INGEST_COLUMNS["INGEST_LAKE_THRU"] = "LAKE_THRU";
})(MILESTONE_INGEST_COLUMNS || (MILESTONE_INGEST_COLUMNS = {}));
// Query
export const QUERY_PROFILE_TAG_CLASS = 'class';
export const QUERY_PROFILE_PATH = 'meta::pure::profiles::query';
//# sourceMappingURL=MetaModelConst.js.map