Skip to content
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
2 changes: 1 addition & 1 deletion src/components/views/VaultPosition.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -851,7 +851,7 @@ const VaultPosition = () => {
</>
)}

{actionActive.index === 4 && <YieldHistory seriesOrVault={_selectedVault!} view={['VAULT']} />}
{actionActive.index === 4 && <YieldHistory item={_selectedVault!} view={['VAULT']} />}
</Box>
</Box>

Expand Down
3 changes: 3 additions & 0 deletions src/config/contracts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export enum ContractNames {
WRAP_ETHER_MODULE = 'WrapEtherModule',
CONVEX_LADLE_MODULE = 'ConvexLadleModule',
TRANSFER_1155_MODULE = 'Transfer1155Module',
VR_ROUTER = 'VRRouter',
}

export type ContractMap = Map<ContractNames, Contract>;
Expand All @@ -34,6 +35,7 @@ export const contractAddresses: ContractAddresses = {
[ContractNames.TRANSFER_1155_MODULE, '0x97f1d43A217aDD678bB6Dcd3C5D51F40b6729d06'],
[ContractNames.WRAP_ETHER_MODULE, '0x22768FCaFe7BB9F03e31cb49823d1Ece30C0b8eA'],
[ContractNames.CONVEX_LADLE_MODULE, '0x9Bf195997581C99cef8be95a3a816Ca19Cf1A3e6'],
[ContractNames.VR_ROUTER, '0x2e0d7680d68cff941482f111f2ed1df867736576'], // <-- will need to update this, necessary to get Deposited Events
]),
],
[
Expand All @@ -47,6 +49,7 @@ export const contractAddresses: ContractAddresses = {
[ContractNames.VR_CAULDRON, '0x51453309441579de245a9e99800b6b7f19e48e1a'],
[ContractNames.VR_WITCH, '0x090e8a0fc6df49f25c3f619bc3bc1cc6d6150b45'],
[ContractNames.VR_LADLE, '0x2ad615c6a63186d4fe24fa6a82277832a7468601'],
[ContractNames.VR_ROUTER, '0x2e0d7680d68cff941482f111f2ed1df867736576'],
]),
],
]),
Expand Down
40 changes: 35 additions & 5 deletions src/contexts/HistoryContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@ import useContracts from '../hooks/useContracts';

import useAccountPlus from '../hooks/useAccountPlus';
import useFork from '../hooks/useFork';
import { ContractNames } from '../config/contracts';
import contractAddresses, { ContractNames } from '../config/contracts';
import { formatUnits } from 'ethers/lib/utils.js';
import useVYTokens from '../hooks/entities/useVYTokens';
import useChainId from '../hooks/useChainId';

const dateFormat = (dateInSecs: number) => format(new Date(dateInSecs * 1000), 'dd MMM yyyy');

