Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

feat(abracadabra): Added support for Degenbox Deposits #731

Merged
merged 5 commits into from
Jun 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/apps/abracadabra/abracadabra.definition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export const ABRACADABRA_DEFINITION = appDefinition({
mSpell: { id: 'm-spell', type: GroupType.POSITION, label: 'mSpell' },
cauldron: { id: 'cauldron', type: GroupType.POSITION, label: 'Cauldrons' },
farm: { id: 'farm', type: GroupType.POSITION, label: 'Farms' },
degenbox: { id: 'degenbox', type: GroupType.POSITION, label: 'Abracadabra Degenbox' },
},
name: 'Abracadabra',
description: `Abracadabra is a lending platform that uses interest-bearing tokens as collateral to borrow a USD pegged stable coin that can be used as any other stablecoin. Abracadabra provides the opportunity for users to unlock the capital of their yield.`,
Expand Down
3 changes: 2 additions & 1 deletion src/apps/abracadabra/abracadabra.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Register } from '~app-toolkit/decorators';
import { AbstractApp } from '~app/app.dynamic-module';
import { OlympusAppModule } from '~apps/olympus';
import { SushiSwapBentoBoxAppModule } from '~apps/sushiswap-bentobox';

import { AbracadabraAppDefinition, ABRACADABRA_DEFINITION } from './abracadabra.definition';
import { ArbitrumAbracadabraBalanceFetcher } from './arbitrum/abracadabra.balance-fetcher';
Expand Down Expand Up @@ -31,7 +32,7 @@ import { AbracadabraCauldronContractPositionHelper } from './helpers/abracadabra

