import { BigNumber } from 'ethers'; // SmartContract response types export type RewardInfo = { rewardTokenSymbol: string; rewardTokenAddress: string; rewardOracleAddress: string; emissionPerSecond: BigNumber; incentivesLastUpdateTimestamp: BigNumber; tokenIncentivesIndex: BigNumber; emissionEndTimestamp: BigNumber; rewardPriceFeed: BigNumber; rewardTokenDecimals: number; precision: number; priceFeedDecimals: number; }; export interface IncentiveData { tokenAddress: string; incentiveControllerAddress: string; rewardsTokenInformation: RewardInfo[]; } export interface ReservesIncentiveData { underlyingAsset: string; aIncentiveData: IncentiveData; vIncentiveData: IncentiveData; } export interface UserRewardInfo { rewardTokenSymbol: string; rewardOracleAddress: string; rewardTokenAddress: string; userUnclaimedRewards: BigNumber; tokenIncentivesUserIndex: BigNumber; rewardPriceFeed: BigNumber; priceFeedDecimals: number; rewardTokenDecimals: number; } export interface UserIncentiveData { tokenAddress: string; incentiveControllerAddress: string; userRewardsInformation: UserRewardInfo[]; } export interface UserReservesIncentivesData { underlyingAsset: string; aTokenIncentivesUserData: UserIncentiveData; vTokenIncentivesUserData: UserIncentiveData; } export interface FullReservesIncentiveDataResponse { 0: ReservesIncentiveData[]; 1: UserReservesIncentivesData[]; } // Humanized response types export interface RewardInfoHumanized { rewardTokenSymbol: string; rewardTokenAddress: string; rewardOracleAddress: string; emissionPerSecond: string; incentivesLastUpdateTimestamp: number; tokenIncentivesIndex: string; emissionEndTimestamp: number; rewardPriceFeed: string; rewardTokenDecimals: number; precision: number; priceFeedDecimals: number; } export interface IncentiveDataHumanized { tokenAddress: string; incentiveControllerAddress: string; rewardsTokenInformation: RewardInfoHumanized[]; } export interface ReservesIncentiveDataHumanized { id: string; underlyingAsset: string; aIncentiveData: IncentiveDataHumanized; vIncentiveData: IncentiveDataHumanized; } export interface UserRewardInfoHumanized { rewardTokenSymbol: string; rewardOracleAddress: string; rewardTokenAddress: string; userUnclaimedRewards: string; tokenIncentivesUserIndex: string; rewardPriceFeed: string; priceFeedDecimals: number; rewardTokenDecimals: number; } export interface UserIncentiveDataHumanized { tokenAddress: string; incentiveControllerAddress: string; userRewardsInformation: UserRewardInfoHumanized[]; } export interface UserReservesIncentivesDataHumanized { id: string; underlyingAsset: string; aTokenIncentivesUserData: UserIncentiveDataHumanized; vTokenIncentivesUserData: UserIncentiveDataHumanized; }