Expand Down Expand Up @@ -111,6 +112,7 @@ const HistoryProvider = ({ children }: any) => {
const [historyState, updateState] = useReducer(historyReducer, initState);
const { address: account } = useAccountPlus();
const { data: vyTokens } = useVYTokens();
const chainId = useChainId();

const {
settingsState: { diagnostics },
Expand Down Expand Up @@ -427,8 +429,6 @@ const HistoryProvider = ({ children }: any) => {
ilk?.displaySymbol
}`;

console.log('primaryInfo', primaryInfo, base_, cleanValue(vault.rate_, 2), vault);

return {
/* histItem base */
blockNumber,
Expand Down Expand Up @@ -592,8 +592,15 @@ const HistoryProvider = ({ children }: any) => {
vyTokenAddresses.map(async (address) => {
const vyToken = vyTokens?.get(address);
const vyTokenContract = VYToken__factory.connect(vyToken?.proxyAddress!, provider);

const vrRouterAddr = contractAddresses.addresses.get(chainId)?.get(ContractNames.VR_ROUTER);

const redeemEvents = await vyTokenContract.queryFilter(
vyTokenContract.filters.Redeemed(account, account),
vyTokenContract.filters.Redeemed(null, null),
useForkedEnv ? forkStartBlock : 'earliest'
);
const depositEvents = await vyTokenContract.queryFilter(
vyTokenContract.filters.Deposited(vrRouterAddr, account),
useForkedEnv ? forkStartBlock : 'earliest'
);

Expand All @@ -620,7 +627,30 @@ const HistoryProvider = ({ children }: any) => {
})
);
// TODO get deposit events and make logs
const depositLogs = [] as IHistItemPosition[];
const depositLogs = await Promise.all(
depositEvents.map(async (e) => {
const {
blockNumber,
transactionHash,
args: { underlyingAmount },
} = e;
const base = assetRootMap.get(vyToken?.baseId!);
const underlyingAmount_ = formatUnits(underlyingAmount, base?.decimals);

const date = (await provider.getBlock(blockNumber)).timestamp;

return {
blockNumber,
date,
transactionHash,
actionCode: ActionCodes.LEND,
primaryInfo: `${cleanValue(underlyingAmount_, 2)} ${base?.displaySymbol}`,
date_: dateFormat(date),
} as IHistItemPosition;
})
);

// ^ getting deposit events
const sorted = [...depositLogs, ...redeemLogs].sort((a, b) => a.blockNumber - b.blockNumber);
vyTokenHistMap.set(address, sorted);
})
Expand Down
158 changes: 158 additions & 0 deletions src/contracts/VRRouter.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */

import {
ethers,
EventFilter,
Signer,
BigNumber,
BigNumberish,
PopulatedTransaction,
BaseContract,
ContractTransaction,
Overrides,
PayableOverrides,
CallOverrides,
} from "ethers";
import { BytesLike } from "@ethersproject/bytes";
import { Listener, Provider } from "@ethersproject/providers";
import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi";
import type { TypedEventFilter, TypedEvent, TypedListener } from "./common";

interface VRRouterInterface extends ethers.utils.Interface {
functions: {
"initialize(address)": FunctionFragment;
"owner()": FunctionFragment;
"route(address,bytes)": FunctionFragment;
};

encodeFunctionData(functionFragment: "initialize", values: [string]): string;
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
encodeFunctionData(
functionFragment: "route",
values: [string, BytesLike]
): string;

decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "route", data: BytesLike): Result;

events: {};
}

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

listeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
off<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
on<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
once<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
listener: TypedListener<EventArgsArray, EventArgsObject>
): this;
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
): this;

listeners(eventName?: string): Array<Listener>;
off(eventName: string, listener: Listener): this;
on(eventName: string, listener: Listener): this;
once(eventName: string, listener: Listener): this;
removeListener(eventName: string, listener: Listener): this;
removeAllListeners(eventName?: string): this;

queryFilter<EventArgsArray extends Array<any>, EventArgsObject>(
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;

interface: VRRouterInterface;

functions: {
initialize(
owner_: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

owner(overrides?: CallOverrides): Promise<[string]>;

route(
target: string,
data: BytesLike,
overrides?: PayableOverrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;
};

initialize(
owner_: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

owner(overrides?: CallOverrides): Promise<string>;

route(
target: string,
data: BytesLike,
overrides?: PayableOverrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

callStatic: {
initialize(owner_: string, overrides?: CallOverrides): Promise<void>;

owner(overrides?: CallOverrides): Promise<string>;

route(
target: string,
data: BytesLike,
overrides?: CallOverrides
): Promise<string>;
};

filters: {};

estimateGas: {
initialize(
owner_: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;

owner(overrides?: CallOverrides): Promise<BigNumber>;

route(
target: string,
data: BytesLike,
overrides?: PayableOverrides & { from?: string | Promise<string> }
): Promise<BigNumber>;
};

populateTransaction: {
initialize(
owner_: string,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;

owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;

route(
target: string,
data: BytesLike,
overrides?: PayableOverrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;
};
}
Loading