/** * Mutable storage detection — types, utilities, and property-owner resolution. * * Extracted from mutable-storage-detection.ts — contains type definitions, * scope management, class/interface map builders, and property-owner chain * traversal helpers used by the expression visitor and statement visitors. */ import { IrClassDeclaration, IrExpression, IrInterfaceDeclaration, IrModule, IrPattern, IrStatement } from "@tsonic/frontend"; import { type EmitterContext } from "../../types.js"; export type MutableStorageAnalysis = { readonly mutableModuleBindings: ReadonlySet; readonly mutablePropertySlots: ReadonlySet; }; export type ScopeStack = Set[]; export type VisitStatementFn = (stmt: IrStatement, context: EmitterContext, classes: ReadonlyMap, interfaces: ReadonlyMap, topLevelConstBindings: ReadonlySet, mutableModuleBindings: Set, mutablePropertySlots: Set, scopes: ScopeStack) => void; export declare const propertySlotKey: (typeName: string, propertyName: string) => string; export declare const collectPatternNames: (pattern: IrPattern) => readonly string[]; export declare const collectTopLevelConstBindings: (module: IrModule) => ReadonlySet; export declare const buildClassMap: (module: IrModule) => ReadonlyMap; export declare const buildInterfaceMap: (module: IrModule) => ReadonlyMap; export declare const pushScope: (scopes: ScopeStack, names?: readonly string[]) => void; export declare const popScope: (scopes: ScopeStack) => void; export declare const declarePattern: (pattern: IrPattern, scopes: ScopeStack) => void; export declare const checkArrayMutationOnCall: (expr: IrExpression, context: EmitterContext, classes: ReadonlyMap, interfaces: ReadonlyMap, topLevelConstBindings: ReadonlySet, mutableModuleBindings: Set, mutablePropertySlots: Set, scopes: ScopeStack) => void; export declare const isMutablePropertySlot: (declaringTypeName: string | undefined, propertyName: string, context: EmitterContext) => boolean; //# sourceMappingURL=mutable-storage-helpers.d.ts.map