export const VALIDATION_RULES = {
    STRUCTURE: "structure", // Enforces component mapping structure via schema (e.g. mapping required)
    METADATA: "metadata", // Enforces token metadata via schema (type + attributes.subtype/description)
    REFERENCES: "references", // Enables reference validation logic (refExists keyword)
    OVERRIDES: "overrides", // Enables override-vs-foundation mapping validation (overrideContext keyword)
    VALUES: "values" // Enables token value content validation against platform/subtype rules
};
export const ERROR_TYPES = Object.freeze({
    INVALID_REFERENCE: "reference error",
    INVALID_FIELD: "invalid field",
    MISSING_FIELD: "missing field",
    INVALID_VALUE: "invalid value",
    INVALID_STRUCTURE: "invalid structure",
    INVALID_JSON: "invalid json",
    BUILD_ERROR: "build error"
});
export const TOKEN_TYPES = Object.freeze({
    GLOBAL: "global",
    COMPONENT: "component"
});
export const VALIDATION_SCOPE = Object.freeze({
    FOUNDATION: "foundation",
    PROJECT: "project"
});
export const FOLDER_TYPE = Object.freeze({
    WEB: "web",
    MOBILE: "mobile"
});
export const TOKEN_VALUE_TYPES = ["color", "radius", "font", "space"];
//Defines allowed properties for specific JSON paths to produce contextual error messages for invalid structure validations.
export const ALLOWED_PROPERTIES_BY_CONTEXT = [
    {
        match: path => path && !path.includes("."), // component root
        allowed: ["meta", "mapping", "appearances"]
    },
    {
        match: path => path.endsWith(".attributes"),
        allowed: ["subtype", "description"]
    },
    {
        match: path => path.endsWith(".appearances"),
        allowed: ["mapping", "states", "variantGroups"]
    },
    {
        match: path => path.endsWith(".states"),
        allowed: null // dynamic state names
    }
];
export const VALUE_RELATED_KEYWORDS = new Set(["type", "enum", "const", "minimum", "maximum", "minLength", "maxLength", "pattern"]);
export const PLATFORM = {
    WEB: "web",
    MOBILE: "native_mobile",
    BOTH: "both"
};
//# sourceMappingURL=constants.js.map