import type { ParsedContract } from '../parsers/solidity-parser.js';
import type { SlitherFunctionSummary } from '../parsers/slither.js';
import type { StorageLayout } from '../parsers/solc.js';
import type { StateVariable } from '../types/index.js';
import { z } from 'zod';
import { StorageCollisionSchema } from '../core/schema.js';
export type StorageCollision = z.infer<typeof StorageCollisionSchema>;
/**
 * Extract state variables from parsed contracts, enriched with Slither and solc data.
 */
export declare function extractStateVariables(contracts: ParsedContract[], fileMap: Map<string, string>, slitherSummary: SlitherFunctionSummary[] | null, storageLayout: StorageLayout | null): {
    variables: StateVariable[];
    storageLayoutSource: 'compiler-artifact' | null;
    storageCollisions: StorageCollision[];
};
/**
 * Detect storage slot collisions.
 *
 * Two checks are performed:
 *   1. **Intra-contract:** the same (slot, offset) listed twice within a contract's
 *      layout — solc should never emit this, so a hit usually means the artifact
 *      was hand-edited or a build cache is stale.
 *   2. **Inheritance divergence:** a parent contract's slot 0..N has a different
 *      label than the child's at the same slot, which would mean the child
 *      overrode a parent's storage layout incompatibly. With well-formed solc
 *      output this should never fire; it catches manually packed layouts and
 *      upgrade-safety regressions.
 *
 * Each collision is recorded with a Critical severity so it surfaces on the
 * dashboard's attack-surface view.
 */
export declare function detectStorageCollisions(contracts: ParsedContract[], storageLayout: StorageLayout | null): StorageCollision[];
//# sourceMappingURL=state-variables.d.ts.map