Skip to content

Commit

Permalink
fix(umami-finance): Rename umami to umami-finance to avoid ad blocker…
Browse files Browse the repository at this point in the history
… gripes (Zapper-fi#924)
  • Loading branch information
immasandwich authored and volt62 committed Aug 2, 2022
1 parent a62888b commit b1630bf
Show file tree
Hide file tree
Showing 23 changed files with 159 additions and 161 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,33 +7,33 @@ import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation
import { BalanceFetcher } from '~balance/balance-fetcher.interface';
import { Network } from '~types/network.interface';

import { UmamiContractFactory } from '../contracts';
import { UMAMI_DEFINITION } from '../umami.definition';
import { UmamiFinanceContractFactory } from '../contracts';
import { UMAMI_FINANCE_DEFINITION } from '../umami-finance.definition';

const network = Network.ARBITRUM_MAINNET;

@Register.BalanceFetcher(UMAMI_DEFINITION.id, network)
export class ArbitrumUmamiBalanceFetcher implements BalanceFetcher {
@Register.BalanceFetcher(UMAMI_FINANCE_DEFINITION.id, network)
export class ArbitrumUmamiFinanceBalanceFetcher implements BalanceFetcher {
constructor(
@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit,
@Inject(UmamiContractFactory) private readonly umamiContractFactory: UmamiContractFactory,
@Inject(UmamiFinanceContractFactory) private readonly contractFactory: UmamiFinanceContractFactory,
) {}

async getMarinatedBalance(address: string) {
const wETH_ADDRESS = '0x82af49447d8a07e3bd95bd0d56f35241523fbab1';
const mUMAMI_ADDRESS = '0x2adabd6e8ce3e82f52d9998a7f64a90d294a92a4';
const WETH_ADDRESS = '0x82af49447d8a07e3bd95bd0d56f35241523fbab1';
const M_UMAMI_ADDRESS = '0x2adabd6e8ce3e82f52d9998a7f64a90d294a92a4';
return this.appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({
address,
appId: UMAMI_DEFINITION.id,
groupId: UMAMI_DEFINITION.groups.marinate.id,
appId: UMAMI_FINANCE_DEFINITION.id,
groupId: UMAMI_FINANCE_DEFINITION.groups.marinate.id,
network,
resolveBalances: async ({ address, contractPosition, multicall }) => {
const stakedToken = contractPosition.tokens.find(item => item.address === mUMAMI_ADDRESS)!;
const rewardToken = contractPosition.tokens.find(item => item.address === wETH_ADDRESS)!;
const contract = this.umamiContractFactory.umamiMarinate(contractPosition);
const stakedToken = contractPosition.tokens.find(item => item.address === M_UMAMI_ADDRESS)!;
const rewardToken = contractPosition.tokens.find(item => item.address === WETH_ADDRESS)!;
const contract = this.contractFactory.umamiFinanceMarinate(contractPosition);
const [stakedBalanceRaw, rewardBalanceRaw] = await Promise.all([
multicall.wrap(contract).balanceOf(address),
multicall.wrap(contract).getAvailableTokenRewards(address, wETH_ADDRESS),
multicall.wrap(contract).getAvailableTokenRewards(address, WETH_ADDRESS),
]);
return [
drillBalance(stakedToken, stakedBalanceRaw.toString()),
Expand All @@ -46,8 +46,8 @@ export class ArbitrumUmamiBalanceFetcher implements BalanceFetcher {
async getCompoundingBalances(address: string) {
return this.appToolkit.helpers.tokenBalanceHelper.getTokenBalances({
address,
appId: UMAMI_DEFINITION.id,
groupId: UMAMI_DEFINITION.groups.compound.id,
appId: UMAMI_FINANCE_DEFINITION.id,
groupId: UMAMI_FINANCE_DEFINITION.groups.compound.id,
network,
});
}
Expand All @@ -57,6 +57,7 @@ export class ArbitrumUmamiBalanceFetcher implements BalanceFetcher {
this.getMarinatedBalance(address),
this.getCompoundingBalances(address),
]);

return presentBalanceFetcherResponse([
{
label: 'Marinating UMAMI',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ import { PositionFetcher } from '~position/position-fetcher.interface';
import { AppTokenPosition } from '~position/position.interface';
import { Network } from '~types/network.interface';

import { UmamiContractFactory } from '../contracts';
import { UMAMI_DEFINITION } from '../umami.definition';
import { UmamiFinanceContractFactory } from '../contracts';
import { UMAMI_FINANCE_DEFINITION } from '../umami-finance.definition';

const appId = UMAMI_DEFINITION.id;
const groupId = UMAMI_DEFINITION.groups.compound.id;
const appId = UMAMI_FINANCE_DEFINITION.id;
const groupId = UMAMI_FINANCE_DEFINITION.groups.compound.id;
const network = Network.ARBITRUM_MAINNET;

type UmamiMarinateApiObject = {
Expand All @@ -35,56 +35,56 @@ export type UmamiApiDatas = {
};

@Register.TokenPositionFetcher({ appId, groupId, network })
export class ArbitrumUmamiCompoundTokenFetcher implements PositionFetcher<AppTokenPosition> {
export class ArbitrumUmamiFinanceCompoundTokenFetcher implements PositionFetcher<AppTokenPosition> {
constructor(
@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit,
@Inject(UmamiContractFactory) private readonly umamiContractFactory: UmamiContractFactory,
@Inject(UmamiFinanceContractFactory) private readonly contractFactory: UmamiFinanceContractFactory,
) {}

@CacheOnInterval({
key: `studio:${network}:${appId}:${groupId}:informations`,
timeout: 15 * 60 * 1000,
timeout: 5 * 60 * 1000,
})
async getUmamiInformations() {
const data = await axios.get<UmamiApiDatas>('https://horseysauce.xyz/').then(v => v.data);

const { marinate } = data;
const { apy } = marinate;
return apy;
try {
const data = await axios.get<UmamiApiDatas>('https://horseysauce.xyz/').then(v => v.data);
return parseFloat(data.marinate.apy);
} catch (err) {
return 0;
}
}

async getPositions() {
const mUMAMI_ADDRESS = '0x2adabd6e8ce3e82f52d9998a7f64a90d294a92a4';
const cmUMAMI_ADDRESS = '0x1922c36f3bc762ca300b4a46bb2102f84b1684ab';
const M_UMAMI_ADDESS = '0x2adabd6e8ce3e82f52d9998a7f64a90d294a92a4';
const CM_UMAMI_ADDRESS = '0x1922c36f3bc762ca300b4a46bb2102f84b1684ab';
const multicall = this.appToolkit.getMulticall(network);

const underlyingTokenContract = this.umamiContractFactory.umamiMarinate({
address: mUMAMI_ADDRESS,
const underlyingTokenContract = this.contractFactory.umamiFinanceMarinate({
address: M_UMAMI_ADDESS,
network,
});
const contract = this.umamiContractFactory.umamiCompound({
address: cmUMAMI_ADDRESS,
const contract = this.contractFactory.umamiFinanceCompound({
address: CM_UMAMI_ADDRESS,
network,
});

const appTokens = await this.appToolkit.getAppTokenPositions({
appId: UMAMI_DEFINITION.id,
groupIds: [UMAMI_DEFINITION.groups.marinate.id],
appId: UMAMI_FINANCE_DEFINITION.id,
groupIds: [UMAMI_FINANCE_DEFINITION.groups.marinate.id],
network,
});

const [symbol, decimals, supplyRaw, balanceRaw] = await Promise.all([
multicall.wrap(contract).symbol(),
multicall.wrap(contract).decimals(),
multicall.wrap(contract).totalSupply(),
multicall.wrap(underlyingTokenContract).balanceOf(cmUMAMI_ADDRESS),
multicall.wrap(underlyingTokenContract).balanceOf(CM_UMAMI_ADDRESS),
]);

const underlyingToken = appTokens.find(v => v.address === mUMAMI_ADDRESS);
const underlyingToken = appTokens.find(v => v.address === M_UMAMI_ADDESS);
if (!underlyingToken) return [];

const apy = await this.getUmamiInformations();

const supply = Number(supplyRaw) / 10 ** decimals;
const reserve = Number(balanceRaw) / 10 ** decimals;
const pricePerShare = reserve / supply;
Expand All @@ -102,15 +102,15 @@ export class ArbitrumUmamiCompoundTokenFetcher implements PositionFetcher<AppTok
},
{
label: 'APY',
value: buildPercentageDisplayItem(parseFloat(apy)),
value: buildPercentageDisplayItem(apy),
},
];

const token: AppTokenPosition = {
type: ContractType.APP_TOKEN,
appId,
groupId,
address: cmUMAMI_ADDRESS,
address: CM_UMAMI_ADDRESS,
network,
symbol,
decimals,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,30 @@ import { ContractPosition } from '~position/position.interface';
import { claimable, supplied } from '~position/position.utils';
import { Network } from '~types/network.interface';

import { UMAMI_DEFINITION } from '../umami.definition';
import { UMAMI_FINANCE_DEFINITION } from '../umami-finance.definition';

const appId = UMAMI_DEFINITION.id;
const groupId = UMAMI_DEFINITION.groups.marinate.id;
const appId = UMAMI_FINANCE_DEFINITION.id;
const groupId = UMAMI_FINANCE_DEFINITION.groups.marinate.id;
const network = Network.ARBITRUM_MAINNET;

@Register.ContractPositionFetcher({ appId, groupId, network })
export class ArbitrumUmamiMarinateContractPositionFetcher implements PositionFetcher<ContractPosition> {
export class ArbitrumUmamiFinanceMarinateContractPositionFetcher implements PositionFetcher<ContractPosition> {
constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) {}

async getPositions() {
const wETH_ADDRESS = '0x82af49447d8a07e3bd95bd0d56f35241523fbab1';
const mUMAMI_ADDRESS = '0x2adabd6e8ce3e82f52d9998a7f64a90d294a92a4';
const WETH_ADDRESS = '0x82af49447d8a07e3bd95bd0d56f35241523fbab1';
const M_UMAMI_ADDRESS = '0x2adabd6e8ce3e82f52d9998a7f64a90d294a92a4';

const baseTokens = await this.appToolkit.getBaseTokenPrices(network);
const appTokens = await this.appToolkit.getAppTokenPositions({
appId: UMAMI_DEFINITION.id,
groupIds: [UMAMI_DEFINITION.groups.marinate.id],
appId: UMAMI_FINANCE_DEFINITION.id,
groupIds: [UMAMI_FINANCE_DEFINITION.groups.marinate.id],
network,
});

const allTokens = [...baseTokens, ...appTokens];
const stakedToken = allTokens.find(v => v.address === mUMAMI_ADDRESS);
const rewardToken = allTokens.find(v => v.address === wETH_ADDRESS);

const stakedToken = allTokens.find(v => v.address === M_UMAMI_ADDRESS);
const rewardToken = allTokens.find(v => v.address === WETH_ADDRESS);
if (!stakedToken || !rewardToken) return [];

const tokens = [supplied(stakedToken), claimable(rewardToken)];
Expand All @@ -46,7 +45,7 @@ export class ArbitrumUmamiMarinateContractPositionFetcher implements PositionFet
type: ContractType.POSITION,
appId,
groupId,
address: mUMAMI_ADDRESS,
address: M_UMAMI_ADDRESS,
network,
tokens,
displayProps: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ import { PositionFetcher } from '~position/position-fetcher.interface';
import { AppTokenPosition } from '~position/position.interface';
import { Network } from '~types/network.interface';

import { UmamiContractFactory } from '../contracts';
import { UMAMI_DEFINITION } from '../umami.definition';
import { UmamiFinanceContractFactory } from '../contracts';
import { UMAMI_FINANCE_DEFINITION } from '../umami-finance.definition';

const appId = UMAMI_DEFINITION.id;
const groupId = UMAMI_DEFINITION.groups.marinate.id;
const appId = UMAMI_FINANCE_DEFINITION.id;
const groupId = UMAMI_FINANCE_DEFINITION.groups.marinate.id;
const network = Network.ARBITRUM_MAINNET;

type UmamiMarinateApiObject = {
Expand All @@ -34,29 +34,29 @@ export type UmamiApiDatas = {
export class ArbitrumUmamiMarinateTokenFetcher implements PositionFetcher<AppTokenPosition> {
constructor(
@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit,
@Inject(UmamiContractFactory) private readonly umamiContractFactory: UmamiContractFactory,
@Inject(UmamiFinanceContractFactory) private readonly contractFactory: UmamiFinanceContractFactory,
) {}

@CacheOnInterval({
key: `studio:${network}:${appId}:${groupId}:informations`,
timeout: 15 * 60 * 1000,
timeout: 5 * 60 * 1000,
})
async getUmamiInformations() {
const data = await axios.get<UmamiApiDatas>('https://horseysauce.xyz/').then(v => v.data);

const { marinate } = data;
const { apr } = marinate;

return apr;
try {
const data = await axios.get<UmamiApiDatas>('https://horseysauce.xyz/').then(v => v.data);
return Number(data.marinate.apr);
} catch (err) {
return 0;
}
}

async getPositions() {
const UMAMI_ADDRESS = '0x1622bF67e6e5747b81866fE0b85178a93C7F86e3'.toLowerCase();
const mUMAMI_ADDRESS = '0x2AdAbD6E8Ce3e82f52d9998a7f64a90d294A92A4'.toLowerCase();
const M_UMAMI_ADDRESS = '0x2AdAbD6E8Ce3e82f52d9998a7f64a90d294A92A4'.toLowerCase();
const multicall = this.appToolkit.getMulticall(network);

const contract = this.umamiContractFactory.umamiMarinate({
address: mUMAMI_ADDRESS,
const contract = this.contractFactory.umamiFinanceMarinate({
address: M_UMAMI_ADDRESS,
network,
});

Expand All @@ -71,9 +71,7 @@ export class ArbitrumUmamiMarinateTokenFetcher implements PositionFetcher<AppTok
const underlyingToken = baseTokenDependencies.find(v => v.address === UMAMI_ADDRESS);
if (!underlyingToken) return [];

const aprRaw = await this.getUmamiInformations();
const apr = Number(aprRaw);

const apr = await this.getUmamiInformations();
const tokens = [underlyingToken];
const pricePerShare = 1.0;
const price = pricePerShare * underlyingToken.price;
Expand All @@ -97,7 +95,7 @@ export class ArbitrumUmamiMarinateTokenFetcher implements PositionFetcher<AppTok
type: ContractType.APP_TOKEN,
appId,
groupId,
address: mUMAMI_ADDRESS,
address: M_UMAMI_ADDRESS,
network,
symbol,
decimals,
Expand Down
File renamed without changes
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common';

export interface UmamiCompoundInterface extends utils.Interface {
export interface UmamiFinanceCompoundInterface extends utils.Interface {
functions: {
'ADMIN_FEE_BIPS()': FunctionFragment;
'ADMIN_ROLE()': FunctionFragment;
Expand Down Expand Up @@ -391,12 +391,12 @@ export type WithdrawEvent = TypedEvent<[string, BigNumber], WithdrawEventObject>

export type WithdrawEventFilter = TypedEventFilter<WithdrawEvent>;

export interface UmamiCompound extends BaseContract {
export interface UmamiFinanceCompound extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;

interface: UmamiCompoundInterface;
interface: UmamiFinanceCompoundInterface;

queryFilter<TEvent extends TypedEvent>(
event: TypedEventFilter<TEvent>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common';

export interface UmamiMarinateInterface extends utils.Interface {
export interface UmamiFinanceMarinateInterface extends utils.Interface {
functions: {
'ADMIN_ROLE()': FunctionFragment;
'BASE()': FunctionFragment;
Expand Down Expand Up @@ -477,12 +477,12 @@ export type WithdrawMultiplierEvent = TypedEvent<[string, string, BigNumber, Big

export type WithdrawMultiplierEventFilter = TypedEventFilter<WithdrawMultiplierEvent>;

export interface UmamiMarinate extends BaseContract {
export interface UmamiFinanceMarinate extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;

interface: UmamiMarinateInterface;
interface: UmamiFinanceMarinateInterface;

queryFilter<TEvent extends TypedEvent>(
event: TypedEventFilter<TEvent>,
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import { Contract, Signer, utils } from 'ethers';
import type { Provider } from '@ethersproject/providers';
import type { UmamiCompound, UmamiCompoundInterface } from '../UmamiCompound';
import type { UmamiFinanceCompound, UmamiFinanceCompoundInterface } from '../UmamiFinanceCompound';

const _abi = [
{
Expand Down Expand Up @@ -1132,12 +1132,12 @@ const _abi = [
},
];

export class UmamiCompound__factory {
export class UmamiFinanceCompound__factory {
static readonly abi = _abi;
static createInterface(): UmamiCompoundInterface {
return new utils.Interface(_abi) as UmamiCompoundInterface;
static createInterface(): UmamiFinanceCompoundInterface {
return new utils.Interface(_abi) as UmamiFinanceCompoundInterface;
}
static connect(address: string, signerOrProvider: Signer | Provider): UmamiCompound {
return new Contract(address, _abi, signerOrProvider) as UmamiCompound;
static connect(address: string, signerOrProvider: Signer | Provider): UmamiFinanceCompound {
return new Contract(address, _abi, signerOrProvider) as UmamiFinanceCompound;
}
}
Loading

0 comments on commit b1630bf

Please sign in to comment.