import { ASTNode } from "../ast/types.js"; export type VariableId = number; export type TypeConstraint = { defined: boolean; variables: { [key: VariableId]: number; }; parameters: { [key: number]: number; }; units: { [key: string]: number; }; }; export type VariableUnitTypes = { [key: VariableId]: { [key: string]: number; }; }; type Scope = { [key: string]: VariableId; }; type ScopeInfo = { stack: Scope[]; variableNodes: ASTNode[]; functions: [string, [TypeConstraint[], TypeConstraint]][]; }; declare function unitTypeToString(unitTypes: { [key: string]: number; }): string; declare function getIdentifierName(node: ASTNode): string; declare function findTypeConstraints(node: ASTNode): [[TypeConstraint, ASTNode][], ScopeInfo]; declare function checkTypeConstraints(typeConstraints: [TypeConstraint, ASTNode][], scopes: ScopeInfo): VariableUnitTypes; declare function putUnitTypesOnAST(variableTypes: VariableUnitTypes, scopes: ScopeInfo): undefined; export declare function unitTypeCheck(node: ASTNode): void; export declare const exportedForTesting: { checkTypeConstraints: typeof checkTypeConstraints; findTypeConstraints: typeof findTypeConstraints; getIdentifierName: typeof getIdentifierName; putUnitTypesOnAST: typeof putUnitTypesOnAST; unitTypeToString: typeof unitTypeToString; }; export {}; //# sourceMappingURL=unitTypeChecker.d.ts.map