import { deepFreeze } from './freeze';
import type { V3DeploymentName } from './types';

/**
 * SDK modules selected from the authoritative supported-v3-modules.json closure.
 * This file is generated by scripts/generate-supported-v3-modules.cjs.
 */
export const V3_SUPPORTED_MODULES = deepFreeze({
  accountabilityBond: {
    solidityModule: 'AccountabilityBondV3Safe',
    sourcePath: 'v3-src/contracts/bonds/AccountabilityBondV3Safe.sol',
  },
  partnershipBond: {
    solidityModule: 'PartnershipBondV3Safe',
    sourcePath: 'v3-src/contracts/bonds/PartnershipBondV3Safe.sol',
  },
  governance: {
    solidityModule: 'MultisigGovernanceV3',
    sourcePath: 'v3-src/contracts/governance/MultisigGovernanceV3.sol',
  },
  mandateRegistry: {
    solidityModule: 'MandateRegistryV3',
    sourcePath: 'v3-src/contracts/mandate/MandateRegistryV3.sol',
  },
} as const satisfies Record<V3DeploymentName, {
  readonly solidityModule: string;
  readonly sourcePath: string;
}>);

export const V3_SUPPORTED_DEPLOYMENT_NAMES =
  deepFreeze(Object.keys(V3_SUPPORTED_MODULES) as V3DeploymentName[]);
