import { BOND_FACTORY_ADDRESS, CRYPTO_CURRENCY_FACTORY_ADDRESS, EQUITY_FACTORY_ADDRESS, FUND_FACTORY_ADDRESS, STABLE_COIN_FACTORY_ADDRESS, } from '../contracts'; export interface AssetDetailConfig { name: string; pluralName: string; description: string; factoryAddress: string; queryKey: 'bond' | 'cryptocurrency' | 'equity' | 'fund' | 'stablecoin'; urlSegment: string; color: string; theGraphTypename: 'Bond' | 'CryptoCurrency' | 'Equity' | 'Fund' | 'StableCoin'; features: { ERC20Blocklist: boolean; ERC20Custodian: boolean; ERC20Pausable: boolean; ERC20Burnable: boolean; }; } type AssetConfig = Record; export const assetConfig = { bond: { name: 'Bond', pluralName: 'Bonds', description: 'Digital assets representing a debt obligation', factoryAddress: BOND_FACTORY_ADDRESS, queryKey: 'bond', urlSegment: 'bonds', color: '#8b5cf6', theGraphTypename: 'Bond', features: { ERC20Blocklist: true, ERC20Custodian: true, ERC20Pausable: true, ERC20Burnable: true, }, }, cryptocurrency: { name: 'Cryptocurrency', pluralName: 'Cryptocurrencies', description: 'Digital assets representing a fully decentralized currency', factoryAddress: CRYPTO_CURRENCY_FACTORY_ADDRESS, queryKey: 'cryptocurrency', urlSegment: 'cryptocurrencies', color: '#2563eb', theGraphTypename: 'CryptoCurrency', features: { ERC20Blocklist: false, ERC20Custodian: false, ERC20Pausable: false, ERC20Burnable: false, }, }, equity: { name: 'Equity', pluralName: 'Equities', description: 'Digital assets representing ownership in a company', factoryAddress: EQUITY_FACTORY_ADDRESS, queryKey: 'equity', urlSegment: 'equities', color: '#4ade80', theGraphTypename: 'Equity', features: { ERC20Blocklist: true, ERC20Custodian: true, ERC20Pausable: true, ERC20Burnable: true, }, }, fund: { name: 'Fund', pluralName: 'Funds', description: 'Digital assets representing a fund', factoryAddress: FUND_FACTORY_ADDRESS, queryKey: 'fund', urlSegment: 'funds', color: '#10b981', theGraphTypename: 'Fund', features: { ERC20Blocklist: true, ERC20Custodian: true, ERC20Pausable: true, ERC20Burnable: true, }, }, stablecoin: { name: 'Stablecoin', pluralName: 'Stablecoins', description: 'Digital assets pegged to a stable asset like USD', factoryAddress: STABLE_COIN_FACTORY_ADDRESS, queryKey: 'stablecoin', urlSegment: 'stablecoins', color: '#0ea5e9', theGraphTypename: 'StableCoin', features: { ERC20Blocklist: true, ERC20Custodian: true, ERC20Pausable: true, ERC20Burnable: true, }, }, } as const satisfies AssetConfig; export const allAssetQueryKeys = Object.values(assetConfig).map((asset) => asset.queryKey);