/**
 * IR Type System
 *
 * Explicitly typed, ownership-aware intermediate representation
 */
// ============================================================================
// Type System
// ============================================================================
export var Ownership;
(function (Ownership) {
    /** Unique ownership - exclusive access */
    Ownership["Own"] = "own";
    /** Shared ownership - reference counted */
    Ownership["Share"] = "share";
    /** Borrowed reference - non-owning pointer */
    Ownership["Use"] = "use";
    /** Stack value - no ownership semantics */
    Ownership["Value"] = "value";
})(Ownership || (Ownership = {}));
export var PrimitiveType;
(function (PrimitiveType) {
    PrimitiveType["Number"] = "number";
    PrimitiveType["Integer"] = "integer";
    PrimitiveType["Integer53"] = "integer53";
    PrimitiveType["String"] = "string";
    PrimitiveType["Boolean"] = "boolean";
    PrimitiveType["Void"] = "void";
    PrimitiveType["Never"] = "never";
})(PrimitiveType || (PrimitiveType = {}));
// ============================================================================
// Operators
// ============================================================================
export var BinaryOp;
(function (BinaryOp) {
    BinaryOp["Add"] = "+";
    BinaryOp["Sub"] = "-";
    BinaryOp["Mul"] = "*";
    BinaryOp["Div"] = "/";
    BinaryOp["Mod"] = "%";
    BinaryOp["Eq"] = "==";
    BinaryOp["Ne"] = "!=";
    BinaryOp["Lt"] = "<";
    BinaryOp["Le"] = "<=";
    BinaryOp["Gt"] = ">";
    BinaryOp["Ge"] = ">=";
    BinaryOp["And"] = "&&";
    BinaryOp["Or"] = "||";
})(BinaryOp || (BinaryOp = {}));
export var UnaryOp;
(function (UnaryOp) {
    UnaryOp["Not"] = "!";
    UnaryOp["Neg"] = "-";
    UnaryOp["Plus"] = "+";
    UnaryOp["Typeof"] = "typeof";
    UnaryOp["Await"] = "await";
})(UnaryOp || (UnaryOp = {}));
//# sourceMappingURL=types.js.map