This commit is contained in:
Georges KABBOUCHI 2021-08-25 22:42:41 +03:00
parent cd003cc517
commit a24c42cd0d
6 changed files with 56 additions and 18 deletions

View File

@ -26,7 +26,7 @@ const {
} = useBigNumber(); } = useBigNumber();
const { getType } = usePosition(); const { getType } = usePosition();
const position = ref<any>({ export const position = ref<any>({
totalSupplyInEth: new BigNumber(0), totalSupplyInEth: new BigNumber(0),
totalBorrowInEth: new BigNumber(0), totalBorrowInEth: new BigNumber(0),
totalBorrowStableInEth: new BigNumber(0), totalBorrowStableInEth: new BigNumber(0),

View File

@ -27,7 +27,7 @@ const {
} = useBigNumber(); } = useBigNumber();
const { getType } = usePosition(); const { getType } = usePosition();
const position = ref<any>({ export const position = ref<any>({
totalSupplyInEth: new BigNumber(0), totalSupplyInEth: new BigNumber(0),
totalBorrowInEth: new BigNumber(0), totalBorrowInEth: new BigNumber(0),
totalBorrowStableInEth: new BigNumber(0), totalBorrowStableInEth: new BigNumber(0),

View File

@ -10,7 +10,7 @@ import abis from "~/constant/abis";
import addresses from "~/constant/addresses"; import addresses from "~/constant/addresses";
import { useDSA } from "../useDSA"; import { useDSA } from "../useDSA";
const trove = ref<any>({ export const trove = ref<any>({
collateral: "0", collateral: "0",
debt: "0", debt: "0",
stabilityAmount: "0", stabilityAmount: "0",

View File

@ -31,7 +31,7 @@ const isNewVault = ref(false);
const vaultTypes = ref([]); const vaultTypes = ref([]);
const vaultType = ref(""); const vaultType = ref("");
const vault = computed(() => { export const vault = computed(() => {
const vlt = vaults.value.find(v => v.id === vaultId.value); const vlt = vaults.value.find(v => v.id === vaultId.value);
if (!isNewVault.value && !!vlt) { if (!isNewVault.value && !!vlt) {
return vlt; return vlt;

View File

@ -1,6 +1,21 @@
import { nextTick, onMounted, ref, watch } from "@nuxtjs/composition-api"; import {
nextTick,
onMounted,
ref,
watch,
watchEffect
} from "@nuxtjs/composition-api";
import tokens from "~/constant/tokens"; import tokens from "~/constant/tokens";
import { buildStrategy, DefineStrategy, IStrategy } from "~/core/strategies"; import {
buildStrategy,
DefineStrategy,
IStrategy,
StrategyProtocol
} from "~/core/strategies";
import { position as aaveV2Position } from "./protocols/useAaveV2Position";
import { position as compoundPosition } from "./protocols/useCompoundPosition";
import { vault as makerPosition } from "./protocols/useMakerdaoPosition";
import { trove as liquityPosition } from "./protocols/useLiquityPosition";
import { useBalances } from "./useBalances"; import { useBalances } from "./useBalances";
import { useDSA } from "./useDSA"; import { useDSA } from "./useDSA";
import useEventBus from "./useEventBus"; import useEventBus from "./useEventBus";
@ -42,7 +57,7 @@ export function useStrategy(defineStrategy: DefineStrategy) {
showConfirmedTransaction(tx); showConfirmedTransaction(tx);
await fetchBalances(true); await fetchBalances(true);
emitEvent(`protocol::${strategy.schema.protocol}::refresh`,{}); emitEvent(`protocol::${strategy.schema.protocol}::refresh`, {});
}, },
from: account.value from: account.value
}); });
@ -56,10 +71,25 @@ export function useStrategy(defineStrategy: DefineStrategy) {
pending.value = false; pending.value = false;
}; };
strategy.setProps({ watchEffect(() => {
convertTokenAmountToBigNumber: valInt, let position = null;
getTokenByKey,
}) if (strategy.schema.protocol == StrategyProtocol.AAVE_V2) {
position = aaveV2Position.value;
} else if (strategy.schema.protocol == StrategyProtocol.MAKERDAO) {
position = makerPosition.value;
} else if (strategy.schema.protocol == StrategyProtocol.COMPOUND) {
position = compoundPosition.value;
} else if (strategy.schema.protocol == StrategyProtocol.LIQUITY) {
position = liquityPosition.value;
}
strategy.setProps({
convertTokenAmountToBigNumber: valInt,
getTokenByKey,
position
});
});
watch(web3, () => strategy.setWeb3(web3.value), { immediate: true }); watch(web3, () => strategy.setWeb3(web3.value), { immediate: true });
watch(dsa, () => strategy.setDSA(dsa.value), { immediate: true }); watch(dsa, () => strategy.setDSA(dsa.value), { immediate: true });
@ -72,8 +102,8 @@ export function useStrategy(defineStrategy: DefineStrategy) {
balances, balances,
() => { () => {
strategy.setProps({ strategy.setProps({
dsaTokens: balances.dsa[networkName.value], dsaBalances: balances.dsa[networkName.value],
userTokens: balances.user[networkName.value] userBalances: balances.user[networkName.value]
}); });
}, },
{ immediate: true } { immediate: true }
@ -99,6 +129,6 @@ export function useStrategy(defineStrategy: DefineStrategy) {
inputs, inputs,
submit, submit,
error, error,
pending, pending
}; };
} }

View File

@ -6,10 +6,12 @@ export interface IStrategyContext {
dsa: DSA; dsa: DSA;
web3: Web3; web3: Web3;
inputs: IStrategyInput<StrategyInputType>[]; inputs: IStrategyInput<StrategyInputType>[];
dsaTokens?: { [address: string]: IStrategyToken }; dsadsaBalances?: { [address: string]: IStrategyToken };
userTokens?: { [address: string]: IStrategyToken }; userdsaBalances?: { [address: string]: IStrategyToken };
tokens?: { [address: string]: IStrategyToken };
convertTokenAmountToBigNumber?: (value: any, decimals: any) => string; convertTokenAmountToBigNumber?: (value: any, decimals: any) => string;
getTokenByKey?: (key: string) => IStrategyToken; getTokenByKey?: (key: string) => IStrategyToken;
position?: any;
} }
export interface IStrategyToken { export interface IStrategyToken {
@ -38,6 +40,9 @@ export type StrategyInputParameterMap = {
export interface IStrategyInput<InputType extends StrategyInputType> { export interface IStrategyInput<InputType extends StrategyInputType> {
type: InputType; type: InputType;
name: string; name: string;
variables?: object;
placeholder?: ( placeholder?: (
context: IStrategyContext & { context: IStrategyContext & {
input: IStrategyInput<InputType> & StrategyInputParameterMap[InputType]; input: IStrategyInput<InputType> & StrategyInputParameterMap[InputType];
@ -57,7 +62,10 @@ export interface IStrategyInput<InputType extends StrategyInputType> {
} }
export enum StrategyProtocol { export enum StrategyProtocol {
AAVE_V2 = "aaveV2" AAVE_V2 = "aaveV2",
COMPOUND = "compound",
MAKERDAO = "makerdao",
LIQUITY = "liquity",
} }
export interface IStrategy { export interface IStrategy {
protocol: StrategyProtocol; protocol: StrategyProtocol;