Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v4.0.1 + withdraw option redesign #696

Merged
merged 6 commits into from
Nov 23, 2023
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
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ const strategiesInfo = [
name: 'Osmosis ATOM/OSMO LP Strategy',
description: '',
gitUrl: '',
unbondingTimeSec: '1209600',
poolInfo: {
type: 'osmosis',
poolId: '1',
Expand All @@ -252,6 +253,7 @@ const strategiesInfo = [
name: 'Osmosis stATOM/ATOM Strategy (ATOM deposit)',
description: '',
gitUrl: '',
unbondingTimeSec: '1209600',
poolInfo: {
type: 'osmosis',
poolId: '803',
Expand All @@ -263,6 +265,7 @@ const strategiesInfo = [
name: 'Osmosis ATOM/OSMO strategy (OSMO deposit)',
description: '',
gitUrl: '',
unbondingTimeSec: '1209600',
poolInfo: {
type: 'osmosis',
poolId: '1',
Expand All @@ -274,6 +277,7 @@ const strategiesInfo = [
name: 'Osmosis AKT/OSMO strategy (OSMO deposit)',
description: '',
gitUrl: '',
unbondingTimeSec: '1209600',
poolInfo: {
type: 'osmosis',
poolId: '3',
Expand Down
5 changes: 3 additions & 2 deletions projects/portal/src/app/models/config.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export type Config = {
}[];
apps: AppNavigation[];
denomMetadata: cosmosclient.proto.cosmos.bank.v1beta1.IMetadata[];
strategiesInfo: YieldInfo[];
strategiesInfo: StrategyInfo[];
certifiedVaults: string[];
externalChains: ChainInfo[];
extension?: {
Expand Down Expand Up @@ -59,7 +59,7 @@ export type AppNavigation = {
icon: string;
};

export type YieldInfo = {
export type StrategyInfo = {
id: string;
denom?: string;
name?: string;
Expand All @@ -68,6 +68,7 @@ export type YieldInfo = {
minApy: number;
maxApy?: number;
certainty: boolean;
unbondingTimeSec?: string;
poolInfo?:
| {
type: 'osmosis';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { StrategyInfo } from '../config.service';

export type DepositToVaultRequest = {
vaultId: string;
denom: string;
Expand Down Expand Up @@ -35,3 +37,15 @@ export type TransferVaultRequest = {
vaultId: string;
recipientAddress: string;
};

export type VaultInfo = {
id: string;
symbol?: string;
name?: string;
description?: string;
gitUrl?: string;
minApy: number;
maxApy?: number;
certainty: boolean;
poolInfos: (StrategyInfo & { weight?: string })[];
};
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { Config, YieldInfo } from '../config.service';
import { Config, StrategyInfo } from '../config.service';
import { getDenomExponent } from '../cosmos/bank.model';
import { BankQueryService } from '../cosmos/bank.query.service';
import { BankService } from '../cosmos/bank.service';
import { TxCommonService } from '../cosmos/tx-common.service';
import { OsmosisPoolAPRs } from './osmosis/osmosis-pool.model';
import { OsmosisPoolService } from './osmosis/osmosis-pool.service';
import { VaultInfo } from './yield-aggregator.model';
import { Injectable } from '@angular/core';
import cosmosclient from '@cosmos-client/core';
import Long from 'long';
Expand Down Expand Up @@ -183,7 +184,7 @@ export class YieldAggregatorService {
);
}

async getStrategyAPR(strategyInfo?: YieldInfo): Promise<OsmosisPoolAPRs> {
async getStrategyAPR(strategyInfo?: StrategyInfo): Promise<OsmosisPoolAPRs> {
if (!strategyInfo) {
return { totalAPR: 0 };
}
Expand All @@ -201,7 +202,7 @@ export class YieldAggregatorService {
return { totalAPR: strategyInfo.minApy };
}

async getStrategySuperfluidAPR(strategyInfo?: YieldInfo): Promise<number | undefined> {
async getStrategySuperfluidAPR(strategyInfo?: StrategyInfo): Promise<number | undefined> {
if (!strategyInfo) {
return;
}
Expand All @@ -213,22 +214,18 @@ export class YieldAggregatorService {
return;
}

async calcVaultAPY(vault: Vault200Response, config: Config): Promise<YieldInfo> {
async calcVaultAPY(vault: Vault200Response, config: Config): Promise<VaultInfo> {
if (!vault.vault?.strategy_weights) {
return {
id: vault.vault?.id || '',
denom: vault.vault?.symbol || '',
name: vault.vault?.name || '',
description: vault.vault?.description || '',
gitURL: '',
minApy: 0,
maxApy: 0,
certainty: false,
poolInfo: { type: 'osmosis', poolId: '' },
poolInfos: [],
};
}
let vaultAPY = 0;
let vaultAPYCertainty = false;
let poolInfos: (StrategyInfo & { weight?: string })[] = [];

for (const strategyWeight of vault.vault.strategy_weights) {
const strategyInfo = config?.strategiesInfo?.find(
Expand All @@ -241,6 +238,7 @@ export class YieldAggregatorService {
}
const poolInfo = strategyInfo.poolInfo;
if (poolInfo.type === 'osmosis') {
poolInfos.push({ ...strategyInfo, weight: strategyWeight.weight });
if (poolInfo.apr) {
vaultAPY += poolInfo.apr * Number(strategyWeight.weight);
continue;
Expand All @@ -252,14 +250,13 @@ export class YieldAggregatorService {

return {
id: vault.vault?.id || '',
denom: vault.vault?.symbol || '',
name: vault.vault?.name || '',
description: vault.vault?.description || '',
gitURL: '',
symbol: vault.vault?.symbol,
name: vault.vault?.name,
description: vault.vault?.description,
minApy: vaultAPY,
maxApy: vaultAPY,
certainty: vaultAPYCertainty,
poolInfo: { type: 'osmosis', poolId: '' },
poolInfos,
};
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import cosmosclient from '@cosmos-client/core';
import { ConfigService, YieldInfo } from 'projects/portal/src/app/models/config.service';
import { ConfigService, StrategyInfo } from 'projects/portal/src/app/models/config.service';
import { BankQueryService } from 'projects/portal/src/app/models/cosmos/bank.query.service';
import { OsmosisPoolAPRs } from 'projects/portal/src/app/models/yield-aggregators/osmosis/osmosis-pool.model';
import { YieldAggregatorQueryService } from 'projects/portal/src/app/models/yield-aggregators/yield-aggregator.query.service';
Expand All @@ -28,7 +28,7 @@ export class StrategyComponent implements OnInit {
strategy$: Observable<StrategyAll200ResponseStrategiesInner | undefined>;
vaults$: Observable<VaultAll200ResponseVaultsInner[]>;
weights$: Observable<(string | undefined)[]>;
strategyInfo$: Observable<YieldInfo | undefined>;
strategyInfo$: Observable<StrategyInfo | undefined>;
strategyAPR$: Observable<OsmosisPoolAPRs>;

constructor(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import cosmosclient from '@cosmos-client/core';
import { BandProtocolService } from 'projects/portal/src/app/models/band-protocols/band-protocol.service';
import { ConfigService, YieldInfo } from 'projects/portal/src/app/models/config.service';
import { ConfigService } from 'projects/portal/src/app/models/config.service';
import { getDenomExponent } from 'projects/portal/src/app/models/cosmos/bank.model';
import { BankQueryService } from 'projects/portal/src/app/models/cosmos/bank.query.service';
import { WalletApplicationService } from 'projects/portal/src/app/models/wallets/wallet.application.service';
Expand All @@ -11,6 +11,7 @@ import { WalletService } from 'projects/portal/src/app/models/wallets/wallet.ser
import { YieldAggregatorApplicationService } from 'projects/portal/src/app/models/yield-aggregators/yield-aggregator.application.service';
import {
DepositToVaultRequest,
VaultInfo,
WithdrawFromVaultRequest,
WithdrawFromVaultWithUnbondingRequest,
} from 'projects/portal/src/app/models/yield-aggregators/yield-aggregator.model';
Expand Down Expand Up @@ -53,7 +54,7 @@ export class VaultComponent implements OnInit {
estimatedDepositedAmount$: Observable<EstimateRedeemAmount200Response>;
vaultBalance$: Observable<cosmosclient.proto.cosmos.base.v1beta1.ICoin>;
usdDepositAmount$: Observable<number>;
vaultInfo$: Observable<YieldInfo>;
vaultInfo$: Observable<VaultInfo>;
externalWalletAddress: string | undefined;

constructor(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { BandProtocolService } from '../../../models/band-protocols/band-protocol.service';
import { ConfigService, YieldInfo } from '../../../models/config.service';
import { ConfigService } from '../../../models/config.service';
import { BankQueryService } from '../../../models/cosmos/bank.query.service';
import { StoredWallet } from '../../../models/wallets/wallet.model';
import { WalletService } from '../../../models/wallets/wallet.service';
import { VaultInfo } from '../../../models/yield-aggregators/yield-aggregator.model';
import { YieldAggregatorQueryService } from '../../../models/yield-aggregators/yield-aggregator.query.service';
import { YieldAggregatorService } from '../../../models/yield-aggregators/yield-aggregator.service';
import { Component, OnInit } from '@angular/core';
Expand All @@ -20,7 +21,7 @@ export class VaultsComponent implements OnInit {
address$: Observable<string>;
vaults$: Observable<VaultAll200ResponseVaultsInner[]>;
symbols$: Observable<{ symbol: string; display: string; img: string }[]>;
vaultsInfo$: Observable<YieldInfo[]>;
vaultsInfo$: Observable<VaultInfo[]>;
totalDeposits$: Observable<number[]>;
keyword$: Observable<string>;
sortType$: BehaviorSubject<string> = new BehaviorSubject<string>('id');
Expand All @@ -46,7 +47,7 @@ export class VaultsComponent implements OnInit {
const symbolMetadataMap$ = this.bankQuery.getSymbolMetadataMap$();
const vaultYieldMap$ = combineLatest([vaults$, config$]).pipe(
switchMap(async ([vaults, config]) => {
const results: YieldInfo[] = [];
const results: VaultInfo[] = [];
if (!config) {
return results;
}
Expand All @@ -57,7 +58,7 @@ export class VaultsComponent implements OnInit {
return results;
}),
map((yields) => {
const yieldMap: { [id: string]: YieldInfo } = {};
const yieldMap: { [id: string]: VaultInfo } = {};
for (const y of yields) {
yieldMap[y.id] = y;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ <h2 class="card-title">
}}</a>
</td>
</tr>
<tr>
<td>Unbonding time</td>
<td>{{ strategyInfo?.unbondingTimeSec | secondToDate }} Days</td>
</tr>
</tbody>
</table>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Component, Input, OnChanges, OnInit } from '@angular/core';
import cosmosclient from '@cosmos-client/core';
import { YieldInfo } from 'projects/portal/src/app/models/config.service';
import { StrategyInfo } from 'projects/portal/src/app/models/config.service';
import { OsmosisPoolAPRs } from 'projects/portal/src/app/models/yield-aggregators/osmosis/osmosis-pool.model';
import {
StrategyAll200ResponseStrategiesInner,
Expand Down Expand Up @@ -30,7 +30,7 @@ export class StrategyComponent implements OnInit, OnChanges {
@Input()
weights?: (string | undefined)[] | null;
@Input()
strategyInfo?: YieldInfo | null;
strategyInfo?: StrategyInfo | null;
@Input()
strategyAPR?: OsmosisPoolAPRs | null;

Expand Down
Loading
Loading