UNPKG

@wuwei-labs/srsly

Version:
125 lines 4.02 kB
/** * @purpose Centralized program and token addresses for different networks * * Single source of truth for all Solana program addresses used by SRSLY. * Supports mainnet-beta, devnet, and localnet environments. */ import { SRSLY_PROGRAM_ADDRESS } from '../generated/codama'; import { ANTEGEN_THREAD_PROGRAM } from '../pda/constants'; /** * Genesis hash constants — canonical chain identifiers */ export const MAINNET_GENESIS = '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d'; export const DEVNET_GENESIS = 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG'; export const ATLASNET_GENESIS = 'Ccod9gttTtZWqCeMgyTW3iCSoPLjkptAGsBUeP2CpchR'; const ALIAS_TO_GENESIS = { mainnet: MAINNET_GENESIS, atlasnet: ATLASNET_GENESIS, holosim: ATLASNET_GENESIS, localnet: ATLASNET_GENESIS, }; /** * Antegen program address (same across all networks) */ const ANTEGEN_PROGRAM = ANTEGEN_THREAD_PROGRAM; /** * Mainnet addresses (production Star Atlas) */ const MAINNET_ADDRESSES = { srsly: SRSLY_PROGRAM_ADDRESS, sage: 'SAGE2HAwep459SNq61LHvjxPk4pLPEJLoMETef7f7EE', antegen: ANTEGEN_PROGRAM, atlasMint: 'ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx', profileFaction: 'pFACSRuobDmvfMKq1bAzwj27t6d2GJhSCHb1VcfnRmq', gameId: 'GAMEC7U7cqmFFaRow33j1LwuV8u4YhAS1mJ5Dqjnar2k', }; /** * Atlasnet addresses (Star Atlas testnet/devnet) */ const ATLASNET_ADDRESSES = { srsly: SRSLY_PROGRAM_ADDRESS, sage: 'SAgEeT8u14TE69JXtanGSgNkEdoPUcLabeyZD2uw8x9', antegen: ANTEGEN_PROGRAM, atlasMint: '6PhneWhbN4R3nFutrRUVnE3sNgRsFS6yPrjRC29mMWnv', profileFaction: 'pFACzkX2eSpAjDyEohD6i3VRJvREtH9ynbtM1DwVFsj', gameId: 'GAmEqxNYaUqLmLkXGhzUvv4Ud8FotnWPLj6ChdBkUh9j', }; /** * Program address sets keyed by genesis hash (source of truth) */ const PROGRAM_ADDRESS_SETS = { [MAINNET_GENESIS]: MAINNET_ADDRESSES, [DEVNET_GENESIS]: ATLASNET_ADDRESSES, [ATLASNET_GENESIS]: ATLASNET_ADDRESSES, }; /** * Resolve a program set input (alias or genesis hash) to a genesis hash * * @param programSet - Named alias or genesis hash string * @returns Genesis hash string */ export function resolveGenesisHash(programSet) { // Check if it's a named alias if (programSet in ALIAS_TO_GENESIS) { return ALIAS_TO_GENESIS[programSet]; } // Otherwise treat as genesis hash directly return programSet; } /** * Get addresses for a specific program set * * @param programSet - Program set identifier ('mainnet', 'atlasnet', or 'localnet') * @returns Program-specific addresses * @throws Error if program set is unknown * * @example * ```typescript * const addresses = getProgramAddresses('mainnet'); * console.log(addresses.atlasMint); // 'ATLASXmbP...' * * const testnetAddresses = getProgramAddresses('atlasnet'); * console.log(testnetAddresses.sage); // 'SAGEqqFew...' * ``` */ export function getProgramAddresses(programSet) { const genesisHash = resolveGenesisHash(programSet); const addresses = PROGRAM_ADDRESS_SETS[genesisHash]; if (!addresses) { // Unknown genesis hash — fall back to devnet addresses return PROGRAM_ADDRESS_SETS[DEVNET_GENESIS]; } return addresses; } /** * @deprecated Use getProgramAddresses instead */ export function getNetworkAddresses(network) { return getProgramAddresses(network); } /** * Check if a program set is valid * * @param programSet - Program set to validate * @returns True if program set is supported */ export function isValidProgramSet(programSet) { // Accept named aliases if (programSet in ALIAS_TO_GENESIS) return true; // Accept known genesis hashes if (programSet in PROGRAM_ADDRESS_SETS) return true; return false; } /** * @deprecated Use isValidProgramSet instead */ export function isValidNetwork(network) { return isValidProgramSet(network); } /** * Re-export individual network addresses for direct access */ export { MAINNET_ADDRESSES, ATLASNET_ADDRESSES }; //# sourceMappingURL=addresses.js.map