diff --git a/src/constants/contracts.ts b/src/constants/contracts.ts index 8da379b1..fd26dd14 100644 --- a/src/constants/contracts.ts +++ b/src/constants/contracts.ts @@ -1,11 +1,7 @@ // Index Protocol - export const FlashMintLeveragedAddress = '0x45c00508C14601fd1C1e296eB3C0e3eEEdCa45D0' -export const FlashMintLeveragedExtendedAddress = - '0xC62e39d1f5232f154b7ccD3C6234A9c893bf9563' - export const FlashMintLeveragedForCompoundAddress = '0xeA716Ed94964Ed0126Fb2fA3b546eD7F209cC2b8' @@ -19,6 +15,12 @@ export const IndexDebtIssuanceModuleV2Address = export const IndexDebtIssuanceModuleV2Address_v2 = '0x04b59F9F09750C044D7CfbC177561E409085f0f3' +// Arbitrum +export const FlashMintLeveragedExtendedAddress = + '0xc6b3B4624941287bB7BdD8255302c1b337e42194' +export const IndexDebtIssuanceModuleV3Address = + '0x4ac26c26116fa976352b70700af58bc2442489d8' + // Set Protocol export const BasicIssuanceModuleAddress = '0xd8EF3cACe8b4907117a45B0b125c68560532F94D' diff --git a/src/utils/issuanceModules.test.ts b/src/utils/issuanceModules.test.ts index e1786fba..a738a287 100644 --- a/src/utils/issuanceModules.test.ts +++ b/src/utils/issuanceModules.test.ts @@ -6,6 +6,7 @@ import { DebtIssuanceModuleV2Address, IndexDebtIssuanceModuleV2Address, IndexDebtIssuanceModuleV2Address_v2, + IndexDebtIssuanceModuleV3Address, } from 'constants/contracts' import { BanklessBEDIndex, @@ -21,6 +22,7 @@ import { CoinDeskEthTrendIndex, IndexCoopEthereum2xIndex, IndexCoopBitcoin2xIndex, + IndexCoopBitcoin3xIndex, } from 'constants/tokens' import { getIssuanceModule } from './issuanceModules' @@ -120,6 +122,28 @@ describe('getIssuanceModule() - Mainnet - SetProtocol', () => { }) }) +describe('getIssuanceModule() - Arbitrum', () => { + test('returns debt issuance module v3 for BTC2X on Arbitrum', async () => { + const expectedModule = IndexDebtIssuanceModuleV3Address + const issuanceModule = getIssuanceModule( + IndexCoopBitcoin2xIndex.symbol, + ChainId.Arbitrum + ) + expect(issuanceModule.address).toEqual(expectedModule) + expect(issuanceModule.isDebtIssuance).toBe(true) + }) + + test('returns debt issuance module v3 for BTC3X', async () => { + const expectedModule = IndexDebtIssuanceModuleV3Address + const issuanceModule = getIssuanceModule( + IndexCoopBitcoin3xIndex.symbol, + ChainId.Arbitrum + ) + expect(issuanceModule.address).toEqual(expectedModule) + expect(issuanceModule.isDebtIssuance).toBe(true) + }) +}) + describe('getIssuanceModule() - Polygon', () => { test('returns basic issuance module for any other index', async () => { const expectedAddress = BasicIssuanceModulePolygonAddress diff --git a/src/utils/issuanceModules.ts b/src/utils/issuanceModules.ts index 426199be..916b7699 100644 --- a/src/utils/issuanceModules.ts +++ b/src/utils/issuanceModules.ts @@ -6,6 +6,7 @@ import { DebtIssuanceModuleV2Address, IndexDebtIssuanceModuleV2Address, IndexDebtIssuanceModuleV2Address_v2, + IndexDebtIssuanceModuleV3Address, } from '../constants/contracts' import { BTC2xFlexibleLeverageIndex, @@ -29,12 +30,17 @@ export function getIssuanceModule( tokenSymbol: string, chainId: number = ChainId.Mainnet ): IssuanceModule { + if (chainId === ChainId.Arbitrum) { + return { + address: IndexDebtIssuanceModuleV3Address, + isDebtIssuance: true, + } + } if (chainId === ChainId.Polygon) return { address: BasicIssuanceModulePolygonAddress, isDebtIssuance: false, } - // Mainnet switch (tokenSymbol) { case BTC2xFlexibleLeverageIndex.symbol: