import { cloneDeep } from 'lodash-es' import { STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_V4 } from '@/utils/ids' import { LP_TOKENS, TokenInfo, TOKENS } from '@/utils/tokens' export interface FarmInfo { name: string lp: TokenInfo reward: TokenInfo rewardB?: TokenInfo isStake: boolean fusion: boolean legacy: boolean dual: boolean version: number programId: string poolId: string poolAuthority: string poolLpTokenAccount: string poolRewardTokenAccount: string poolRewardTokenAccountB?: string user?: object } export function getFarmByLpMintAddress(lpMintAddress: string): FarmInfo | undefined { const farm = FARMS.find((farm) => farm.lp.mintAddress === lpMintAddress) if (farm) { return cloneDeep(farm) } return farm } export function getFarmByRewardMintAddress(lpMintAddress: string): FarmInfo | undefined { const farm = FARMS.find((farm) => farm.reward.mintAddress === lpMintAddress) if (farm) { return cloneDeep(farm) } return farm } export function getFarmByPoolId(poolId: string): FarmInfo | undefined { const farm = FARMS.find((farm) => farm.poolId === poolId) if (farm) { return cloneDeep(farm) } return farm } export function getAddressForWhat(address: string) { // dont use forEach for (const farm of FARMS) { for (const [key, value] of Object.entries(farm)) { // if (key === 'lp') { // if (value.mintAddress === address) { // return { key: 'poolId', poolId: farm.poolId } // } // } else if (key === 'reward') { // if (value.mintAddress === address) { // return { key: 'rewardMintAddress', poolId: farm.poolId } // } // } else if (value === address) { return { key, poolId: farm.poolId } } } } return {} } export const FARMS_OLD: FarmInfo[] = [ // v3 farm { name: 'RAY-USDC', lp: { ...LP_TOKENS['RAY-USDC-V3'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: true, dual: false, version: 3, programId: STAKE_PROGRAM_ID, poolId: '8nEWqxeDNZ2yo1izbPzY4nwR55isBZRaQk7CM8ntwUwR', poolAuthority: '6vQGZLsHgpJdqh1ER7q2q6mjZ43QwzhtTofTzb2sUhNh', poolLpTokenAccount: '77ujS15hjUfFZkM8QAw4HMLvMGZg95Gcm6ixjA1bnk3M', // lp vault poolRewardTokenAccount: '3ejmkn5HpXR9KdVWkai1Ngo87sQSUyKXrx8wSakipkno' // reward vault }, { name: 'RAY-SRM', lp: { ...LP_TOKENS['RAY-SRM-V3'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: true, dual: false, version: 3, programId: STAKE_PROGRAM_ID, poolId: 'HwEgvS79S53yzYUTRHShU6EuNmhR3WTX5tTZPUzBmwky', poolAuthority: '9B3XWm89zX7NwaBB8VmT5mrWvxVpd9eyfQMeqkuLkcCF', poolLpTokenAccount: 'F4zXXzqkyT1GP5CVdEgC7qTcDfR8ox5Akm6RCbBdBsRp', // lp vault poolRewardTokenAccount: 'FW7omPaCCvgBgUFKwvwU2jf1w1wJGjDrJqurr3SeXn14' // reward vault }, { name: 'RAY-SOL', lp: { ...LP_TOKENS['RAY-SOL-V3'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: true, dual: false, version: 3, programId: STAKE_PROGRAM_ID, poolId: 'ECqG3sxwJiq9TTYsRBd7fPGsBKYF4fyogo6Df7c13qdJ', poolAuthority: '4Wf4om12g9xzEeeD139ffCuXn4W2huMcXziiSAzf7Nig', poolLpTokenAccount: '9kWnkQtMAW2bzKeLQsTdan1rEoypDHaAVnZRcoBPDBfQ', // lp vault poolRewardTokenAccount: '8z4kQbgQFe4zXE4NSozWJTJV14gD4evNq4CKn5ryB6S3' // reward vault }, { name: 'RAY-ETH', lp: { ...LP_TOKENS['RAY-ETH-V3'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: true, dual: false, version: 3, programId: STAKE_PROGRAM_ID, poolId: 'CYKDTwojSLVFEShB3tcTTfMjtBxUNtYfCTM4PiMFGkio', poolAuthority: 'Azmucec2jdgWagFkbnqmwYcsrtKPf1v1kcM95v6s1zxu', poolLpTokenAccount: 'EncPBQhpc5KLmcgRD2PutQz7wBBNQkVN2s8jjFWEw9no', // lp vault poolRewardTokenAccount: '8q8BHw7fP7mitLrb2jzw78qcSEgCvM7GTB5PzbSQobUt' // reward vault }, // v3 { name: 'RAY-WUSDT', lp: { ...LP_TOKENS['RAY-WUSDT-V3'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: true, dual: false, version: 3, programId: STAKE_PROGRAM_ID, poolId: '6d3vDYvk6VFVacEAGA1NDyxkQPRiNxXQRkeKpTPMJwe4', poolAuthority: 'EcPc2KUDFMyPNAVPE6PsMkzneBFKNqRjUhfhyM2da9go', poolLpTokenAccount: 'Gx4kLpTirc3Lr3GEYojYt1zUmsCcWajjBZTFVA3tzyDg', // lp vault poolRewardTokenAccount: 'J144vsbPdLa9V6JpvGFH63bQw8QhQckUNe48YjPKwcZo' // reward vault }, // { // name: 'RAY-USDT', // lp: { ...LP_TOKENS['RAY-USDT-V4'] }, // reward: { ...TOKENS.RAY }, // isStake: false, // fusion: false, // legacy: false, // dual: false, // version: 3, // programId: STAKE_PROGRAM_ID, // poolId: 'AvbVWpBi2e4C9HPmZgShGdPoNydG4Yw8GJvG9HUcLgce', // poolAuthority: '8JYVFy3pYsPSpPRsqf43KSJFnJzn83nnRLQgG88XKB8q', // poolLpTokenAccount: '4u4AnMBHXehdpP5tbD6qzB5Q4iZmvKKR5aUr2gavG7aw', // lp vault // poolRewardTokenAccount: 'HCHNuGzkqSnw9TbwpPv1gTnoqnqYepcojHw9DAToBrUj' // reward vault // }, // v2 { name: 'RAY-WUSDT', lp: { ...LP_TOKENS['RAY-WUSDT'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: true, dual: false, version: 2, programId: STAKE_PROGRAM_ID, poolId: '5w3itB5PVAPAiPFpBcMyGZJWukmcuRtwFRkQJF3WzHdj', poolAuthority: '4qgEHMtCAA4Z3rY4C1ihz9JHETHFhQVqj81Q1qyB83WP', poolLpTokenAccount: 'n1gotGPqeUxJnA4yE7QCCsNG8AVqQ1HuATkAhAfVMVV', // lp vault poolRewardTokenAccount: 'h8uQ293dPdJd7qFRFE1pvMbpFmxrtD64QaxUWwis4Wv' // reward vault }, { name: 'RAY-USDC', lp: { ...LP_TOKENS['RAY-USDC'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: true, dual: false, version: 2, programId: STAKE_PROGRAM_ID, poolId: '3j7qWosyu3cVNgbwdWRxEf4SxJKNWoWqgpAEn4RLpMrR', poolAuthority: 'BZhcMxjRy9oXSgghLN52uhsML5ooXS377yTJhkw96bYX', poolLpTokenAccount: '6qsk4PmATtiu132YJuUgVt4zekbTYV3xRZWxoc1rAg9U', // lp vault poolRewardTokenAccount: 'Aucgi2G2ufXTGGYf2ng3ZyQXLu6RH6ioL1R7mGfhUcbQ' // reward vault }, { name: 'RAY-SRM', lp: { ...LP_TOKENS['RAY-SRM'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: true, dual: false, version: 2, programId: STAKE_PROGRAM_ID, poolId: 'GLQwyMF1txnAdEnoYuPTPsWdXqUuxgTMsWEV38njk48C', poolAuthority: '5ddsMftKDoaT5qHnHKnfkGCexJhiaNz1E4mMagy6qMku', poolLpTokenAccount: 'HFYPGyBW5hsQnrtQntg4d6Gzyg6iaehVTAVNqQ6f5f28', // lp vault poolRewardTokenAccount: 'ETwFtP1dYCbvbARNPfKuJFxoGFDTTsqB6j3pRquPE7Fq' // reward vault }, // stake { name: 'RAY', lp: { ...TOKENS.RAY }, reward: { ...TOKENS.RAY }, isStake: true, fusion: false, legacy: false, dual: false, version: 2, programId: STAKE_PROGRAM_ID, poolId: '4EwbZo8BZXP5313z5A2H11MRBP15M5n6YxfmkjXESKAW', poolAuthority: '4qD717qKoj3Sm8YfHMSR7tSKjWn5An817nArA6nGdcUR', poolLpTokenAccount: '8tnpAECxAT9nHBqR1Ba494Ar5dQMPGhL31MmPJz1zZvY', // lp vault poolRewardTokenAccount: 'BihEG2r7hYax6EherbRmuLLrySBuSXx4PYGd9gAsktKY' // reward vault }, // Reward double { name: 'FIDA-RAY', lp: { ...LP_TOKENS['FIDA-RAY-V4'] }, reward: { ...TOKENS.RAY }, rewardB: { ...TOKENS.FIDA }, isStake: false, fusion: true, legacy: false, dual: true, version: 4, programId: STAKE_PROGRAM_ID_V4, poolId: '8rAdapvcC5vYNLXzChMgt56s6HCQGE6Lbo469g3WRTUh', poolAuthority: 'EcCKf3mgPtL6dNNAVG4gQQtLkAoTAUdf5vzFukkrviWq', poolLpTokenAccount: 'H6kzwNNg9zbgC1YBjvCN4BdebtA4NusvgUhUSDZoz8rP', // lp vault poolRewardTokenAccount: '7vnPTB2HAXFUAV5iiVZTNHgAnVYjgXcdumbbqfeK6ugp', // reward vault A poolRewardTokenAccountB: 'EGHdQm9KGLz6nw7W4rK13DyAMMJcGP9RpzCJaXiq75kQ' // reward vault B }, { name: 'OXY-RAY', lp: { ...LP_TOKENS['OXY-RAY-V4'] }, reward: { ...TOKENS.RAY }, rewardB: { ...TOKENS.OXY }, isStake: false, fusion: true, legacy: false, dual: true, version: 4, programId: STAKE_PROGRAM_ID_V4, poolId: '7Hug9fKfTrasG3hHonXTfSnvv37mDeyoBHbVwyDjw693', poolAuthority: 'CcD7KXVhjoeFpbkXeBgPpZChafEfTZ4zJL47LqmKdqwz', poolLpTokenAccount: 'GtXoFnVRATaasBP6sroNaC54uLQfVAwGXsfKzgFqNiUc', // lp vault poolRewardTokenAccount: 'GKC7BcGs1515CQx6hiK562u29dFQxBw8HWwJUxqi7xf1', // reward vault A poolRewardTokenAccountB: 'DXDjRiC7EUUh9cj93tgBtX2jRkmnwtCMEAQD9GrYK2f6' // reward vault B }, { name: 'MAPS-RAY', lp: { ...LP_TOKENS['MAPS-RAY-V4'] }, reward: { ...TOKENS.RAY }, rewardB: { ...TOKENS.MAPS }, isStake: false, fusion: true, legacy: false, dual: true, version: 4, programId: STAKE_PROGRAM_ID_V4, poolId: 'Chb6atEWGmH2NitCqrCEMHB8uKWYQiiVaBnmJQDudm87', poolAuthority: 'BcmgQZXCDPCduv3reT8LDQNqvGeGMZtFhBxyLYdrnCjE', poolLpTokenAccount: '5uaBAwu1Sff58KNKGTwfacsjsrMU3wg6jtGtMWwiZd5B', // lp vault poolRewardTokenAccount: '4LVikvk3gZEHaTUNh7L8bsx5By6NNnkqpKfcdJTWTD7Z', // reward vault A poolRewardTokenAccountB: '3UWGpEe2NLD9oWPW1zdXGZRCvJxkNSC2puUWooNEugdS' // reward vault B }, { name: 'RAY-SOL', lp: { ...LP_TOKENS['RAY-SOL-V4'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: false, dual: false, version: 3, programId: STAKE_PROGRAM_ID, poolId: 'HUDr9BDaAGqi37xbQHzxCyXvfMCKPTPNF8g9c9bPu1Fu', poolAuthority: '9VbmvaaPeNAke2MAL3h2Fw82VubH1tBCzwBzaWybGKiG', poolLpTokenAccount: 'A4xQv2BQPB1WxsjiCC7tcMH7zUq255uCBkevFj8qSCyJ', // lp vault poolRewardTokenAccount: '6zA5RAQYgazm4dniS8AigjGFtRi4xneqjL7ehrSqCmhr' // reward vault A }, { name: 'RAY-USDC', lp: { ...LP_TOKENS['RAY-USDC-V4'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: false, dual: false, version: 3, programId: STAKE_PROGRAM_ID, poolId: 'CHYrUBX2RKX8iBg7gYTkccoGNBzP44LdaazMHCLcdEgS', poolAuthority: '5KQFnDd33J5NaMC9hQ64P5XzaaSz8Pt7NBCkZFYn1po', poolLpTokenAccount: 'BNnXLFGva3K8ACruAc1gaP49NCbLkyE6xWhGV4G2HLrs', // lp vault poolRewardTokenAccount: 'DpRueBHHhrQNvrjZX7CwGitJDJ8eZc3AHcyFMG4LqCQR' // reward vault A }, { name: 'RAY-ETH', lp: { ...LP_TOKENS['RAY-ETH-V4'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: false, dual: false, version: 3, programId: STAKE_PROGRAM_ID, poolId: 'B6fbnZZ7sbKHR18ffEDD5Nncgp54iKN1GbCgjTRdqhS1', poolAuthority: '6amoZ7YBbsz3uUUbkeEH4vDTNwjvgjxTiu6nGi9z1JGe', poolLpTokenAccount: 'BjAfXpHTHz2kipraNddS6WwQvGGtbvyobn7MxLEEYfrH', // lp vault poolRewardTokenAccount: '7YfTgYQFGEJ4kb8jCF8cBrrUwEFskLin3EbvE1crqiQh' // reward vault A }, { name: 'RAY-SRM', lp: { ...LP_TOKENS['RAY-SRM-V4'] }, reward: { ...TOKENS.RAY }, isStake: false, fusion: false, legacy: false, dual: false, version: 3, programId: STAKE_PROGRAM_ID, poolId: '5DFbcYNLLy5SJiBpCCDzNSs7cWCsUbYnCkLXzcPQiKnR', poolAuthority: 'DdFXxCbn5vpxPRaGmurmefCTTSUa5XZ9Kh6Noc4bvrU9', poolLpTokenAccount: '792c58UHPPuLJcYZ6nawcD5F5NQXGbBos9ZGczTrLSdb', // lp vault poolRewardTokenAccount: '5ihtMmeTAx3kdf459Yt3bqos5zDe4WBBcSZSB6ooNxLt' // reward vault A } ].sort((a, b) => (a.fusion === true && b.fusion === false ? 1 : -1)) export const FARMS: FarmInfo[] = [] export const UPCOMING: string[] = []