/**
 * Attribute Collection — Marker Detection & Attribute Attachment
 *
 * Walks module statements, detects attribute markers and descriptors,
 * builds per-declaration attribute maps, and validates attribute targets.
 */
import { Diagnostic } from "../../../types/diagnostic.js";
import { IrModule, IrAttribute } from "../../types.js";
/**
 * Collected attribute information for a module.
 */
export type CollectedAttributes = {
    readonly removedStatementIndices: ReadonlySet<number>;
    readonly classAttributes: ReadonlyMap<number, readonly IrAttribute[]>;
    readonly interfaceAttributes: ReadonlyMap<number, readonly IrAttribute[]>;
    readonly classCtorAttributes: ReadonlyMap<number, readonly IrAttribute[]>;
    readonly classMethodAttributes: ReadonlyMap<number, ReadonlyMap<string, readonly IrAttribute[]>>;
    readonly classPropAttributes: ReadonlyMap<number, ReadonlyMap<string, readonly IrAttribute[]>>;
    readonly interfaceMethodAttributes: ReadonlyMap<number, ReadonlyMap<string, readonly IrAttribute[]>>;
    readonly interfacePropAttributes: ReadonlyMap<number, ReadonlyMap<string, readonly IrAttribute[]>>;
    readonly functionAttributes: ReadonlyMap<number, readonly IrAttribute[]>;
};
/**
 * Collect attribute markers and descriptors from a module.
 * Returns the collected attribute maps and indices of statements to remove.
 */
export declare const collectModuleAttributes: (module: IrModule, diagnostics: Diagnostic[]) => CollectedAttributes | undefined;
//# sourceMappingURL=marker-collection.d.ts.map