From e58a3a95dcb61184d675fbea886b061e12dedacb Mon Sep 17 00:00:00 2001 From: Tyrone Johnson Date: Wed, 24 Jun 2026 16:49:11 +0300 Subject: [PATCH 1/3] delist SOV and BPRO from collateral --- .../components/NewLoanForm/NewLoanForm.tsx | 2 +- .../AcceptedCollateral/AcceptedCollateral.tsx | 5 +- apps/frontend/src/utils/LendingPool.ts | 4 + .../src/utils/LendingPoolDictionary.test.ts | 97 +++++++++++++++++++ .../src/utils/LendingPoolDictionary.ts | 10 ++ .../src/contracts/assets/icons/rsk/rbtc.ts | 17 +--- 6 files changed, 119 insertions(+), 16 deletions(-) create mode 100644 apps/frontend/src/utils/LendingPoolDictionary.test.ts diff --git a/apps/frontend/src/app/5_pages/BorrowPage/components/NewLoanForm/NewLoanForm.tsx b/apps/frontend/src/app/5_pages/BorrowPage/components/NewLoanForm/NewLoanForm.tsx index 4a9983153..66aa5001e 100644 --- a/apps/frontend/src/app/5_pages/BorrowPage/components/NewLoanForm/NewLoanForm.tsx +++ b/apps/frontend/src/app/5_pages/BorrowPage/components/NewLoanForm/NewLoanForm.tsx @@ -87,7 +87,7 @@ export const NewLoanForm: FC = ({ pool }) => { dayjs(defaultFirstRolloverDate).unix(), ); const collateralAssets = useMemo( - () => pool.getBorrowCollateral().map(item => maybeWrappedAsset(item)), + () => pool.getActiveBorrowCollateral().map(item => maybeWrappedAsset(item)), [pool], ); diff --git a/apps/frontend/src/app/5_pages/LendPage/components/AcceptedCollateral/AcceptedCollateral.tsx b/apps/frontend/src/app/5_pages/LendPage/components/AcceptedCollateral/AcceptedCollateral.tsx index e5cb3848e..29fdcb3f6 100644 --- a/apps/frontend/src/app/5_pages/LendPage/components/AcceptedCollateral/AcceptedCollateral.tsx +++ b/apps/frontend/src/app/5_pages/LendPage/components/AcceptedCollateral/AcceptedCollateral.tsx @@ -16,7 +16,10 @@ type AcceptedCollateralProps = { }; export const AcceptedCollateral: FC = ({ pool }) => { - const availableAssets = useMemo(() => pool.getBorrowCollateral(), [pool]); + const availableAssets = useMemo( + () => pool.getActiveBorrowCollateral(), + [pool], + ); const renderPools = useMemo(() => { if (!availableAssets.length) { diff --git a/apps/frontend/src/utils/LendingPool.ts b/apps/frontend/src/utils/LendingPool.ts index b05d1d151..4bc38aabd 100644 --- a/apps/frontend/src/utils/LendingPool.ts +++ b/apps/frontend/src/utils/LendingPool.ts @@ -11,6 +11,7 @@ export class LendingPool { private _borrowCollateral: string[] = [], public readonly useLM: boolean, public readonly deprecated: boolean = false, + private _activeBorrowCollateral: string[] = _borrowCollateral, ) { this._details = findAsset(this._asset, RSK_CHAIN_ID); } @@ -26,4 +27,7 @@ export class LendingPool { public getBorrowCollateral(): string[] { return this._borrowCollateral; } + public getActiveBorrowCollateral(): string[] { + return this._activeBorrowCollateral; + } } diff --git a/apps/frontend/src/utils/LendingPoolDictionary.test.ts b/apps/frontend/src/utils/LendingPoolDictionary.test.ts new file mode 100644 index 000000000..b89cc8cd3 --- /dev/null +++ b/apps/frontend/src/utils/LendingPoolDictionary.test.ts @@ -0,0 +1,97 @@ +import { LendingPoolDictionary } from './LendingPoolDictionary'; +import { COMMON_SYMBOLS } from './asset'; + +const ASSETS = ['BPRO', 'BTC', 'DLLR', 'DOC', 'RUSDT', 'SOV', 'XUSD']; + +jest.mock( + '@sovryn/contracts', + () => ({ + contracts: { + assets: { + rsk: ASSETS.map(symbol => ({ symbol })), + }, + }, + }), + { virtual: true }, +); + +jest.mock( + '@sovryn/ethers-provider', + () => ({ + __esModule: true, + default: jest.fn(), + ChainIds: { + BOB_MAINNET: 60808, + BOB_TESTNET: 808813, + BSC_MAINNET: 56, + BSC_TESTNET: 97, + FORK: 31337, + MAINNET: 1, + RSK_MAINNET: 30, + RSK_TESTNET: 31, + SEPOLIA: 11155111, + }, + getNetworkByChainId: jest.fn(() => 'rsk'), + }), + { virtual: true }, +); + +jest.mock( + '@sovryn/sdk', + () => ({ + INDEXER_URL: '', + INDEXER_URL_STAGING: '', + INDEXER_URL_TESTNET: '', + }), + { virtual: true }, +); + +const DISABLED_COLLATERAL = [COMMON_SYMBOLS.SOV, COMMON_SYMBOLS.BPRO]; + +describe('utils/LendingPoolDictionary.ts', () => { + it('excludes SOV and BPRO from active collateral lists', () => { + LendingPoolDictionary.list().forEach(pool => { + expect(pool.getActiveBorrowCollateral()).toEqual( + expect.not.arrayContaining(DISABLED_COLLATERAL), + ); + }); + }); + + it('keeps SOV and BPRO in legacy collateral lists where needed for existing loans', () => { + expect( + LendingPoolDictionary.get(COMMON_SYMBOLS.BTC).getBorrowCollateral(), + ).toEqual(expect.arrayContaining(DISABLED_COLLATERAL)); + }); + + it('defines the expected active collateral per lending pool', () => { + expect( + LendingPoolDictionary.get( + COMMON_SYMBOLS.DLLR, + ).getActiveBorrowCollateral(), + ).toEqual([COMMON_SYMBOLS.BTC]); + expect( + LendingPoolDictionary.get(COMMON_SYMBOLS.BTC).getActiveBorrowCollateral(), + ).toEqual([COMMON_SYMBOLS.DLLR, COMMON_SYMBOLS.XUSD, COMMON_SYMBOLS.DOC]); + expect( + LendingPoolDictionary.get( + COMMON_SYMBOLS.XUSD, + ).getActiveBorrowCollateral(), + ).toEqual([COMMON_SYMBOLS.BTC]); + expect( + LendingPoolDictionary.get(COMMON_SYMBOLS.DOC).getActiveBorrowCollateral(), + ).toEqual([COMMON_SYMBOLS.BTC, COMMON_SYMBOLS.XUSD]); + expect( + LendingPoolDictionary.get( + COMMON_SYMBOLS.RUSDT, + ).getActiveBorrowCollateral(), + ).toEqual([]); + expect( + LendingPoolDictionary.get('BPRO').getActiveBorrowCollateral(), + ).toEqual([ + COMMON_SYMBOLS.DLLR, + COMMON_SYMBOLS.BTC, + COMMON_SYMBOLS.XUSD, + COMMON_SYMBOLS.DOC, + ]); + }); +}); diff --git a/apps/frontend/src/utils/LendingPoolDictionary.ts b/apps/frontend/src/utils/LendingPoolDictionary.ts index 3dd2fa052..b680358ef 100644 --- a/apps/frontend/src/utils/LendingPoolDictionary.ts +++ b/apps/frontend/src/utils/LendingPoolDictionary.ts @@ -10,6 +10,7 @@ export class LendingPoolDictionary { [COMMON_SYMBOLS.BTC, 'BPRO', COMMON_SYMBOLS.SOV], false, false, + [COMMON_SYMBOLS.BTC], ), ], [ @@ -25,6 +26,7 @@ export class LendingPoolDictionary { ], false, false, + [COMMON_SYMBOLS.DLLR, COMMON_SYMBOLS.XUSD, COMMON_SYMBOLS.DOC], ), ], [ @@ -34,6 +36,7 @@ export class LendingPoolDictionary { [COMMON_SYMBOLS.BTC, 'BPRO', COMMON_SYMBOLS.SOV], true, false, + [COMMON_SYMBOLS.BTC], ), ], [ @@ -43,6 +46,7 @@ export class LendingPoolDictionary { [COMMON_SYMBOLS.BTC, COMMON_SYMBOLS.XUSD, 'BPRO', COMMON_SYMBOLS.SOV], false, false, + [COMMON_SYMBOLS.BTC, COMMON_SYMBOLS.XUSD], ), ], [ @@ -62,6 +66,12 @@ export class LendingPoolDictionary { ], false, false, + [ + COMMON_SYMBOLS.DLLR, + COMMON_SYMBOLS.BTC, + COMMON_SYMBOLS.XUSD, + COMMON_SYMBOLS.DOC, + ], ), ], ]); diff --git a/packages/contracts/src/contracts/assets/icons/rsk/rbtc.ts b/packages/contracts/src/contracts/assets/icons/rsk/rbtc.ts index 2fb0d098c..a09708dd2 100644 --- a/packages/contracts/src/contracts/assets/icons/rsk/rbtc.ts +++ b/packages/contracts/src/contracts/assets/icons/rsk/rbtc.ts @@ -1,16 +1,5 @@ // eslint-disable-next-line import/no-anonymous-default-export -export default ` - - - - - - - - - - - - - +export default ` + + `; From c52b22fe603742a06cf5e1864e3756037685b394 Mon Sep 17 00:00:00 2001 From: Tyrone Johnson Date: Wed, 24 Jun 2026 17:03:01 +0300 Subject: [PATCH 2/3] dummy update to push for netlify to pick it up --- apps/frontend/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/frontend/README.md b/apps/frontend/README.md index a3358b480..d971f8768 100644 --- a/apps/frontend/README.md +++ b/apps/frontend/README.md @@ -14,4 +14,4 @@ yarn --cwd apps/frontend serve To use custom environment variables locally, create a file named `.env.local` and add required values (see `.env.example` for sample variables and values). -For environment variables used in deployments see `netlify.toml`. +For environment variables used in deployments see `netlify.toml`. From f9879a715f5fa386ec5ffa8ab607353fb4add464 Mon Sep 17 00:00:00 2001 From: Tyrone Johnson Date: Wed, 24 Jun 2026 19:12:13 +0300 Subject: [PATCH 3/3] revert trailing technical space in README.md --- apps/frontend/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/frontend/README.md b/apps/frontend/README.md index d971f8768..a3358b480 100644 --- a/apps/frontend/README.md +++ b/apps/frontend/README.md @@ -14,4 +14,4 @@ yarn --cwd apps/frontend serve To use custom environment variables locally, create a file named `.env.local` and add required values (see `.env.example` for sample variables and values). -For environment variables used in deployments see `netlify.toml`. +For environment variables used in deployments see `netlify.toml`.