import { type Address } from 'viem';
import type { VaultInfoFull, Cluster } from './types.js';
/**
 * Derives clusters from vault data using pure graph traversal.
 *
 * Algorithm:
 * 1. Build a bidirectional adjacency list from all active collateralLTVInfo
 *    entries. If vault A lists vault B (borrowLTV > 0), edges A↔B are added.
 * 2. BFS from each unvisited vault to find connected components.
 * 3. Each connected component = one cluster (cross-margin pool).
 * 4. Governor is derived as metadata (majority non-zero governorAdmin).
 *
 * This does NOT pre-filter by governor. Two vaults with different governors
 * that reference each other will end up in the same cluster, which is
 * correct — the collateral graph defines the pool boundary, not governance.
 *
 * @param vaultData - map of vault address → VaultInfoFull
 * @param includeSingletons - include single-vault clusters (default false)
 */
export declare function deriveClusters(vaultData: Map<Address, VaultInfoFull>, includeSingletons?: boolean): Cluster[];
//# sourceMappingURL=cluster.d.ts.map