"use strict";
/**
 * Comprehensive Join Type System for DataPilot Join Intelligence Engine
 * Phase 1: Foundation Architecture - Core type definitions
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.JoinErrorCode = exports.JoinAnalysisError = exports.JoinStrategy = exports.JoinType = exports.CardinalityType = exports.DataType = void 0;
var DataType;
(function (DataType) {
    DataType["STRING"] = "string";
    DataType["INTEGER"] = "integer";
    DataType["FLOAT"] = "float";
    DataType["DATE"] = "date";
    DataType["DATETIME"] = "datetime";
    DataType["BOOLEAN"] = "boolean";
    DataType["UUID"] = "uuid";
    DataType["EMAIL"] = "email";
    DataType["PHONE"] = "phone";
    DataType["URL"] = "url";
})(DataType || (exports.DataType = DataType = {}));
var CardinalityType;
(function (CardinalityType) {
    CardinalityType["ONE_TO_ONE"] = "1:1";
    CardinalityType["ONE_TO_MANY"] = "1:N";
    CardinalityType["MANY_TO_ONE"] = "N:1";
    CardinalityType["MANY_TO_MANY"] = "N:M";
})(CardinalityType || (exports.CardinalityType = CardinalityType = {}));
var JoinType;
(function (JoinType) {
    JoinType["INNER"] = "INNER";
    JoinType["LEFT"] = "LEFT";
    JoinType["RIGHT"] = "RIGHT";
    JoinType["FULL_OUTER"] = "FULL_OUTER";
    JoinType["CROSS"] = "CROSS";
})(JoinType || (exports.JoinType = JoinType = {}));
var JoinStrategy;
(function (JoinStrategy) {
    JoinStrategy["EXACT_MATCH"] = "EXACT_MATCH";
    JoinStrategy["FUZZY_MATCH"] = "FUZZY_MATCH";
    JoinStrategy["RANGE_OVERLAP"] = "RANGE_OVERLAP";
    JoinStrategy["SEMANTIC_MATCH"] = "SEMANTIC_MATCH";
    JoinStrategy["PATTERN_MATCH"] = "PATTERN_MATCH";
    JoinStrategy["STATISTICAL_MATCH"] = "STATISTICAL_MATCH";
})(JoinStrategy || (exports.JoinStrategy = JoinStrategy = {}));
// Error handling
class JoinAnalysisError extends Error {
    code;
    details;
    constructor(message, code, details) {
        super(message);
        this.code = code;
        this.details = details;
        this.name = 'JoinAnalysisError';
    }
}
exports.JoinAnalysisError = JoinAnalysisError;
var JoinErrorCode;
(function (JoinErrorCode) {
    JoinErrorCode["INVALID_TABLE"] = "INVALID_TABLE";
    JoinErrorCode["INCOMPATIBLE_SCHEMAS"] = "INCOMPATIBLE_SCHEMAS";
    JoinErrorCode["MEMORY_LIMIT_EXCEEDED"] = "MEMORY_LIMIT_EXCEEDED";
    JoinErrorCode["TIMEOUT"] = "TIMEOUT";
    JoinErrorCode["CIRCULAR_DEPENDENCY"] = "CIRCULAR_DEPENDENCY";
    JoinErrorCode["NO_JOIN_CANDIDATES"] = "NO_JOIN_CANDIDATES";
})(JoinErrorCode || (exports.JoinErrorCode = JoinErrorCode = {}));
//# sourceMappingURL=types.js.map