Skip to content

Commit

Permalink
Merge branch 'main' of github.com:0xrmvdao/studio
Browse files Browse the repository at this point in the history
  • Loading branch information
0xrmvdao committed Aug 18, 2022
2 parents 8fec90e + 8c22794 commit ac7ab96
Show file tree
Hide file tree
Showing 173 changed files with 20,182 additions and 3,172 deletions.
56 changes: 56 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,62 @@

[1]: https://www.npmjs.com/package/@zapper-fi/studio?activeTab=versions

## [0.177.0](https://github.com/Zapper-fi/studio/compare/v0.176.1...v0.177.0) (2022-08-16)


### Features

* **rari:** Extract to Studio ([#1187](https://github.com/Zapper-fi/studio/issues/1187)) ([4d2c98f](https://github.com/Zapper-fi/studio/commit/4d2c98f63b1c850dfe015b5296972580b1ccbb6b))
* **stargate:** added aaSTG app token ([#1148](https://github.com/Zapper-fi/studio/issues/1148)) ([b988d1d](https://github.com/Zapper-fi/studio/commit/b988d1d90cf03a6e16933ef9c9ee155f9eab9d34))

## [0.176.1](https://github.com/Zapper-fi/studio/compare/v0.176.0...v0.176.1) (2022-08-16)


### Bug Fixes

* **yearn:** Fix Yearn token prices ([#1185](https://github.com/Zapper-fi/studio/issues/1185)) ([569aa53](https://github.com/Zapper-fi/studio/commit/569aa53e8f02ec5ce57f1426dc12418b5e99cc30))

## [0.176.0](https://github.com/Zapper-fi/studio/compare/v0.175.0...v0.176.0) (2022-08-16)


### Features

* **apps:** Fixed Openleverage pool group on mainnet ([#1183](https://github.com/Zapper-fi/studio/issues/1183)) ([7b8d5eb](https://github.com/Zapper-fi/studio/commit/7b8d5ebc0986a5e928856a7264c4e0bae30b33ea))

## [0.175.0](https://github.com/Zapper-fi/studio/compare/v0.174.0...v0.175.0) (2022-08-16)


### Features

* **dopex:** Add new Dopex farms, refactor to templates ([#1178](https://github.com/Zapper-fi/studio/issues/1178)) ([db90948](https://github.com/Zapper-fi/studio/commit/db909484efd0feecafb7efa898622dfafc0a2c7a))


### Bug Fixes

* **revert-fi:** Add IDs to distinguish compounding positions on bundle page ([#1181](https://github.com/Zapper-fi/studio/issues/1181)) ([7e33042](https://github.com/Zapper-fi/studio/commit/7e3304288424e92b8918347a3481c936d3d22a7b))

## [0.174.0](https://github.com/Zapper-fi/studio/compare/v0.173.1...v0.174.0) (2022-08-15)


### Features

* **apps:** Add key to template fetcher ([#1175](https://github.com/Zapper-fi/studio/issues/1175)) ([a428f57](https://github.com/Zapper-fi/studio/commit/a428f57485761a34ced7d71849d460896b912b66))


### Bug Fixes

* **polynomial:** Fix incorrect comment ([#1164](https://github.com/Zapper-fi/studio/issues/1164)) ([2f7d079](https://github.com/Zapper-fi/studio/commit/2f7d079aa3d36c495b1af97f5e137ccd95167260))
* **revert-fi:** Consolidate rewards display ([#1171](https://github.com/Zapper-fi/studio/issues/1171)) ([839b071](https://github.com/Zapper-fi/studio/commit/839b071bb0c9facaede1b3c9bd635e99a7993a6d))
* **revert-fi:** organize compounding positions as ContractPositions ([#1167](https://github.com/Zapper-fi/studio/issues/1167)) ([65e087b](https://github.com/Zapper-fi/studio/commit/65e087bbeec0f2a3e8ceb9660538d30b52e88e36))
* **synthetix:** Enable SNX to be exchangeable on optimism ([#1176](https://github.com/Zapper-fi/studio/issues/1176)) ([fd07cfa](https://github.com/Zapper-fi/studio/commit/fd07cfa32fb97a523980c8698f8f24b9d5bcbd69))

## [0.173.1](https://github.com/Zapper-fi/studio/compare/v0.173.0...v0.173.1) (2022-08-15)


### Bug Fixes

* **metavault-trade:** Display naming fixes. Positions list added. ([#1172](https://github.com/Zapper-fi/studio/issues/1172)) ([3a57c52](https://github.com/Zapper-fi/studio/commit/3a57c524386c8d2a7468954129435414c1001811))

## [0.173.0](https://github.com/Zapper-fi/studio/compare/v0.172.0...v0.173.0) (2022-08-12)


Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@zapper-fi/studio",
"version": "0.173.0",
"version": "0.177.0",
"description": "Community build apps for Zapper.fi",
"license": "MIT",
"main": "./index.js",
Expand Down
7 changes: 7 additions & 0 deletions src/app-toolkit/decorators/group-meta.decorator.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { applyDecorators, SetMetadata } from '@nestjs/common';

export const BALANCE_PRESENTER_GROUP_LABEL = 'BALANCE_PRESENTER_GROUP_LABEL';

export const GroupMeta = (groupLabel: string) => {
return applyDecorators(SetMetadata(BALANCE_PRESENTER_GROUP_LABEL, groupLabel));
};
2 changes: 2 additions & 0 deletions src/app-toolkit/decorators/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { PositionFetcher } from '~position/position-fetcher.decorator';

import { BalanceFetcher } from './balance-fetcher.decorator';
import { BalancePresenter } from './balance-presenter.decorator';
import { GroupMeta } from './group-meta.decorator';

export const Register = {
AppDefinition,
Expand All @@ -15,4 +16,5 @@ export const Register = {
TokenPositionFetcher: PositionFetcher(ContractType.APP_TOKEN),
ContractPositionBalanceFetcher: PositionBalanceFetcher(ContractType.POSITION),
TokenPositionBalanceFetcher: PositionBalanceFetcher(ContractType.APP_TOKEN),
GroupMeta: GroupMeta,
};

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,54 @@ import { Inject } from '@nestjs/common';

import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface';
import { Register } from '~app-toolkit/decorators';
import { PositionFetcher } from '~position/position-fetcher.interface';
import { ContractPosition } from '~position/position.interface';
import { Network } from '~types/network.interface';

import { BADGER_DEFINITION } from '../badger.definition';
import { BadgerContractFactory } from '../contracts';
import {
BadgerClaimableContractPositionFetcher,
BadgerClaimableDescriptor,
} from '../helpers/badger.claimable.contract-position.helper';
import { BadgerClaimableRewardsResolver } from '../helpers/badger.claimable.rewards-resolver';

const appId = BADGER_DEFINITION.id;
const groupId = BADGER_DEFINITION.groups.claimable.id;
const network = Network.ARBITRUM_MAINNET;

@Register.ContractPositionFetcher({ appId, groupId, network, options: { excludeFromTvl: true } })
export class ArbitrumBadgerClaimableContractPositionFetcher implements PositionFetcher<ContractPosition> {
export class ArbitrumBadgerClaimableContractPositionFetcher extends BadgerClaimableContractPositionFetcher {
appId = appId;
groupId = groupId;
network = network;
// No DIGG token yet on arb
diggTokenAddress = '';

constructor(
@Inject(APP_TOOLKIT)
private readonly appToolkit: IAppToolkit,
) {}
@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit,
@Inject(BadgerContractFactory) protected readonly contractFactory: BadgerContractFactory,
@Inject(BadgerClaimableRewardsResolver) protected badgerClaimableRewardsResolver: BadgerClaimableRewardsResolver,
) {
super(appToolkit, contractFactory, badgerClaimableRewardsResolver);
}

async getPositions() {
return this.appToolkit.helpers.merkleContractPositionHelper.getContractPositions({
address: '0x635eb2c39c75954bb53ebc011bdc6afaace115a6',
appId,
groupId,
network,
dependencies: [{ appId: BADGER_DEFINITION.id, groupIds: [BADGER_DEFINITION.groups.vault.id], network }],
rewardTokenAddresses: [
'0x11cdb42b0eb46d95f990bedd4695a6e3fa034978',
'0xbfa641051ba0a0ad1b0acf549a89536a0d76472e',
'0x0c2153e8ae4db8233c61717cdc4c75630e952561',
'0xe774d1fb3133b037aa17d39165b8f45f444f632d',
],
});
async getDescriptors(): Promise<BadgerClaimableDescriptor[]> {
return [
{
address: '0x635eb2c39c75954bb53ebc011bdc6afaace115a6',
rewardTokenAddress: '0x11cdb42b0eb46d95f990bedd4695a6e3fa034978',
},
{
address: '0x635eb2c39c75954bb53ebc011bdc6afaace115a6',
rewardTokenAddress: '0xbfa641051ba0a0ad1b0acf549a89536a0d76472e',
},
{
address: '0x635eb2c39c75954bb53ebc011bdc6afaace115a6',
rewardTokenAddress: '0x0c2153e8ae4db8233c61717cdc4c75630e952561',
},
{
address: '0x635eb2c39c75954bb53ebc011bdc6afaace115a6',
rewardTokenAddress: '0xe774d1fb3133b037aa17d39165b8f45f444f632d',
},
];
}
}
61 changes: 16 additions & 45 deletions src/apps/badger/arbitrum/badger.vault.token-fetcher.ts
Original file line number Diff line number Diff line change
@@ -1,62 +1,33 @@
import { Inject } from '@nestjs/common';
import Axios from 'axios';
import { values } from 'lodash';

import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface';
import { Register } from '~app-toolkit/decorators';
import { CURVE_DEFINITION } from '~apps/curve/curve.definition';
import { CacheOnInterval } from '~cache/cache-on-interval.decorator';
import { PositionFetcher } from '~position/position-fetcher.interface';
import { AppTokenPosition } from '~position/position.interface';
import { Network } from '~types/network.interface';

import { BADGER_DEFINITION } from '../badger.definition';
import { BadgerContractFactory, BadgerSett } from '../contracts';
import { BadgerVaultTokenDefinitionsResolver } from '../helpers/badger.vault.token-definition-resolver';
import { BadgerVaultTokenHelper } from '../helpers/badger.vault.token-helper';

const appId = BADGER_DEFINITION.id;
const groupId = BADGER_DEFINITION.groups.vault.id;
const network = Network.ARBITRUM_MAINNET;

export type BadgerApiTokensResponseEntry = {
address: string;
decimals: number;
name: string;
symbol: string;
type: string;
vaultToken: {
address: string;
network: string;
};
};

export type BadgerApiTokensResponse = Record<string, BadgerApiTokensResponseEntry>;

@Register.TokenPositionFetcher({ appId, groupId, network })
export class ArbitrumBadgerVaultTokenFetcher implements PositionFetcher<AppTokenPosition> {
constructor(@Inject(BadgerVaultTokenHelper) private readonly badgerVaultTokenHelper: BadgerVaultTokenHelper) {}

@CacheOnInterval({
key: `studio:${appId}:${groupId}:${network}:definitions`,
timeout: 15 * 60 * 1000,
})
async getVaultDefinitions() {
const { data } = await Axios.get<BadgerApiTokensResponse>('https://api.badger.com/v2/tokens?chain=arbitrum');
const vaultDefinitions = values(data)
.filter(t => t.type === 'Vault')
.map(t => ({ address: t.address.toLowerCase(), underlyingAddress: t.vaultToken.address.toLowerCase() }));
return vaultDefinitions;
export class ArbitrumBadgerVaultTokenFetcher extends BadgerVaultTokenHelper<BadgerSett> {
appId = appId;
groupId = groupId;
network = network;

constructor(
@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit,
@Inject(BadgerContractFactory) protected readonly contractFactory: BadgerContractFactory,
@Inject(BadgerVaultTokenDefinitionsResolver) tokenDefinitionsResolver: BadgerVaultTokenDefinitionsResolver,
) {
super(appToolkit, tokenDefinitionsResolver, contractFactory);
}

async getPositions() {
const vaultDefinitions = await this.getVaultDefinitions();

return this.badgerVaultTokenHelper.getTokens({
network,
definitions: vaultDefinitions,
dependencies: [
{ appId: CURVE_DEFINITION.id, groupIds: [CURVE_DEFINITION.groups.pool.id], network },
{ appId: 'sushiswap', groupIds: ['pool'], network },
{ appId: 'swapr', groupIds: ['pool'], network },
],
});
getContract(address: string): BadgerSett {
return this.contractFactory.badgerSett({ network: this.network, address });
}
}
5 changes: 4 additions & 1 deletion src/apps/badger/badger.definition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ export const BADGER_DEFINITION = appDefinition({

tags: [AppTag.YIELD_AGGREGATOR],
keywords: [],
links: {},
links: {
twitter: 'https://twitter.com/badgerdao',
discord: 'https://discord.com/invite/xSPFHHS',
},

supportedNetworks: {
[Network.ETHEREUM_MAINNET]: [AppAction.VIEW],
Expand Down
14 changes: 4 additions & 10 deletions src/apps/badger/badger.module.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
import { Register } from '~app-toolkit/decorators';
import { AbstractApp } from '~app/app.dynamic-module';

import { ArbitrumBadgerClaimableContractPositionBalanceFetcher } from './arbitrum/badger.claimable.contract-position-balance-fetcher';
import { ArbitrumBadgerClaimableContractPositionFetcher } from './arbitrum/badger.claimable.contract-position-fetcher';
import { ArbitrumBadgerVaultTokenFetcher } from './arbitrum/badger.vault.token-fetcher';
import { BadgerAppDefinition, BADGER_DEFINITION } from './badger.definition';
import { BadgerContractFactory } from './contracts';
import { EthereumBadgerClaimableContractPositionBalanceFetcher } from './ethereum/badger.claimable.contract-position-balance-fetcher';
import { EthereumBadgerClaimableContractPositionFetcher } from './ethereum/badger.claimable.contract-position-fetcher';
import { EthereumBadgerVaultTokenFetcher } from './ethereum/badger.vault.token-fetcher';
import { BadgerClaimableContractPositionBalanceHelper } from './helpers/badger.claimable.balance-helper';
import { BadgerVaultTokenHelper } from './helpers/badger.vault.token-helper';
import { PolygonBadgerClaimableContractPositionBalanceFetcher } from './polygon/badger.claimable.contract-position-balance-fetcher';
import { BadgerClaimableRewardsResolver } from './helpers/badger.claimable.rewards-resolver';
import { BadgerVaultTokenDefinitionsResolver } from './helpers/badger.vault.token-definition-resolver';
import { PolygonBadgerClaimableContractPositionFetcher } from './polygon/badger.claimable.contract-position-fetcher';
import { PolygonBadgerVaultTokenFetcher } from './polygon/badger.vault.token-fetcher';

Expand All @@ -20,20 +17,17 @@ import { PolygonBadgerVaultTokenFetcher } from './polygon/badger.vault.token-fet
providers: [
BadgerAppDefinition,
BadgerContractFactory,
BadgerClaimableContractPositionBalanceHelper,
BadgerVaultTokenHelper,
BadgerVaultTokenDefinitionsResolver,
BadgerClaimableRewardsResolver,
// Arbitrum
ArbitrumBadgerVaultTokenFetcher,
ArbitrumBadgerClaimableContractPositionFetcher,
ArbitrumBadgerClaimableContractPositionBalanceFetcher,
// Ethereum
EthereumBadgerVaultTokenFetcher,
EthereumBadgerClaimableContractPositionFetcher,
EthereumBadgerClaimableContractPositionBalanceFetcher,
// Polygon
PolygonBadgerVaultTokenFetcher,
PolygonBadgerClaimableContractPositionFetcher,
PolygonBadgerClaimableContractPositionBalanceFetcher,
],
})
export class BadgerAppModule extends AbstractApp() {}

This file was deleted.

0 comments on commit ac7ab96

Please sign in to comment.