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();
const { getType } = usePosition();
const position = ref<any>({
export const position = ref<any>({
totalSupplyInEth: new BigNumber(0),
totalBorrowInEth: new BigNumber(0),
totalBorrowStableInEth: new BigNumber(0),

View File

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

View File

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

View File

@ -31,7 +31,7 @@ const isNewVault = ref(false);
const vaultTypes = ref([]);
const vaultType = ref("");
const vault = computed(() => {
export const vault = computed(() => {
const vlt = vaults.value.find(v => v.id === vaultId.value);
if (!isNewVault.value && !!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 { 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 { useDSA } from "./useDSA";
import useEventBus from "./useEventBus";
@ -42,7 +57,7 @@ export function useStrategy(defineStrategy: DefineStrategy) {
showConfirmedTransaction(tx);
await fetchBalances(true);
emitEvent(`protocol::${strategy.schema.protocol}::refresh`,{});
emitEvent(`protocol::${strategy.schema.protocol}::refresh`, {});
},
from: account.value
});
@ -50,16 +65,31 @@ export function useStrategy(defineStrategy: DefineStrategy) {
close();
} catch (e) {
console.error(e);
error.value = e.message;
}
pending.value = false;
};
strategy.setProps({
convertTokenAmountToBigNumber: valInt,
getTokenByKey,
})
watchEffect(() => {
let position = null;
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(dsa, () => strategy.setDSA(dsa.value), { immediate: true });
@ -72,8 +102,8 @@ export function useStrategy(defineStrategy: DefineStrategy) {
balances,
() => {
strategy.setProps({
dsaTokens: balances.dsa[networkName.value],
userTokens: balances.user[networkName.value]
dsaBalances: balances.dsa[networkName.value],
userBalances: balances.user[networkName.value]
});
},
{ immediate: true }
@ -99,6 +129,6 @@ export function useStrategy(defineStrategy: DefineStrategy) {
inputs,
submit,
error,
pending,
pending
};
}

View File

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