@Register.AppModule({
appId: ABRACADABRA_DEFINITION.id,
imports: [OlympusAppModule],
imports: [OlympusAppModule, SushiSwapBentoBoxAppModule],
providers: [
AbracadabraAppDefinition,
AbracadabraContractFactory,
Expand Down
18 changes: 17 additions & 1 deletion src/apps/abracadabra/arbitrum/abracadabra.balance-fetcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Inject } from '@nestjs/common';
import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface';
import { Register } from '~app-toolkit/decorators';
import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present';
import { SushiSwapBentoBoxContractPositionBalanceHelper } from '~apps/sushiswap-bentobox';
import { BalanceFetcher } from '~balance/balance-fetcher.interface';
import { Network } from '~types/network.interface';

Expand All @@ -20,6 +21,8 @@ export class ArbitrumAbracadabraBalanceFetcher implements BalanceFetcher {
@Inject(AbracadabraCauldronBalanceHelper)
private readonly abracadabraCauldronBalanceHelper: AbracadabraCauldronBalanceHelper,
@Inject(AbracadabraContractFactory) private readonly contractFactory: AbracadabraContractFactory,
@Inject(SushiSwapBentoBoxContractPositionBalanceHelper)
private readonly degenboxBalanceHelper: SushiSwapBentoBoxContractPositionBalanceHelper,
) {}

private async getStakedSpellBalances(address: string) {
Expand All @@ -31,6 +34,14 @@ export class ArbitrumAbracadabraBalanceFetcher implements BalanceFetcher {
});
}

private async getDegenboxBalances(address: string) {
return this.degenboxBalanceHelper.getBalances({
address,
network,
bentoBoxAddress: '0x7c8fef8ea9b1fe46a7689bfb8149341c90431d38',
});
}

private async getCauldronBalances(address: string) {
return this.abracadabraCauldronBalanceHelper.getBalances({ address, network });
}
Expand Down Expand Up @@ -58,11 +69,12 @@ export class ArbitrumAbracadabraBalanceFetcher implements BalanceFetcher {
}

async getBalances(address: string) {
const [stakedSpellBalances, cauldronBalances, farmBalances, mspellBalances] = await Promise.all([
const [stakedSpellBalances, cauldronBalances, farmBalances, mspellBalances, degenboxBalances] = await Promise.all([
this.getStakedSpellBalances(address),
this.getCauldronBalances(address),
this.getFarmBalances(address),
this.getMspellBalance(address),
this.getDegenboxBalances(address),
]);

return presentBalanceFetcherResponse([
Expand All @@ -82,6 +94,10 @@ export class ArbitrumAbracadabraBalanceFetcher implements BalanceFetcher {
label: 'mSPELL',
assets: mspellBalances,
},
{
label: 'Abracadabra Degenbox',
assets: degenboxBalances,
},
]);
}
private async getMspellBalance(address: string) {
Expand Down
18 changes: 17 additions & 1 deletion src/apps/abracadabra/avalanche/abracadabra.balance-fetcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Inject } from '@nestjs/common';
import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface';
import { Register } from '~app-toolkit/decorators';
import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present';
import { SushiSwapBentoBoxContractPositionBalanceHelper } from '~apps/sushiswap-bentobox';
import { BalanceFetcher } from '~balance/balance-fetcher.interface';
import { Network } from '~types/network.interface';

Expand All @@ -20,6 +21,8 @@ export class AvalancheAbracadabraBalanceFetcher implements BalanceFetcher {
@Inject(AbracadabraCauldronBalanceHelper)
private readonly abracadabraCauldronBalanceHelper: AbracadabraCauldronBalanceHelper,
@Inject(AbracadabraContractFactory) private readonly contractFactory: AbracadabraContractFactory,
@Inject(SushiSwapBentoBoxContractPositionBalanceHelper)
private readonly degenboxBalanceHelper: SushiSwapBentoBoxContractPositionBalanceHelper,
) {}

private async getStakedSpellBalances(address: string) {
Expand All @@ -31,6 +34,14 @@ export class AvalancheAbracadabraBalanceFetcher implements BalanceFetcher {
});
}

private async getDegenboxBalances(address: string) {
return this.degenboxBalanceHelper.getBalances({
address,
network,
bentoBoxAddress: '0x1fc83f75499b7620d53757f0b01e2ae626aae530',
});
}

private async getCauldronBalances(address: string) {
return this.abracadabraCauldronBalanceHelper.getBalances({ address, network });
}
Expand Down Expand Up @@ -58,11 +69,12 @@ export class AvalancheAbracadabraBalanceFetcher implements BalanceFetcher {
}

async getBalances(address: string) {
const [stakedSpellBalances, cauldronBalances, farmBalances, mspellBalances] = await Promise.all([
const [stakedSpellBalances, cauldronBalances, farmBalances, mspellBalances, degenboxBalances] = await Promise.all([
this.getStakedSpellBalances(address),
this.getCauldronBalances(address),
this.getFarmBalances(address),
this.getMspellBalance(address),
this.getDegenboxBalances(address),
]);

return presentBalanceFetcherResponse([
Expand All @@ -82,6 +94,10 @@ export class AvalancheAbracadabraBalanceFetcher implements BalanceFetcher {
label: 'mSPELL',
assets: mspellBalances,
},
{
label: 'Abracadabra Degenbox',
assets: degenboxBalances,
},
]);
}
private async getMspellBalance(address: string) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Inject } from '@nestjs/common';

import { Register } from '~app-toolkit/decorators';
import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present';
import { SushiSwapBentoBoxContractPositionBalanceHelper } from '~apps/sushiswap-bentobox';
import { BalanceFetcher } from '~balance/balance-fetcher.interface';
import { Network } from '~types/network.interface';

Expand All @@ -15,20 +16,37 @@ export class BinanceSmartChainAbracadabraBalanceFetcher implements BalanceFetche
constructor(
@Inject(AbracadabraCauldronBalanceHelper)
private readonly abracadabraCauldronBalanceHelper: AbracadabraCauldronBalanceHelper,
@Inject(SushiSwapBentoBoxContractPositionBalanceHelper)
private readonly degenboxBalanceHelper: SushiSwapBentoBoxContractPositionBalanceHelper,
) {}

private async getDegenboxBalances(address: string) {
return this.degenboxBalanceHelper.getBalances({
address,
network,
bentoBoxAddress: '0x090185f2135308bad17527004364ebcc2d37e5f6',
});
}

private async getCauldronBalances(address: string) {
return this.abracadabraCauldronBalanceHelper.getBalances({ address, network });
}

async getBalances(address: string) {
const [cauldronBalances] = await Promise.all([this.getCauldronBalances(address)]);
const [cauldronBalances, degenboxBalances] = await Promise.all([
this.getCauldronBalances(address),
this.getDegenboxBalances(address),
]);

return presentBalanceFetcherResponse([
{
label: 'Cauldrons',
assets: cauldronBalances,
},
{
label: 'Abracadabra Degenbox',
assets: degenboxBalances,
},
]);
}
}
Loading