import type { ComputedNode, DomainNode, ExprNode, ParamNode, TypeDeclNode, TypeExprNode } from "../parser/ast.js"; import type { SpreadOperandClassification } from "./object-contribution-types.js"; export type { SpreadOperandClassification } from "./object-contribution-types.js"; export { mayYieldArrayExpr } from "./object-contribution-types.js"; export type TypeEnv = Map; export type ComparableSurfaceClass = "primitive" | "nonprimitive" | "unknown"; export interface DomainTypeSymbols { stateTypes: Map; contextTypes: Map; computedDecls: Map; typeDefs: Map; computedTypeCache: Map; computedTypeInFlight: Set; } export declare function collectDomainTypeSymbols(domain: DomainNode): DomainTypeSymbols; export declare function createActionTypeEnv(params: readonly ParamNode[]): TypeEnv; export declare function inferExprType(expr: ExprNode, env: TypeEnv, symbols: DomainTypeSymbols): TypeExprNode | null; export declare function classifyComparableExpr(expr: ExprNode, env: TypeEnv, symbols: DomainTypeSymbols): ComparableSurfaceClass; export declare function classifyComparableType(typeExpr: TypeExprNode | null, symbols: DomainTypeSymbols): ComparableSurfaceClass; export declare function resolveType(typeExpr: TypeExprNode | null, symbols: DomainTypeSymbols, seen?: Set): TypeExprNode | null; export declare function getPropertyType(typeExpr: TypeExprNode | null, property: string, symbols: DomainTypeSymbols): TypeExprNode | null; export declare function getIndexType(typeExpr: TypeExprNode | null, symbols: DomainTypeSymbols): TypeExprNode | null; export declare function getArrayElementType(typeExpr: TypeExprNode | null, symbols: DomainTypeSymbols): TypeExprNode | null; export declare function isPrimitiveEntityIdType(typeExpr: TypeExprNode, symbols: DomainTypeSymbols): boolean; export declare function isNullType(typeExpr: TypeExprNode): boolean; export declare function classifySpreadOperandType(typeExpr: TypeExprNode | null, symbols: DomainTypeSymbols): SpreadOperandClassification;