diff --git a/src/apps/aura/assets/logo.png b/src/apps/aura/assets/logo.png new file mode 100644 index 000000000..f76ad8bf1 Binary files /dev/null and b/src/apps/aura/assets/logo.png differ diff --git a/src/apps/aura/aura.definition.ts b/src/apps/aura/aura.definition.ts new file mode 100644 index 000000000..40a3d975a --- /dev/null +++ b/src/apps/aura/aura.definition.ts @@ -0,0 +1,65 @@ +import { Register } from '~app-toolkit/decorators'; +import { appDefinition, AppDefinition } from '~app/app.definition'; +import { AppAction, AppTag, GroupType } from '~app/app.interface'; +import { Network } from '~types/network.interface'; + +export const AURA_DEFINITION = appDefinition({ + id: 'aura', + name: 'Aura Finance', + description: + 'Aura Finance is a governance and liquidity aggregation protocol built on top of Balancer, with platform-agnostic support for any ve-token system.', + url: 'https://app.aura.finance', + + groups: { + chef: { + id: 'chef', + type: GroupType.TOKEN, + label: 'auraBAL Rewards', + }, + staking: { + id: 'staking', + type: GroupType.TOKEN, + label: 'Staked auraBAL', + }, + pools: { + id: 'pools', + type: GroupType.TOKEN, + label: 'Balancer Pools', + }, + locker: { + id: 'locker', + type: GroupType.POSITION, + label: 'Locked AURA', + }, + }, + + tags: [AppTag.LIQUIDITY_POOL], + keywords: [], + + links: { + twitter: 'https://twitter.com/AuraFinance', + discord: 'https://discord.gg/aurafinance', + medium: 'https://mirror.xyz/0xfEE0Bbe31345a7c27368534fEf45a57133FF3A86', + github: 'https://github.com/aurafinance', + }, + + supportedNetworks: { + [Network.ETHEREUM_MAINNET]: [AppAction.VIEW], + }, + + primaryColor: '#7c3aed', + + token: { + address: '0xc0c293ce456ff0ed870add98a0828dd4d2903dbf', + network: Network.ETHEREUM_MAINNET, + }, +}); + +@Register.AppDefinition(AURA_DEFINITION.id) +export class AuraAppDefinition extends AppDefinition { + constructor() { + super(AURA_DEFINITION); + } +} + +export default AURA_DEFINITION; diff --git a/src/apps/aura/aura.module.ts b/src/apps/aura/aura.module.ts new file mode 100644 index 000000000..a4e395b30 --- /dev/null +++ b/src/apps/aura/aura.module.ts @@ -0,0 +1,37 @@ +import { Register } from '~app-toolkit/decorators'; +import { AbstractApp } from '~app/app.dynamic-module'; +import { BalancerV2AppModule } from '~apps/balancer-v2'; +import { SynthetixAppModule } from '~apps/synthetix'; + +import { AuraAppDefinition, AURA_DEFINITION } from './aura.definition'; +import { AuraContractFactory } from './contracts'; +import { EthereumAuraBalanceFetcher } from './ethereum/aura.balance-fetcher'; +import { EthereumAuraChefContractPositionFetcher } from './ethereum/aura.chef.contract-position-fetcher'; +import { EthereumAuraChefTokenFetcher } from './ethereum/aura.chef.token-fetcher'; +import { EthereumAuraLockerContractPositionFetcher } from './ethereum/aura.locker.contract-position-fetcher'; +import { EthereumAuraPoolsContractPositionFetcher } from './ethereum/aura.pools.contract-position-fetcher'; +import { EthereumAuraPoolsTokenFetcher } from './ethereum/aura.pools.token-fetcher'; +import { EthereumAuraStakingContractPositionFetcher } from './ethereum/aura.staking.contract-position-fetcher'; +import { AuraBalancerPoolsHelper } from './helpers/aura.balancer-pools-helper'; +import { AuraBaseRewardPoolHelper } from './helpers/aura.base-reward-pool-helper'; + +@Register.AppModule({ + appId: AURA_DEFINITION.id, + imports: [SynthetixAppModule, BalancerV2AppModule], + providers: [ + AuraAppDefinition, + AuraContractFactory, + // Ethereum + EthereumAuraBalanceFetcher, + EthereumAuraChefTokenFetcher, + EthereumAuraPoolsTokenFetcher, + EthereumAuraChefContractPositionFetcher, + EthereumAuraPoolsContractPositionFetcher, + EthereumAuraLockerContractPositionFetcher, + EthereumAuraStakingContractPositionFetcher, + // Helpers + AuraBalancerPoolsHelper, + AuraBaseRewardPoolHelper, + ], +}) +export class AuraAppModule extends AbstractApp() {} diff --git a/src/apps/aura/aura.types.ts b/src/apps/aura/aura.types.ts new file mode 100644 index 000000000..c736704ae --- /dev/null +++ b/src/apps/aura/aura.types.ts @@ -0,0 +1,25 @@ +export type AuraBaseRewardPoolDataProps = { + extraRewards: { address: string; rewardToken: string }[]; + rewardToken: string; +}; + +export type BalancerPool = { + id: string; + address: string; + name: string; + poolType: string; + swapFee: number; + symbol: string; + tokensList: string; + totalLiquidity: number; + totalSwapVolume: number; + totalSwapFee: number; + totalShares: number; + tokens: { + address: string; + symbol: string; + decimals: number; + balance: number; + weight: number; + }[]; +}; diff --git a/src/apps/aura/contracts/abis/aura-locker.json b/src/apps/aura/contracts/abis/aura-locker.json new file mode 100644 index 000000000..aa0545710 --- /dev/null +++ b/src/apps/aura/contracts/abis/aura-locker.json @@ -0,0 +1,1337 @@ +[ + { + "inputs": [ + { + "internalType": "string", + "name": "_nameArg", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbolArg", + "type": "string" + }, + { + "internalType": "address", + "name": "_stakingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_cvxCrv", + "type": "address" + }, + { + "internalType": "address", + "name": "_cvxCrvStaking", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "blacklisted", + "type": "bool" + } + ], + "name": "BlacklistModified", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "fromDelegate", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toDelegate", + "type": "address" + } + ], + "name": "DelegateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegate", + "type": "address" + } + ], + "name": "DelegateCheckpointed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "KickIncentiveSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_kicked", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_reward", + "type": "uint256" + } + ], + "name": "KickReward", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "Recovered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_reward", + "type": "uint256" + } + ], + "name": "RewardAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_rewardsToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_reward", + "type": "uint256" + } + ], + "name": "RewardPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Shutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_paidAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_lockedAmount", + "type": "uint256" + } + ], + "name": "Staked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_relocked", + "type": "bool" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_distributor", + "type": "address" + } + ], + "name": "addReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_distributor", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "approveRewardDistributor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_epoch", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "balanceAtEpochOf", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balances", + "outputs": [ + { + "internalType": "uint112", + "name": "locked", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "nextUnlockIndex", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "blacklist", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointEpoch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint32", + "name": "pos", + "type": "uint32" + } + ], + "name": "checkpoints", + "outputs": [ + { + "components": [ + { + "internalType": "uint224", + "name": "votes", + "type": "uint224" + }, + { + "internalType": "uint32", + "name": "epochStart", + "type": "uint32" + } + ], + "internalType": "struct AuraLocker.DelegateeCheckpoint", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "claimableRewards", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct AuraLocker.EarnedData[]", + "name": "userRewards", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cvxCrv", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cvxcrvStaking", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newDelegatee", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "delegateeUnlocks", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "delegates", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "denominator", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "epochCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "epochs", + "outputs": [ + { + "internalType": "uint224", + "name": "supply", + "type": "uint224" + }, + { + "internalType": "uint32", + "name": "date", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_time", + "type": "uint256" + } + ], + "name": "findEpochId", + "outputs": [ + { + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "getPastTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "getPastVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "votes", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_stake", + "type": "bool" + } + ], + "name": "getReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "getReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool[]", + "name": "_skipIdx", + "type": "bool[]" + } + ], + "name": "getReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isShutdown", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "kickExpiredLocks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "kickRewardEpochDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "kickRewardPerEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsToken", + "type": "address" + } + ], + "name": "lastTimeRewardApplicable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "lock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "lockDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "lockedBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "total", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockable", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "locked", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint112", + "name": "amount", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "unlockTime", + "type": "uint32" + } + ], + "internalType": "struct AuraLocker.LockedBalance[]", + "name": "lockData", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lockedSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_blacklisted", + "type": "bool" + } + ], + "name": "modifyBlacklist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "newRewardRatio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "numCheckpoints", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_relock", + "type": "bool" + } + ], + "name": "processExpiredLocks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_rewards", + "type": "uint256" + } + ], + "name": "queueNewRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "queuedRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenAmount", + "type": "uint256" + } + ], + "name": "recoverERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "rewardData", + "outputs": [ + { + "internalType": "uint32", + "name": "periodFinish", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "lastUpdateTime", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "rewardRate", + "type": "uint96" + }, + { + "internalType": "uint96", + "name": "rewardPerTokenStored", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "rewardDistributors", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_rewardsToken", + "type": "address" + } + ], + "name": "rewardPerToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "rewardTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "setApprovals", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_delay", + "type": "uint256" + } + ], + "name": "setKickIncentive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "shutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stakingToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_epoch", + "type": "uint256" + } + ], + "name": "totalSupplyAtEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userData", + "outputs": [ + { + "internalType": "uint128", + "name": "rewardPerTokenPaid", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "rewards", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "userLocks", + "outputs": [ + { + "internalType": "uint112", + "name": "amount", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "unlockTime", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/src/apps/aura/contracts/abis/aura-masterchef.json b/src/apps/aura/contracts/abis/aura-masterchef.json new file mode 100644 index 000000000..3b0cedc23 --- /dev/null +++ b/src/apps/aura/contracts/abis/aura-masterchef.json @@ -0,0 +1,544 @@ +[ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_cvx", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_rewardPerBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_startBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_endBlock", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "EmergencyWithdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "BONUS_MULTIPLIER", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_allocPoint", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "_lpToken", + "type": "address" + }, + { + "internalType": "contract IRewarder", + "name": "_rewarder", + "type": "address" + } + ], + "name": "add", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cvx", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + } + ], + "name": "emergencyWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "endBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_from", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_to", + "type": "uint256" + } + ], + "name": "getMultiplier", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isAddedPool", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "massUpdatePools", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "pendingCvx", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "poolInfo", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "lpToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allocPoint", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accCvxPerShare", + "type": "uint256" + }, + { + "internalType": "contract IRewarder", + "name": "rewarder", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_allocPoint", + "type": "uint256" + }, + { + "internalType": "contract IRewarder", + "name": "_rewarder", + "type": "address" + }, + { + "internalType": "bool", + "name": "_updateRewarder", + "type": "bool" + } + ], + "name": "set", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "startBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalAllocPoint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + } + ], + "name": "updatePool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardDebt", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/aura/contracts/abis/aura-token.json b/src/apps/aura/contracts/abis/aura-token.json new file mode 100644 index 000000000..d379dad19 --- /dev/null +++ b/src/apps/aura/contracts/abis/aura-token.json @@ -0,0 +1,470 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_proxy", + "type": "address" + }, + { + "internalType": "string", + "name": "_nameArg", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbolArg", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Initialised", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOperator", + "type": "address" + } + ], + "name": "OperatorChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "EMISSIONS_MAX_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INIT_MINT_AMOUNT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "address", + "name": "_minter", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "minter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "minterMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "reductionPerCliff", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalCliffs", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "updateOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vecrvProxy", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/src/apps/aura/contracts/abis/aura-virtual-balance-reward-pool.json b/src/apps/aura/contracts/abis/aura-virtual-balance-reward-pool.json new file mode 100644 index 000000000..e9ed226e5 --- /dev/null +++ b/src/apps/aura/contracts/abis/aura-virtual-balance-reward-pool.json @@ -0,0 +1,452 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "deposit_", + "type": "address" + }, + { + "internalType": "address", + "name": "reward_", + "type": "address" + }, + { + "internalType": "address", + "name": "op_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "name": "RewardAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "name": "RewardPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Staked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "deposits", + "outputs": [ + { + "internalType": "contract IDeposit", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "donate", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "duration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "earned", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "getReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "historicalRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastTimeRewardApplicable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastUpdateTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "newRewardRatio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "periodFinish", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewards", + "type": "uint256" + } + ], + "name": "queueNewRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "queuedRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerTokenStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "rewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userRewardPerTokenPaid", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/aura/contracts/abis/balancer-helpers.json b/src/apps/aura/contracts/abis/balancer-helpers.json new file mode 100644 index 000000000..3c0392a1d --- /dev/null +++ b/src/apps/aura/contracts/abis/balancer-helpers.json @@ -0,0 +1,148 @@ +[ + { + "inputs": [ + { + "internalType": "contract IVault", + "name": "_vault", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.ExitPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "queryExit", + "outputs": [ + { + "internalType": "uint256", + "name": "bptIn", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "amountsOut", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.JoinPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "queryJoin", + "outputs": [ + { + "internalType": "uint256", + "name": "bptOut", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vault", + "outputs": [ + { + "internalType": "contract IVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/src/apps/aura/contracts/abis/base-reward-pool.json b/src/apps/aura/contracts/abis/base-reward-pool.json new file mode 100644 index 000000000..7f525d89b --- /dev/null +++ b/src/apps/aura/contracts/abis/base-reward-pool.json @@ -0,0 +1,679 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BaseRewardPool", + "sourceName": "convex-platform/contracts/contracts/BaseRewardPool.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "pid_", + "type": "uint256" + }, + { + "internalType": "address", + "name": "stakingToken_", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardToken_", + "type": "address" + }, + { + "internalType": "address", + "name": "operator_", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardManager_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "name": "RewardAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "name": "RewardPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Staked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_reward", + "type": "address" + } + ], + "name": "addExtraReward", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "clearExtraRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "currentRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "donate", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "duration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "earned", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "extraRewards", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "extraRewardsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReward", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_claimExtras", + "type": "bool" + } + ], + "name": "getReward", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "historicalRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastTimeRewardApplicable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastUpdateTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "newRewardRatio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "periodFinish", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pid", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "processIdleRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewards", + "type": "uint256" + } + ], + "name": "queueNewRewards", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "queuedRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerTokenStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "rewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "stake", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stakeAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_for", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "stakeFor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stakingToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userRewardPerTokenPaid", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "claim", + "type": "bool" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "claim", + "type": "bool" + } + ], + "name": "withdrawAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "claim", + "type": "bool" + } + ], + "name": "withdrawAllAndUnwrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "claim", + "type": "bool" + } + ], + "name": "withdrawAndUnwrap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x61012060405260008055600060015560006004556000600555600060065534801561002957600080fd5b50604051611d09380380611d09833981810160405260a081101561004c57600080fd5b50805160208201516040830151606080850151608095860151610100959095526001600160601b031993821b841660a05291811b8316909452831b811660c052911b1660e05260805160601c60a05160601c60c05160601c60e05160601c61010051611beb61011e60003980610cd4528061106d528061175e5250806105ae52806106305280610acd52508061099c52806109cb5280610ca5528061179552508061069d52806108975280610e595280610eab5280610f75525080610c7c528061109e52806110dd5250611beb6000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80636c8bcee811610130578063a694fc3a116100b8578063df136d651161007c578063df136d65146104f6578063ebe2b12b146104fe578063f106845414610506578063f14faf6f1461050e578063f7c618c11461052b57610226565b8063a694fc3a1461049c578063c32e7202146104b9578063c8f33c91146104de578063cd3daf9d146104e6578063d55a23f4146104ee57610226565b80637b0a47ee116100ff5780637b0a47ee1461045657806380faa57d1461045e5780638b876347146104665780638dcb40611461048c578063901a7d531461049457610226565b80636c8bcee8146103f25780637050ccd9146103fa57806370a082311461042857806372f702f31461044e57610226565b806338d07436116101b357806349f039a21161018257806349f039a214610380578063570ca7351461039f578063590a41f5146103a75780635e43c47b146103c457806363d38c3b146103ea57610226565b806338d074361461032e5780633d18b912146103535780633e8b83e31461035b57806340c354461461036357610226565b80630fb5a6b4116101fa5780630fb5a6b4146102b757806318160ddd146102bf5780631c1c6fe5146102c7578063262d3d6d146102e65780632ee40908146102ee57610226565b80628cc2621461022b5780630569d388146102635780630700037d1461026d5780630f4ef8a614610293575b600080fd5b6102516004803603602081101561024157600080fd5b50356001600160a01b0316610533565b60408051918252519081900360200190f35b61026b6105a3565b005b6102516004803603602081101561028357600080fd5b50356001600160a01b031661061c565b61029b61062e565b604080516001600160a01b039092168252519081900360200190f35b610251610652565b610251610659565b61026b600480360360208110156102dd57600080fd5b50351515610660565b61025161067e565b61031a6004803603604081101561030457600080fd5b506001600160a01b038135169060200135610684565b604080519115158252519081900360200190f35b61031a6004803603604081101561034457600080fd5b5080359060200135151561070e565b61031a610919565b61026b61092e565b61029b6004803603602081101561037957600080fd5b5035610959565b61026b6004803603602081101561039657600080fd5b50351515610980565b61029b61099a565b61031a600480360360208110156103bd57600080fd5b50356109be565b61031a600480360360208110156103da57600080fd5b50356001600160a01b0316610ac0565b610251610be0565b610251610be6565b61031a6004803603604081101561041057600080fd5b506001600160a01b0381351690602001351515610bec565b6102516004803603602081101561043e57600080fd5b50356001600160a01b0316610e3c565b61029b610e57565b610251610e7b565b610251610e81565b6102516004803603602081101561047c57600080fd5b50356001600160a01b0316610e94565b61031a610ea6565b610251610f56565b61031a600480360360208110156104b257600080fd5b5035610f5c565b61031a600480360360408110156104cf57600080fd5b50803590602001351515610fdb565b610251611005565b61025161100b565b610251611059565b61025161105f565b610251611065565b61025161106b565b61031a6004803603602081101561052457600080fd5b503561108f565b61029b6110db565b6001600160a01b038116600090815260096020908152604080832054600890925282205461059b919061059590670de0b6b3a76400009061058f906105809061057a61100b565b906110ff565b61058988610e3c565b9061115c565b906111bc565b90611223565b90505b919050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461060e576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b61061a600b6000611b0a565b565b60096020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b62093a8081565b6007545b90565b336000908152600a602052604090205461067a908261070e565b5050565b60065481565b6000610690828461127d565b6106c56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611419565b6040805183815290516001600160a01b038516917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25060015b92915050565b60003361071961100b565b600355610724610e81565b6002556001600160a01b0381161561076b5761073f81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b600084116107c0576040805162461bcd60e51b815260206004820152601e60248201527f526577617264506f6f6c203a2043616e6e6f7420776974686472617720300000604482015290519081900360640190fd5b60005b600b5481101561085357600b81815481106107da57fe5b60009182526020822001546040805163f3fef3a360e01b81523360048201526024810189905290516001600160a01b039092169263f3fef3a39260448084019382900301818387803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b5050600190920191506107c39050565b5060075461086190856110ff565b600755336000908152600a602052604090205461087e90856110ff565b336000818152600a60205260409020919091556108c6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169086611479565b60408051858152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a2821561090f5761090d336001610bec565b505b5060019392505050565b6000610926336001610bec565b506001905090565b600054421015801561094257506000600454115b1561061a576109526004546114d0565b6000600455565b600b818154811061096657fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600a602052604090205461067a9082610fdb565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a2b576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b600454610a39908390611223565b91506000544210610a5a57610a4d826114d0565b506000600455600161059e565b60008054610a7690610a6f9062093a806110ff565b42906110ff565b60015490915081026000610a908561058f846103e861115c565b905061033e811015610aaf57610aa5856114d0565b6000600455610ab5565b60048590555b506001949350505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b6001600160a01b038216610b7a576040805162461bcd60e51b815260206004820152600f60248201526e217265776172642073657474696e6760881b604482015290519081900360640190fd5b600b54600c11610b8c5750600061059e565b50600b8054600181810183556000929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0384166001600160a01b0319909116179055919050565b60045481565b61033e81565b600082610bf761100b565b600355610c02610e81565b6002556001600160a01b03811615610c4957610c1d81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6000610c5485610533565b90508015610d9a576001600160a01b03808616600090815260096020526040812055610ca3907f0000000000000000000000000000000000000000000000000000000000000000168683611479565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371192b177f000000000000000000000000000000000000000000000000000000000000000087846040518463ffffffff1660e01b815260040180848152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b50506040805184815290516001600160a01b03891693507fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048692509081900360200190a25b8315610ab55760005b600b54811015610e3057600b8181548110610dba57fe5b600091825260208220015460408051630c00007b60e41b81526001600160a01b038a811660048301529151919092169263c00007b0926024808201939182900301818387803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505060019092019150610da39050565b50506001949350505050565b6001600160a01b03166000908152600a602052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b6000610e8f426000546115f4565b905090565b60086020526000908152604090205481565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f1657600080fd5b505afa158015610f2a573d6000803e3d6000fd5b505050506040513d6020811015610f4057600080fd5b50519050610f4d81610f5c565b50600191505090565b60055481565b6000610f68823361127d565b610f9d6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611419565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a2506001919050565b6000610fe883333361160a565b508115610ffc57610ffa336001610bec565b505b50600192915050565b60025481565b6000611015610659565b611022575060035461065d565b610e8f611050611030610659565b61058f670de0b6b3a764000061058960015461058960025461057a610e81565b60035490611223565b600b5490565b60035481565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110c66001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611419565b6004546110d39083611223565b600455919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082821115611156576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008261116b57506000610708565b8282028284828161117857fe5b04146111b55760405162461bcd60e51b8152600401808060200182810382526021815260200180611b6b6021913960400191505060405180910390fd5b9392505050565b6000808211611212576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161121b57fe5b049392505050565b6000828201838110156111b5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8061128661100b565b600355611291610e81565b6002556001600160a01b038116156112d8576112ac81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6000831161132d576040805162461bcd60e51b815260206004820152601b60248201527f526577617264506f6f6c203a2043616e6e6f74207374616b6520300000000000604482015290519081900360640190fd5b60005b600b548110156113c457600b818154811061134757fe5b6000918252602082200154604080516356e4bb9760e11b81526001600160a01b038781166004830152602482018990529151919092169263adc9772e926044808201939182900301818387803b1580156113a057600080fd5b505af11580156113b4573d6000803e3d6000fd5b5050600190920191506113309050565b506007546113d29084611223565b6007556001600160a01b0382166000908152600a60205260409020546113f89084611223565b6001600160a01b039092166000908152600a60205260409020919091555050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261147390859061183c565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114cb90849061183c565b505050565b60006114da61100b565b6003556114e5610e81565b6002556001600160a01b0381161561152c5761150081610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6006546115399083611223565b600655600054421061155a576115528262093a806111bc565b6001556115a2565b6000805461156890426110ff565b905060006115816001548361115c90919063ffffffff16565b905061158d8482611223565b935061159c8462093a806111bc565b60015550505b60058290554260028190556115ba9062093a80611223565b6000556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b600081831061160357816111b5565b5090919050565b60008261161561100b565b600355611620610e81565b6002556001600160a01b038116156116675761163b81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b60005b600b548110156116fe57600b818154811061168157fe5b60009182526020822001546040805163f3fef3a360e01b81526001600160a01b038981166004830152602482018b90529151919092169263f3fef3a3926044808201939182900301818387803b1580156116da57600080fd5b505af11580156116ee573d6000803e3d6000fd5b50506001909201915061166a9050565b5060075461170c90866110ff565b6007556001600160a01b0384166000908152600a602052604090205461173290866110ff565b6001600160a01b038086166000908152600a60205260408082209390935582516305335c3960e21b81527f0000000000000000000000000000000000000000000000000000000000000000600482015260248101899052868316604482015292517f0000000000000000000000000000000000000000000000000000000000000000909216926314cd70e4926064808301939282900301818387803b1580156117da57600080fd5b505af11580156117ee573d6000803e3d6000fd5b50506040805188815290516001600160a01b03881693507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d592509081900360200190a2506001949350505050565b6060611891826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166118ed9092919063ffffffff16565b8051909150156114cb578080602001905160208110156118b057600080fd5b50516114cb5760405162461bcd60e51b815260040180806020018281038252602a815260200180611b8c602a913960400191505060405180910390fd5b60606118fc8484600085611904565b949350505050565b6060824710156119455760405162461bcd60e51b8152600401808060200182810382526026815260200180611b456026913960400191505060405180910390fd5b61194e85611a60565b61199f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106119de5780518252601f1990920191602091820191016119bf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611a40576040519150601f19603f3d011682016040523d82523d6000602084013e611a45565b606091505b5091509150611a55828286611a66565b979650505050505050565b3b151590565b60608315611a755750816111b5565b825115611a855782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611acf578181015183820152602001611ab7565b50505050905090810190601f168015611afc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080546000825590600052602060002090810190611b289190611b2b565b50565b5b80821115611b405760008155600101611b2c565b509056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220d0d4834e546c839bf06d5243f76bcbd47043cf984843f141cd50e7972377895864736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102265760003560e01c80636c8bcee811610130578063a694fc3a116100b8578063df136d651161007c578063df136d65146104f6578063ebe2b12b146104fe578063f106845414610506578063f14faf6f1461050e578063f7c618c11461052b57610226565b8063a694fc3a1461049c578063c32e7202146104b9578063c8f33c91146104de578063cd3daf9d146104e6578063d55a23f4146104ee57610226565b80637b0a47ee116100ff5780637b0a47ee1461045657806380faa57d1461045e5780638b876347146104665780638dcb40611461048c578063901a7d531461049457610226565b80636c8bcee8146103f25780637050ccd9146103fa57806370a082311461042857806372f702f31461044e57610226565b806338d07436116101b357806349f039a21161018257806349f039a214610380578063570ca7351461039f578063590a41f5146103a75780635e43c47b146103c457806363d38c3b146103ea57610226565b806338d074361461032e5780633d18b912146103535780633e8b83e31461035b57806340c354461461036357610226565b80630fb5a6b4116101fa5780630fb5a6b4146102b757806318160ddd146102bf5780631c1c6fe5146102c7578063262d3d6d146102e65780632ee40908146102ee57610226565b80628cc2621461022b5780630569d388146102635780630700037d1461026d5780630f4ef8a614610293575b600080fd5b6102516004803603602081101561024157600080fd5b50356001600160a01b0316610533565b60408051918252519081900360200190f35b61026b6105a3565b005b6102516004803603602081101561028357600080fd5b50356001600160a01b031661061c565b61029b61062e565b604080516001600160a01b039092168252519081900360200190f35b610251610652565b610251610659565b61026b600480360360208110156102dd57600080fd5b50351515610660565b61025161067e565b61031a6004803603604081101561030457600080fd5b506001600160a01b038135169060200135610684565b604080519115158252519081900360200190f35b61031a6004803603604081101561034457600080fd5b5080359060200135151561070e565b61031a610919565b61026b61092e565b61029b6004803603602081101561037957600080fd5b5035610959565b61026b6004803603602081101561039657600080fd5b50351515610980565b61029b61099a565b61031a600480360360208110156103bd57600080fd5b50356109be565b61031a600480360360208110156103da57600080fd5b50356001600160a01b0316610ac0565b610251610be0565b610251610be6565b61031a6004803603604081101561041057600080fd5b506001600160a01b0381351690602001351515610bec565b6102516004803603602081101561043e57600080fd5b50356001600160a01b0316610e3c565b61029b610e57565b610251610e7b565b610251610e81565b6102516004803603602081101561047c57600080fd5b50356001600160a01b0316610e94565b61031a610ea6565b610251610f56565b61031a600480360360208110156104b257600080fd5b5035610f5c565b61031a600480360360408110156104cf57600080fd5b50803590602001351515610fdb565b610251611005565b61025161100b565b610251611059565b61025161105f565b610251611065565b61025161106b565b61031a6004803603602081101561052457600080fd5b503561108f565b61029b6110db565b6001600160a01b038116600090815260096020908152604080832054600890925282205461059b919061059590670de0b6b3a76400009061058f906105809061057a61100b565b906110ff565b61058988610e3c565b9061115c565b906111bc565b90611223565b90505b919050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461060e576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b61061a600b6000611b0a565b565b60096020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b62093a8081565b6007545b90565b336000908152600a602052604090205461067a908261070e565b5050565b60065481565b6000610690828461127d565b6106c56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611419565b6040805183815290516001600160a01b038516917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25060015b92915050565b60003361071961100b565b600355610724610e81565b6002556001600160a01b0381161561076b5761073f81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b600084116107c0576040805162461bcd60e51b815260206004820152601e60248201527f526577617264506f6f6c203a2043616e6e6f7420776974686472617720300000604482015290519081900360640190fd5b60005b600b5481101561085357600b81815481106107da57fe5b60009182526020822001546040805163f3fef3a360e01b81523360048201526024810189905290516001600160a01b039092169263f3fef3a39260448084019382900301818387803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b5050600190920191506107c39050565b5060075461086190856110ff565b600755336000908152600a602052604090205461087e90856110ff565b336000818152600a60205260409020919091556108c6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169086611479565b60408051858152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a2821561090f5761090d336001610bec565b505b5060019392505050565b6000610926336001610bec565b506001905090565b600054421015801561094257506000600454115b1561061a576109526004546114d0565b6000600455565b600b818154811061096657fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600a602052604090205461067a9082610fdb565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a2b576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b600454610a39908390611223565b91506000544210610a5a57610a4d826114d0565b506000600455600161059e565b60008054610a7690610a6f9062093a806110ff565b42906110ff565b60015490915081026000610a908561058f846103e861115c565b905061033e811015610aaf57610aa5856114d0565b6000600455610ab5565b60048590555b506001949350505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b6001600160a01b038216610b7a576040805162461bcd60e51b815260206004820152600f60248201526e217265776172642073657474696e6760881b604482015290519081900360640190fd5b600b54600c11610b8c5750600061059e565b50600b8054600181810183556000929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0384166001600160a01b0319909116179055919050565b60045481565b61033e81565b600082610bf761100b565b600355610c02610e81565b6002556001600160a01b03811615610c4957610c1d81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6000610c5485610533565b90508015610d9a576001600160a01b03808616600090815260096020526040812055610ca3907f0000000000000000000000000000000000000000000000000000000000000000168683611479565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371192b177f000000000000000000000000000000000000000000000000000000000000000087846040518463ffffffff1660e01b815260040180848152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b50506040805184815290516001600160a01b03891693507fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048692509081900360200190a25b8315610ab55760005b600b54811015610e3057600b8181548110610dba57fe5b600091825260208220015460408051630c00007b60e41b81526001600160a01b038a811660048301529151919092169263c00007b0926024808201939182900301818387803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505060019092019150610da39050565b50506001949350505050565b6001600160a01b03166000908152600a602052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b6000610e8f426000546115f4565b905090565b60086020526000908152604090205481565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f1657600080fd5b505afa158015610f2a573d6000803e3d6000fd5b505050506040513d6020811015610f4057600080fd5b50519050610f4d81610f5c565b50600191505090565b60055481565b6000610f68823361127d565b610f9d6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611419565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a2506001919050565b6000610fe883333361160a565b508115610ffc57610ffa336001610bec565b505b50600192915050565b60025481565b6000611015610659565b611022575060035461065d565b610e8f611050611030610659565b61058f670de0b6b3a764000061058960015461058960025461057a610e81565b60035490611223565b600b5490565b60035481565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110c66001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611419565b6004546110d39083611223565b600455919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082821115611156576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008261116b57506000610708565b8282028284828161117857fe5b04146111b55760405162461bcd60e51b8152600401808060200182810382526021815260200180611b6b6021913960400191505060405180910390fd5b9392505050565b6000808211611212576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161121b57fe5b049392505050565b6000828201838110156111b5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8061128661100b565b600355611291610e81565b6002556001600160a01b038116156112d8576112ac81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6000831161132d576040805162461bcd60e51b815260206004820152601b60248201527f526577617264506f6f6c203a2043616e6e6f74207374616b6520300000000000604482015290519081900360640190fd5b60005b600b548110156113c457600b818154811061134757fe5b6000918252602082200154604080516356e4bb9760e11b81526001600160a01b038781166004830152602482018990529151919092169263adc9772e926044808201939182900301818387803b1580156113a057600080fd5b505af11580156113b4573d6000803e3d6000fd5b5050600190920191506113309050565b506007546113d29084611223565b6007556001600160a01b0382166000908152600a60205260409020546113f89084611223565b6001600160a01b039092166000908152600a60205260409020919091555050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261147390859061183c565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114cb90849061183c565b505050565b60006114da61100b565b6003556114e5610e81565b6002556001600160a01b0381161561152c5761150081610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6006546115399083611223565b600655600054421061155a576115528262093a806111bc565b6001556115a2565b6000805461156890426110ff565b905060006115816001548361115c90919063ffffffff16565b905061158d8482611223565b935061159c8462093a806111bc565b60015550505b60058290554260028190556115ba9062093a80611223565b6000556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b600081831061160357816111b5565b5090919050565b60008261161561100b565b600355611620610e81565b6002556001600160a01b038116156116675761163b81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b60005b600b548110156116fe57600b818154811061168157fe5b60009182526020822001546040805163f3fef3a360e01b81526001600160a01b038981166004830152602482018b90529151919092169263f3fef3a3926044808201939182900301818387803b1580156116da57600080fd5b505af11580156116ee573d6000803e3d6000fd5b50506001909201915061166a9050565b5060075461170c90866110ff565b6007556001600160a01b0384166000908152600a602052604090205461173290866110ff565b6001600160a01b038086166000908152600a60205260408082209390935582516305335c3960e21b81527f0000000000000000000000000000000000000000000000000000000000000000600482015260248101899052868316604482015292517f0000000000000000000000000000000000000000000000000000000000000000909216926314cd70e4926064808301939282900301818387803b1580156117da57600080fd5b505af11580156117ee573d6000803e3d6000fd5b50506040805188815290516001600160a01b03881693507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d592509081900360200190a2506001949350505050565b6060611891826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166118ed9092919063ffffffff16565b8051909150156114cb578080602001905160208110156118b057600080fd5b50516114cb5760405162461bcd60e51b815260040180806020018281038252602a815260200180611b8c602a913960400191505060405180910390fd5b60606118fc8484600085611904565b949350505050565b6060824710156119455760405162461bcd60e51b8152600401808060200182810382526026815260200180611b456026913960400191505060405180910390fd5b61194e85611a60565b61199f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106119de5780518252601f1990920191602091820191016119bf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611a40576040519150601f19603f3d011682016040523d82523d6000602084013e611a45565b606091505b5091509150611a55828286611a66565b979650505050505050565b3b151590565b60608315611a755750816111b5565b825115611a855782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611acf578181015183820152602001611ab7565b50505050905090810190601f168015611afc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080546000825590600052602060002090810190611b289190611b2b565b50565b5b80821115611b405760008155600101611b2c565b509056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220d0d4834e546c839bf06d5243f76bcbd47043cf984843f141cd50e7972377895864736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/apps/aura/contracts/ethers/AuraLocker.ts b/src/apps/aura/contracts/ethers/AuraLocker.ts new file mode 100644 index 000000000..ecca563ca --- /dev/null +++ b/src/apps/aura/contracts/ethers/AuraLocker.ts @@ -0,0 +1,1466 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export declare namespace AuraLocker { + export type DelegateeCheckpointStruct = { + votes: BigNumberish; + epochStart: BigNumberish; + }; + + export type DelegateeCheckpointStructOutput = [BigNumber, number] & { + votes: BigNumber; + epochStart: number; + }; + + export type EarnedDataStruct = { token: string; amount: BigNumberish }; + + export type EarnedDataStructOutput = [string, BigNumber] & { + token: string; + amount: BigNumber; + }; + + export type LockedBalanceStruct = { + amount: BigNumberish; + unlockTime: BigNumberish; + }; + + export type LockedBalanceStructOutput = [BigNumber, number] & { + amount: BigNumber; + unlockTime: number; + }; +} + +export interface AuraLockerInterface extends utils.Interface { + functions: { + 'addReward(address,address)': FunctionFragment; + 'approveRewardDistributor(address,address,bool)': FunctionFragment; + 'balanceAtEpochOf(uint256,address)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'balances(address)': FunctionFragment; + 'blacklist(address)': FunctionFragment; + 'checkpointEpoch()': FunctionFragment; + 'checkpoints(address,uint32)': FunctionFragment; + 'claimableRewards(address)': FunctionFragment; + 'cvxCrv()': FunctionFragment; + 'cvxcrvStaking()': FunctionFragment; + 'decimals()': FunctionFragment; + 'delegate(address)': FunctionFragment; + 'delegateeUnlocks(address,uint256)': FunctionFragment; + 'delegates(address)': FunctionFragment; + 'denominator()': FunctionFragment; + 'emergencyWithdraw()': FunctionFragment; + 'epochCount()': FunctionFragment; + 'epochs(uint256)': FunctionFragment; + 'findEpochId(uint256)': FunctionFragment; + 'getPastTotalSupply(uint256)': FunctionFragment; + 'getPastVotes(address,uint256)': FunctionFragment; + 'getReward(address,bool)': FunctionFragment; + 'getReward(address)': FunctionFragment; + 'getReward(address,bool[])': FunctionFragment; + 'getVotes(address)': FunctionFragment; + 'isShutdown()': FunctionFragment; + 'kickExpiredLocks(address)': FunctionFragment; + 'kickRewardEpochDelay()': FunctionFragment; + 'kickRewardPerEpoch()': FunctionFragment; + 'lastTimeRewardApplicable(address)': FunctionFragment; + 'lock(address,uint256)': FunctionFragment; + 'lockDuration()': FunctionFragment; + 'lockedBalances(address)': FunctionFragment; + 'lockedSupply()': FunctionFragment; + 'modifyBlacklist(address,bool)': FunctionFragment; + 'name()': FunctionFragment; + 'newRewardRatio()': FunctionFragment; + 'numCheckpoints(address)': FunctionFragment; + 'owner()': FunctionFragment; + 'processExpiredLocks(bool)': FunctionFragment; + 'queueNewRewards(address,uint256)': FunctionFragment; + 'queuedRewards(address)': FunctionFragment; + 'recoverERC20(address,uint256)': FunctionFragment; + 'renounceOwnership()': FunctionFragment; + 'rewardData(address)': FunctionFragment; + 'rewardDistributors(address,address)': FunctionFragment; + 'rewardPerToken(address)': FunctionFragment; + 'rewardTokens(uint256)': FunctionFragment; + 'rewardsDuration()': FunctionFragment; + 'setApprovals()': FunctionFragment; + 'setKickIncentive(uint256,uint256)': FunctionFragment; + 'shutdown()': FunctionFragment; + 'stakingToken()': FunctionFragment; + 'symbol()': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'totalSupplyAtEpoch(uint256)': FunctionFragment; + 'transferOwnership(address)': FunctionFragment; + 'userData(address,address)': FunctionFragment; + 'userLocks(address,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'addReward' + | 'approveRewardDistributor' + | 'balanceAtEpochOf' + | 'balanceOf' + | 'balances' + | 'blacklist' + | 'checkpointEpoch' + | 'checkpoints' + | 'claimableRewards' + | 'cvxCrv' + | 'cvxcrvStaking' + | 'decimals' + | 'delegate' + | 'delegateeUnlocks' + | 'delegates' + | 'denominator' + | 'emergencyWithdraw' + | 'epochCount' + | 'epochs' + | 'findEpochId' + | 'getPastTotalSupply' + | 'getPastVotes' + | 'getReward(address,bool)' + | 'getReward(address)' + | 'getReward(address,bool[])' + | 'getVotes' + | 'isShutdown' + | 'kickExpiredLocks' + | 'kickRewardEpochDelay' + | 'kickRewardPerEpoch' + | 'lastTimeRewardApplicable' + | 'lock' + | 'lockDuration' + | 'lockedBalances' + | 'lockedSupply' + | 'modifyBlacklist' + | 'name' + | 'newRewardRatio' + | 'numCheckpoints' + | 'owner' + | 'processExpiredLocks' + | 'queueNewRewards' + | 'queuedRewards' + | 'recoverERC20' + | 'renounceOwnership' + | 'rewardData' + | 'rewardDistributors' + | 'rewardPerToken' + | 'rewardTokens' + | 'rewardsDuration' + | 'setApprovals' + | 'setKickIncentive' + | 'shutdown' + | 'stakingToken' + | 'symbol' + | 'totalSupply' + | 'totalSupplyAtEpoch' + | 'transferOwnership' + | 'userData' + | 'userLocks', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'addReward', values: [string, string]): string; + encodeFunctionData(functionFragment: 'approveRewardDistributor', values: [string, string, boolean]): string; + encodeFunctionData(functionFragment: 'balanceAtEpochOf', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'balances', values: [string]): string; + encodeFunctionData(functionFragment: 'blacklist', values: [string]): string; + encodeFunctionData(functionFragment: 'checkpointEpoch', values?: undefined): string; + encodeFunctionData(functionFragment: 'checkpoints', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'claimableRewards', values: [string]): string; + encodeFunctionData(functionFragment: 'cvxCrv', values?: undefined): string; + encodeFunctionData(functionFragment: 'cvxcrvStaking', values?: undefined): string; + encodeFunctionData(functionFragment: 'decimals', values?: undefined): string; + encodeFunctionData(functionFragment: 'delegate', values: [string]): string; + encodeFunctionData(functionFragment: 'delegateeUnlocks', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'delegates', values: [string]): string; + encodeFunctionData(functionFragment: 'denominator', values?: undefined): string; + encodeFunctionData(functionFragment: 'emergencyWithdraw', values?: undefined): string; + encodeFunctionData(functionFragment: 'epochCount', values?: undefined): string; + encodeFunctionData(functionFragment: 'epochs', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'findEpochId', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getPastTotalSupply', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getPastVotes', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'getReward(address,bool)', values: [string, boolean]): string; + encodeFunctionData(functionFragment: 'getReward(address)', values: [string]): string; + encodeFunctionData(functionFragment: 'getReward(address,bool[])', values: [string, boolean[]]): string; + encodeFunctionData(functionFragment: 'getVotes', values: [string]): string; + encodeFunctionData(functionFragment: 'isShutdown', values?: undefined): string; + encodeFunctionData(functionFragment: 'kickExpiredLocks', values: [string]): string; + encodeFunctionData(functionFragment: 'kickRewardEpochDelay', values?: undefined): string; + encodeFunctionData(functionFragment: 'kickRewardPerEpoch', values?: undefined): string; + encodeFunctionData(functionFragment: 'lastTimeRewardApplicable', values: [string]): string; + encodeFunctionData(functionFragment: 'lock', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'lockDuration', values?: undefined): string; + encodeFunctionData(functionFragment: 'lockedBalances', values: [string]): string; + encodeFunctionData(functionFragment: 'lockedSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'modifyBlacklist', values: [string, boolean]): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'newRewardRatio', values?: undefined): string; + encodeFunctionData(functionFragment: 'numCheckpoints', values: [string]): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'processExpiredLocks', values: [boolean]): string; + encodeFunctionData(functionFragment: 'queueNewRewards', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'queuedRewards', values: [string]): string; + encodeFunctionData(functionFragment: 'recoverERC20', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardData', values: [string]): string; + encodeFunctionData(functionFragment: 'rewardDistributors', values: [string, string]): string; + encodeFunctionData(functionFragment: 'rewardPerToken', values: [string]): string; + encodeFunctionData(functionFragment: 'rewardTokens', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'rewardsDuration', values?: undefined): string; + encodeFunctionData(functionFragment: 'setApprovals', values?: undefined): string; + encodeFunctionData(functionFragment: 'setKickIncentive', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'shutdown', values?: undefined): string; + encodeFunctionData(functionFragment: 'stakingToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupplyAtEpoch', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string]): string; + encodeFunctionData(functionFragment: 'userData', values: [string, string]): string; + encodeFunctionData(functionFragment: 'userLocks', values: [string, BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'addReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approveRewardDistributor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceAtEpochOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balances', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'blacklist', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'checkpointEpoch', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'checkpoints', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'claimableRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'cvxCrv', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'cvxcrvStaking', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'delegate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'delegateeUnlocks', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'delegates', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'denominator', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'emergencyWithdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'epochCount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'epochs', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'findEpochId', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getPastTotalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getPastVotes', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getReward(address,bool)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getReward(address)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getReward(address,bool[])', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getVotes', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isShutdown', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'kickExpiredLocks', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'kickRewardEpochDelay', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'kickRewardPerEpoch', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastTimeRewardApplicable', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lock', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockDuration', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockedBalances', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockedSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'modifyBlacklist', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'newRewardRatio', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'numCheckpoints', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'processExpiredLocks', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'queueNewRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'queuedRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'recoverERC20', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardData', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardDistributors', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardPerToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardTokens', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardsDuration', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setApprovals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setKickIncentive', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'shutdown', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stakingToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupplyAtEpoch', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userData', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userLocks', data: BytesLike): Result; + + events: { + 'BlacklistModified(address,bool)': EventFragment; + 'DelegateChanged(address,address,address)': EventFragment; + 'DelegateCheckpointed(address)': EventFragment; + 'KickIncentiveSet(uint256,uint256)': EventFragment; + 'KickReward(address,address,uint256)': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'Recovered(address,uint256)': EventFragment; + 'RewardAdded(address,uint256)': EventFragment; + 'RewardPaid(address,address,uint256)': EventFragment; + 'Shutdown()': EventFragment; + 'Staked(address,uint256,uint256)': EventFragment; + 'Withdrawn(address,uint256,bool)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'BlacklistModified'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'DelegateChanged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'DelegateCheckpointed'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'KickIncentiveSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'KickReward'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Recovered'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardAdded'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardPaid'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Shutdown'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Staked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdrawn'): EventFragment; +} + +export interface BlacklistModifiedEventObject { + account: string; + blacklisted: boolean; +} +export type BlacklistModifiedEvent = TypedEvent<[string, boolean], BlacklistModifiedEventObject>; + +export type BlacklistModifiedEventFilter = TypedEventFilter; + +export interface DelegateChangedEventObject { + delegator: string; + fromDelegate: string; + toDelegate: string; +} +export type DelegateChangedEvent = TypedEvent<[string, string, string], DelegateChangedEventObject>; + +export type DelegateChangedEventFilter = TypedEventFilter; + +export interface DelegateCheckpointedEventObject { + delegate: string; +} +export type DelegateCheckpointedEvent = TypedEvent<[string], DelegateCheckpointedEventObject>; + +export type DelegateCheckpointedEventFilter = TypedEventFilter; + +export interface KickIncentiveSetEventObject { + rate: BigNumber; + delay: BigNumber; +} +export type KickIncentiveSetEvent = TypedEvent<[BigNumber, BigNumber], KickIncentiveSetEventObject>; + +export type KickIncentiveSetEventFilter = TypedEventFilter; + +export interface KickRewardEventObject { + _user: string; + _kicked: string; + _reward: BigNumber; +} +export type KickRewardEvent = TypedEvent<[string, string, BigNumber], KickRewardEventObject>; + +export type KickRewardEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface RecoveredEventObject { + _token: string; + _amount: BigNumber; +} +export type RecoveredEvent = TypedEvent<[string, BigNumber], RecoveredEventObject>; + +export type RecoveredEventFilter = TypedEventFilter; + +export interface RewardAddedEventObject { + _token: string; + _reward: BigNumber; +} +export type RewardAddedEvent = TypedEvent<[string, BigNumber], RewardAddedEventObject>; + +export type RewardAddedEventFilter = TypedEventFilter; + +export interface RewardPaidEventObject { + _user: string; + _rewardsToken: string; + _reward: BigNumber; +} +export type RewardPaidEvent = TypedEvent<[string, string, BigNumber], RewardPaidEventObject>; + +export type RewardPaidEventFilter = TypedEventFilter; + +export interface ShutdownEventObject {} +export type ShutdownEvent = TypedEvent<[], ShutdownEventObject>; + +export type ShutdownEventFilter = TypedEventFilter; + +export interface StakedEventObject { + _user: string; + _paidAmount: BigNumber; + _lockedAmount: BigNumber; +} +export type StakedEvent = TypedEvent<[string, BigNumber, BigNumber], StakedEventObject>; + +export type StakedEventFilter = TypedEventFilter; + +export interface WithdrawnEventObject { + _user: string; + _amount: BigNumber; + _relocked: boolean; +} +export type WithdrawnEvent = TypedEvent<[string, BigNumber, boolean], WithdrawnEventObject>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface AuraLocker extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AuraLockerInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addReward( + _rewardsToken: string, + _distributor: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approveRewardDistributor( + _rewardsToken: string, + _distributor: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceAtEpochOf( + _epoch: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { amount: BigNumber }>; + + balanceOf(_user: string, overrides?: CallOverrides): Promise<[BigNumber] & { amount: BigNumber }>; + + balances( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, number] & { locked: BigNumber; nextUnlockIndex: number }>; + + blacklist(arg0: string, overrides?: CallOverrides): Promise<[boolean]>; + + checkpointEpoch(overrides?: Overrides & { from?: string | Promise }): Promise; + + checkpoints( + account: string, + pos: BigNumberish, + overrides?: CallOverrides, + ): Promise<[AuraLocker.DelegateeCheckpointStructOutput]>; + + claimableRewards( + _account: string, + overrides?: CallOverrides, + ): Promise< + [AuraLocker.EarnedDataStructOutput[]] & { + userRewards: AuraLocker.EarnedDataStructOutput[]; + } + >; + + cvxCrv(overrides?: CallOverrides): Promise<[string]>; + + cvxcrvStaking(overrides?: CallOverrides): Promise<[string]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + delegate( + newDelegatee: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + delegateeUnlocks(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + delegates(account: string, overrides?: CallOverrides): Promise<[string]>; + + denominator(overrides?: CallOverrides): Promise<[BigNumber]>; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + epochCount(overrides?: CallOverrides): Promise<[BigNumber]>; + + epochs( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber, number] & { supply: BigNumber; date: number }>; + + findEpochId(_time: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & { epoch: BigNumber }>; + + getPastTotalSupply(timestamp: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + getPastVotes( + account: string, + timestamp: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { votes: BigNumber }>; + + 'getReward(address,bool)'( + _account: string, + _stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'getReward(address)'( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'getReward(address,bool[])'( + _account: string, + _skipIdx: boolean[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getVotes(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + isShutdown(overrides?: CallOverrides): Promise<[boolean]>; + + kickExpiredLocks( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + kickRewardEpochDelay(overrides?: CallOverrides): Promise<[BigNumber]>; + + kickRewardPerEpoch(overrides?: CallOverrides): Promise<[BigNumber]>; + + lastTimeRewardApplicable(_rewardsToken: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + lock( + _account: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lockDuration(overrides?: CallOverrides): Promise<[BigNumber]>; + + lockedBalances( + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, AuraLocker.LockedBalanceStructOutput[]] & { + total: BigNumber; + unlockable: BigNumber; + locked: BigNumber; + lockData: AuraLocker.LockedBalanceStructOutput[]; + } + >; + + lockedSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + modifyBlacklist( + _account: string, + _blacklisted: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise<[string]>; + + newRewardRatio(overrides?: CallOverrides): Promise<[BigNumber]>; + + numCheckpoints(account: string, overrides?: CallOverrides): Promise<[number]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + processExpiredLocks( + _relock: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queueNewRewards( + _rewardsToken: string, + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(arg0: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + recoverERC20( + _tokenAddress: string, + _tokenAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardData( + arg0: string, + overrides?: CallOverrides, + ): Promise< + [number, number, BigNumber, BigNumber] & { + periodFinish: number; + lastUpdateTime: number; + rewardRate: BigNumber; + rewardPerTokenStored: BigNumber; + } + >; + + rewardDistributors(arg0: string, arg1: string, overrides?: CallOverrides): Promise<[boolean]>; + + rewardPerToken(_rewardsToken: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + rewardTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + rewardsDuration(overrides?: CallOverrides): Promise<[BigNumber]>; + + setApprovals(overrides?: Overrides & { from?: string | Promise }): Promise; + + setKickIncentive( + _rate: BigNumberish, + _delay: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + shutdown(overrides?: Overrides & { from?: string | Promise }): Promise; + + stakingToken(overrides?: CallOverrides): Promise<[string]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber] & { supply: BigNumber }>; + + totalSupplyAtEpoch(_epoch: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & { supply: BigNumber }>; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + userData( + arg0: string, + arg1: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + rewardPerTokenPaid: BigNumber; + rewards: BigNumber; + } + >; + + userLocks( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber, number] & { amount: BigNumber; unlockTime: number }>; + }; + + addReward( + _rewardsToken: string, + _distributor: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approveRewardDistributor( + _rewardsToken: string, + _distributor: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceAtEpochOf(_epoch: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + balanceOf(_user: string, overrides?: CallOverrides): Promise; + + balances( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, number] & { locked: BigNumber; nextUnlockIndex: number }>; + + blacklist(arg0: string, overrides?: CallOverrides): Promise; + + checkpointEpoch(overrides?: Overrides & { from?: string | Promise }): Promise; + + checkpoints( + account: string, + pos: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + claimableRewards(_account: string, overrides?: CallOverrides): Promise; + + cvxCrv(overrides?: CallOverrides): Promise; + + cvxcrvStaking(overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + delegate( + newDelegatee: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + delegateeUnlocks(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + delegates(account: string, overrides?: CallOverrides): Promise; + + denominator(overrides?: CallOverrides): Promise; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + epochCount(overrides?: CallOverrides): Promise; + + epochs( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber, number] & { supply: BigNumber; date: number }>; + + findEpochId(_time: BigNumberish, overrides?: CallOverrides): Promise; + + getPastTotalSupply(timestamp: BigNumberish, overrides?: CallOverrides): Promise; + + getPastVotes(account: string, timestamp: BigNumberish, overrides?: CallOverrides): Promise; + + 'getReward(address,bool)'( + _account: string, + _stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'getReward(address)'( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'getReward(address,bool[])'( + _account: string, + _skipIdx: boolean[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getVotes(account: string, overrides?: CallOverrides): Promise; + + isShutdown(overrides?: CallOverrides): Promise; + + kickExpiredLocks( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + kickRewardEpochDelay(overrides?: CallOverrides): Promise; + + kickRewardPerEpoch(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(_rewardsToken: string, overrides?: CallOverrides): Promise; + + lock( + _account: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lockDuration(overrides?: CallOverrides): Promise; + + lockedBalances( + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, AuraLocker.LockedBalanceStructOutput[]] & { + total: BigNumber; + unlockable: BigNumber; + locked: BigNumber; + lockData: AuraLocker.LockedBalanceStructOutput[]; + } + >; + + lockedSupply(overrides?: CallOverrides): Promise; + + modifyBlacklist( + _account: string, + _blacklisted: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + numCheckpoints(account: string, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + processExpiredLocks( + _relock: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queueNewRewards( + _rewardsToken: string, + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(arg0: string, overrides?: CallOverrides): Promise; + + recoverERC20( + _tokenAddress: string, + _tokenAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardData( + arg0: string, + overrides?: CallOverrides, + ): Promise< + [number, number, BigNumber, BigNumber] & { + periodFinish: number; + lastUpdateTime: number; + rewardRate: BigNumber; + rewardPerTokenStored: BigNumber; + } + >; + + rewardDistributors(arg0: string, arg1: string, overrides?: CallOverrides): Promise; + + rewardPerToken(_rewardsToken: string, overrides?: CallOverrides): Promise; + + rewardTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + rewardsDuration(overrides?: CallOverrides): Promise; + + setApprovals(overrides?: Overrides & { from?: string | Promise }): Promise; + + setKickIncentive( + _rate: BigNumberish, + _delay: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + shutdown(overrides?: Overrides & { from?: string | Promise }): Promise; + + stakingToken(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAtEpoch(_epoch: BigNumberish, overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + userData( + arg0: string, + arg1: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + rewardPerTokenPaid: BigNumber; + rewards: BigNumber; + } + >; + + userLocks( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber, number] & { amount: BigNumber; unlockTime: number }>; + + callStatic: { + addReward(_rewardsToken: string, _distributor: string, overrides?: CallOverrides): Promise; + + approveRewardDistributor( + _rewardsToken: string, + _distributor: string, + _approved: boolean, + overrides?: CallOverrides, + ): Promise; + + balanceAtEpochOf(_epoch: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + balanceOf(_user: string, overrides?: CallOverrides): Promise; + + balances( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, number] & { locked: BigNumber; nextUnlockIndex: number }>; + + blacklist(arg0: string, overrides?: CallOverrides): Promise; + + checkpointEpoch(overrides?: CallOverrides): Promise; + + checkpoints( + account: string, + pos: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + claimableRewards(_account: string, overrides?: CallOverrides): Promise; + + cvxCrv(overrides?: CallOverrides): Promise; + + cvxcrvStaking(overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + delegate(newDelegatee: string, overrides?: CallOverrides): Promise; + + delegateeUnlocks(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + delegates(account: string, overrides?: CallOverrides): Promise; + + denominator(overrides?: CallOverrides): Promise; + + emergencyWithdraw(overrides?: CallOverrides): Promise; + + epochCount(overrides?: CallOverrides): Promise; + + epochs( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber, number] & { supply: BigNumber; date: number }>; + + findEpochId(_time: BigNumberish, overrides?: CallOverrides): Promise; + + getPastTotalSupply(timestamp: BigNumberish, overrides?: CallOverrides): Promise; + + getPastVotes(account: string, timestamp: BigNumberish, overrides?: CallOverrides): Promise; + + 'getReward(address,bool)'(_account: string, _stake: boolean, overrides?: CallOverrides): Promise; + + 'getReward(address)'(_account: string, overrides?: CallOverrides): Promise; + + 'getReward(address,bool[])'(_account: string, _skipIdx: boolean[], overrides?: CallOverrides): Promise; + + getVotes(account: string, overrides?: CallOverrides): Promise; + + isShutdown(overrides?: CallOverrides): Promise; + + kickExpiredLocks(_account: string, overrides?: CallOverrides): Promise; + + kickRewardEpochDelay(overrides?: CallOverrides): Promise; + + kickRewardPerEpoch(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(_rewardsToken: string, overrides?: CallOverrides): Promise; + + lock(_account: string, _amount: BigNumberish, overrides?: CallOverrides): Promise; + + lockDuration(overrides?: CallOverrides): Promise; + + lockedBalances( + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, AuraLocker.LockedBalanceStructOutput[]] & { + total: BigNumber; + unlockable: BigNumber; + locked: BigNumber; + lockData: AuraLocker.LockedBalanceStructOutput[]; + } + >; + + lockedSupply(overrides?: CallOverrides): Promise; + + modifyBlacklist(_account: string, _blacklisted: boolean, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + numCheckpoints(account: string, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + processExpiredLocks(_relock: boolean, overrides?: CallOverrides): Promise; + + queueNewRewards(_rewardsToken: string, _rewards: BigNumberish, overrides?: CallOverrides): Promise; + + queuedRewards(arg0: string, overrides?: CallOverrides): Promise; + + recoverERC20(_tokenAddress: string, _tokenAmount: BigNumberish, overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + rewardData( + arg0: string, + overrides?: CallOverrides, + ): Promise< + [number, number, BigNumber, BigNumber] & { + periodFinish: number; + lastUpdateTime: number; + rewardRate: BigNumber; + rewardPerTokenStored: BigNumber; + } + >; + + rewardDistributors(arg0: string, arg1: string, overrides?: CallOverrides): Promise; + + rewardPerToken(_rewardsToken: string, overrides?: CallOverrides): Promise; + + rewardTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + rewardsDuration(overrides?: CallOverrides): Promise; + + setApprovals(overrides?: CallOverrides): Promise; + + setKickIncentive(_rate: BigNumberish, _delay: BigNumberish, overrides?: CallOverrides): Promise; + + shutdown(overrides?: CallOverrides): Promise; + + stakingToken(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAtEpoch(_epoch: BigNumberish, overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, overrides?: CallOverrides): Promise; + + userData( + arg0: string, + arg1: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + rewardPerTokenPaid: BigNumber; + rewards: BigNumber; + } + >; + + userLocks( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber, number] & { amount: BigNumber; unlockTime: number }>; + }; + + filters: { + 'BlacklistModified(address,bool)'(account?: null, blacklisted?: null): BlacklistModifiedEventFilter; + BlacklistModified(account?: null, blacklisted?: null): BlacklistModifiedEventFilter; + + 'DelegateChanged(address,address,address)'( + delegator?: string | null, + fromDelegate?: string | null, + toDelegate?: string | null, + ): DelegateChangedEventFilter; + DelegateChanged( + delegator?: string | null, + fromDelegate?: string | null, + toDelegate?: string | null, + ): DelegateChangedEventFilter; + + 'DelegateCheckpointed(address)'(delegate?: string | null): DelegateCheckpointedEventFilter; + DelegateCheckpointed(delegate?: string | null): DelegateCheckpointedEventFilter; + + 'KickIncentiveSet(uint256,uint256)'(rate?: null, delay?: null): KickIncentiveSetEventFilter; + KickIncentiveSet(rate?: null, delay?: null): KickIncentiveSetEventFilter; + + 'KickReward(address,address,uint256)'( + _user?: string | null, + _kicked?: string | null, + _reward?: null, + ): KickRewardEventFilter; + KickReward(_user?: string | null, _kicked?: string | null, _reward?: null): KickRewardEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'Recovered(address,uint256)'(_token?: null, _amount?: null): RecoveredEventFilter; + Recovered(_token?: null, _amount?: null): RecoveredEventFilter; + + 'RewardAdded(address,uint256)'(_token?: string | null, _reward?: null): RewardAddedEventFilter; + RewardAdded(_token?: string | null, _reward?: null): RewardAddedEventFilter; + + 'RewardPaid(address,address,uint256)'( + _user?: string | null, + _rewardsToken?: string | null, + _reward?: null, + ): RewardPaidEventFilter; + RewardPaid(_user?: string | null, _rewardsToken?: string | null, _reward?: null): RewardPaidEventFilter; + + 'Shutdown()'(): ShutdownEventFilter; + Shutdown(): ShutdownEventFilter; + + 'Staked(address,uint256,uint256)'( + _user?: string | null, + _paidAmount?: null, + _lockedAmount?: null, + ): StakedEventFilter; + Staked(_user?: string | null, _paidAmount?: null, _lockedAmount?: null): StakedEventFilter; + + 'Withdrawn(address,uint256,bool)'(_user?: string | null, _amount?: null, _relocked?: null): WithdrawnEventFilter; + Withdrawn(_user?: string | null, _amount?: null, _relocked?: null): WithdrawnEventFilter; + }; + + estimateGas: { + addReward( + _rewardsToken: string, + _distributor: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approveRewardDistributor( + _rewardsToken: string, + _distributor: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceAtEpochOf(_epoch: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + balanceOf(_user: string, overrides?: CallOverrides): Promise; + + balances(arg0: string, overrides?: CallOverrides): Promise; + + blacklist(arg0: string, overrides?: CallOverrides): Promise; + + checkpointEpoch(overrides?: Overrides & { from?: string | Promise }): Promise; + + checkpoints(account: string, pos: BigNumberish, overrides?: CallOverrides): Promise; + + claimableRewards(_account: string, overrides?: CallOverrides): Promise; + + cvxCrv(overrides?: CallOverrides): Promise; + + cvxcrvStaking(overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + delegate(newDelegatee: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + delegateeUnlocks(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + delegates(account: string, overrides?: CallOverrides): Promise; + + denominator(overrides?: CallOverrides): Promise; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + epochCount(overrides?: CallOverrides): Promise; + + epochs(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + findEpochId(_time: BigNumberish, overrides?: CallOverrides): Promise; + + getPastTotalSupply(timestamp: BigNumberish, overrides?: CallOverrides): Promise; + + getPastVotes(account: string, timestamp: BigNumberish, overrides?: CallOverrides): Promise; + + 'getReward(address,bool)'( + _account: string, + _stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'getReward(address)'( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'getReward(address,bool[])'( + _account: string, + _skipIdx: boolean[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getVotes(account: string, overrides?: CallOverrides): Promise; + + isShutdown(overrides?: CallOverrides): Promise; + + kickExpiredLocks(_account: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + kickRewardEpochDelay(overrides?: CallOverrides): Promise; + + kickRewardPerEpoch(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(_rewardsToken: string, overrides?: CallOverrides): Promise; + + lock( + _account: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lockDuration(overrides?: CallOverrides): Promise; + + lockedBalances(_user: string, overrides?: CallOverrides): Promise; + + lockedSupply(overrides?: CallOverrides): Promise; + + modifyBlacklist( + _account: string, + _blacklisted: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + numCheckpoints(account: string, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + processExpiredLocks( + _relock: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queueNewRewards( + _rewardsToken: string, + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(arg0: string, overrides?: CallOverrides): Promise; + + recoverERC20( + _tokenAddress: string, + _tokenAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardData(arg0: string, overrides?: CallOverrides): Promise; + + rewardDistributors(arg0: string, arg1: string, overrides?: CallOverrides): Promise; + + rewardPerToken(_rewardsToken: string, overrides?: CallOverrides): Promise; + + rewardTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + rewardsDuration(overrides?: CallOverrides): Promise; + + setApprovals(overrides?: Overrides & { from?: string | Promise }): Promise; + + setKickIncentive( + _rate: BigNumberish, + _delay: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + shutdown(overrides?: Overrides & { from?: string | Promise }): Promise; + + stakingToken(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAtEpoch(_epoch: BigNumberish, overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + userData(arg0: string, arg1: string, overrides?: CallOverrides): Promise; + + userLocks(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + addReward( + _rewardsToken: string, + _distributor: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approveRewardDistributor( + _rewardsToken: string, + _distributor: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceAtEpochOf(_epoch: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + balanceOf(_user: string, overrides?: CallOverrides): Promise; + + balances(arg0: string, overrides?: CallOverrides): Promise; + + blacklist(arg0: string, overrides?: CallOverrides): Promise; + + checkpointEpoch(overrides?: Overrides & { from?: string | Promise }): Promise; + + checkpoints(account: string, pos: BigNumberish, overrides?: CallOverrides): Promise; + + claimableRewards(_account: string, overrides?: CallOverrides): Promise; + + cvxCrv(overrides?: CallOverrides): Promise; + + cvxcrvStaking(overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + delegate( + newDelegatee: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + delegateeUnlocks(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + delegates(account: string, overrides?: CallOverrides): Promise; + + denominator(overrides?: CallOverrides): Promise; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + epochCount(overrides?: CallOverrides): Promise; + + epochs(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + findEpochId(_time: BigNumberish, overrides?: CallOverrides): Promise; + + getPastTotalSupply(timestamp: BigNumberish, overrides?: CallOverrides): Promise; + + getPastVotes(account: string, timestamp: BigNumberish, overrides?: CallOverrides): Promise; + + 'getReward(address,bool)'( + _account: string, + _stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'getReward(address)'( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'getReward(address,bool[])'( + _account: string, + _skipIdx: boolean[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getVotes(account: string, overrides?: CallOverrides): Promise; + + isShutdown(overrides?: CallOverrides): Promise; + + kickExpiredLocks( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + kickRewardEpochDelay(overrides?: CallOverrides): Promise; + + kickRewardPerEpoch(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(_rewardsToken: string, overrides?: CallOverrides): Promise; + + lock( + _account: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lockDuration(overrides?: CallOverrides): Promise; + + lockedBalances(_user: string, overrides?: CallOverrides): Promise; + + lockedSupply(overrides?: CallOverrides): Promise; + + modifyBlacklist( + _account: string, + _blacklisted: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + numCheckpoints(account: string, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + processExpiredLocks( + _relock: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queueNewRewards( + _rewardsToken: string, + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(arg0: string, overrides?: CallOverrides): Promise; + + recoverERC20( + _tokenAddress: string, + _tokenAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardData(arg0: string, overrides?: CallOverrides): Promise; + + rewardDistributors(arg0: string, arg1: string, overrides?: CallOverrides): Promise; + + rewardPerToken(_rewardsToken: string, overrides?: CallOverrides): Promise; + + rewardTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + rewardsDuration(overrides?: CallOverrides): Promise; + + setApprovals(overrides?: Overrides & { from?: string | Promise }): Promise; + + setKickIncentive( + _rate: BigNumberish, + _delay: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + shutdown(overrides?: Overrides & { from?: string | Promise }): Promise; + + stakingToken(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAtEpoch(_epoch: BigNumberish, overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + userData(arg0: string, arg1: string, overrides?: CallOverrides): Promise; + + userLocks(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/aura/contracts/ethers/AuraMasterchef.ts b/src/apps/aura/contracts/ethers/AuraMasterchef.ts new file mode 100644 index 000000000..3ed2760af --- /dev/null +++ b/src/apps/aura/contracts/ethers/AuraMasterchef.ts @@ -0,0 +1,652 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface AuraMasterchefInterface extends utils.Interface { + functions: { + 'BONUS_MULTIPLIER()': FunctionFragment; + 'add(uint256,address,address)': FunctionFragment; + 'claim(uint256,address)': FunctionFragment; + 'cvx()': FunctionFragment; + 'deposit(uint256,uint256)': FunctionFragment; + 'emergencyWithdraw(uint256)': FunctionFragment; + 'endBlock()': FunctionFragment; + 'getMultiplier(uint256,uint256)': FunctionFragment; + 'isAddedPool(address)': FunctionFragment; + 'massUpdatePools()': FunctionFragment; + 'owner()': FunctionFragment; + 'pendingCvx(uint256,address)': FunctionFragment; + 'poolInfo(uint256)': FunctionFragment; + 'poolLength()': FunctionFragment; + 'renounceOwnership()': FunctionFragment; + 'rewardPerBlock()': FunctionFragment; + 'set(uint256,uint256,address,bool)': FunctionFragment; + 'startBlock()': FunctionFragment; + 'totalAllocPoint()': FunctionFragment; + 'transferOwnership(address)': FunctionFragment; + 'updatePool(uint256)': FunctionFragment; + 'userInfo(uint256,address)': FunctionFragment; + 'withdraw(uint256,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'BONUS_MULTIPLIER' + | 'add' + | 'claim' + | 'cvx' + | 'deposit' + | 'emergencyWithdraw' + | 'endBlock' + | 'getMultiplier' + | 'isAddedPool' + | 'massUpdatePools' + | 'owner' + | 'pendingCvx' + | 'poolInfo' + | 'poolLength' + | 'renounceOwnership' + | 'rewardPerBlock' + | 'set' + | 'startBlock' + | 'totalAllocPoint' + | 'transferOwnership' + | 'updatePool' + | 'userInfo' + | 'withdraw', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'BONUS_MULTIPLIER', values?: undefined): string; + encodeFunctionData(functionFragment: 'add', values: [BigNumberish, string, string]): string; + encodeFunctionData(functionFragment: 'claim', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'cvx', values?: undefined): string; + encodeFunctionData(functionFragment: 'deposit', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'emergencyWithdraw', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'endBlock', values?: undefined): string; + encodeFunctionData(functionFragment: 'getMultiplier', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'isAddedPool', values: [string]): string; + encodeFunctionData(functionFragment: 'massUpdatePools', values?: undefined): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingCvx', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'poolInfo', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'poolLength', values?: undefined): string; + encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardPerBlock', values?: undefined): string; + encodeFunctionData(functionFragment: 'set', values: [BigNumberish, BigNumberish, string, boolean]): string; + encodeFunctionData(functionFragment: 'startBlock', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalAllocPoint', values?: undefined): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string]): string; + encodeFunctionData(functionFragment: 'updatePool', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'userInfo', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'withdraw', values: [BigNumberish, BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'BONUS_MULTIPLIER', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'add', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'claim', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'cvx', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'emergencyWithdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'endBlock', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getMultiplier', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isAddedPool', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'massUpdatePools', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingCvx', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'poolInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'poolLength', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardPerBlock', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'set', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'startBlock', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalAllocPoint', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updatePool', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + + events: { + 'Deposit(address,uint256,uint256)': EventFragment; + 'EmergencyWithdraw(address,uint256,uint256)': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'RewardPaid(address,uint256,uint256)': EventFragment; + 'Withdraw(address,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'EmergencyWithdraw'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardPaid'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdraw'): EventFragment; +} + +export interface DepositEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; +} +export type DepositEvent = TypedEvent<[string, BigNumber, BigNumber], DepositEventObject>; + +export type DepositEventFilter = TypedEventFilter; + +export interface EmergencyWithdrawEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; +} +export type EmergencyWithdrawEvent = TypedEvent<[string, BigNumber, BigNumber], EmergencyWithdrawEventObject>; + +export type EmergencyWithdrawEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface RewardPaidEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; +} +export type RewardPaidEvent = TypedEvent<[string, BigNumber, BigNumber], RewardPaidEventObject>; + +export type RewardPaidEventFilter = TypedEventFilter; + +export interface WithdrawEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; +} +export type WithdrawEvent = TypedEvent<[string, BigNumber, BigNumber], WithdrawEventObject>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface AuraMasterchef extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AuraMasterchefInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + BONUS_MULTIPLIER(overrides?: CallOverrides): Promise<[BigNumber]>; + + add( + _allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claim( + _pid: BigNumberish, + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cvx(overrides?: CallOverrides): Promise<[string]>; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endBlock(overrides?: CallOverrides): Promise<[BigNumber]>; + + getMultiplier(_from: BigNumberish, _to: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + isAddedPool(arg0: string, overrides?: CallOverrides): Promise<[boolean]>; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pendingCvx(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, string] & { + lpToken: string; + allocPoint: BigNumber; + lastRewardBlock: BigNumber; + accCvxPerShare: BigNumber; + rewarder: string; + } + >; + + poolLength(overrides?: CallOverrides): Promise<[BigNumber]>; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardPerBlock(overrides?: CallOverrides): Promise<[BigNumber]>; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + _updateRewarder: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startBlock(overrides?: CallOverrides): Promise<[BigNumber]>; + + totalAllocPoint(overrides?: CallOverrides): Promise<[BigNumber]>; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePool( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + userInfo( + arg0: BigNumberish, + arg1: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { amount: BigNumber; rewardDebt: BigNumber }>; + + withdraw( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + BONUS_MULTIPLIER(overrides?: CallOverrides): Promise; + + add( + _allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claim( + _pid: BigNumberish, + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cvx(overrides?: CallOverrides): Promise; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endBlock(overrides?: CallOverrides): Promise; + + getMultiplier(_from: BigNumberish, _to: BigNumberish, overrides?: CallOverrides): Promise; + + isAddedPool(arg0: string, overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingCvx(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, string] & { + lpToken: string; + allocPoint: BigNumber; + lastRewardBlock: BigNumber; + accCvxPerShare: BigNumber; + rewarder: string; + } + >; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardPerBlock(overrides?: CallOverrides): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + _updateRewarder: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startBlock(overrides?: CallOverrides): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePool( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + userInfo( + arg0: BigNumberish, + arg1: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { amount: BigNumber; rewardDebt: BigNumber }>; + + withdraw( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + BONUS_MULTIPLIER(overrides?: CallOverrides): Promise; + + add(_allocPoint: BigNumberish, _lpToken: string, _rewarder: string, overrides?: CallOverrides): Promise; + + claim(_pid: BigNumberish, _account: string, overrides?: CallOverrides): Promise; + + cvx(overrides?: CallOverrides): Promise; + + deposit(_pid: BigNumberish, _amount: BigNumberish, overrides?: CallOverrides): Promise; + + emergencyWithdraw(_pid: BigNumberish, overrides?: CallOverrides): Promise; + + endBlock(overrides?: CallOverrides): Promise; + + getMultiplier(_from: BigNumberish, _to: BigNumberish, overrides?: CallOverrides): Promise; + + isAddedPool(arg0: string, overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingCvx(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, string] & { + lpToken: string; + allocPoint: BigNumber; + lastRewardBlock: BigNumber; + accCvxPerShare: BigNumber; + rewarder: string; + } + >; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + rewardPerBlock(overrides?: CallOverrides): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + _updateRewarder: boolean, + overrides?: CallOverrides, + ): Promise; + + startBlock(overrides?: CallOverrides): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, overrides?: CallOverrides): Promise; + + updatePool(_pid: BigNumberish, overrides?: CallOverrides): Promise; + + userInfo( + arg0: BigNumberish, + arg1: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { amount: BigNumber; rewardDebt: BigNumber }>; + + withdraw(_pid: BigNumberish, _amount: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + 'Deposit(address,uint256,uint256)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + ): DepositEventFilter; + Deposit(user?: string | null, pid?: BigNumberish | null, amount?: null): DepositEventFilter; + + 'EmergencyWithdraw(address,uint256,uint256)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + ): EmergencyWithdrawEventFilter; + EmergencyWithdraw(user?: string | null, pid?: BigNumberish | null, amount?: null): EmergencyWithdrawEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'RewardPaid(address,uint256,uint256)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + ): RewardPaidEventFilter; + RewardPaid(user?: string | null, pid?: BigNumberish | null, amount?: null): RewardPaidEventFilter; + + 'Withdraw(address,uint256,uint256)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + ): WithdrawEventFilter; + Withdraw(user?: string | null, pid?: BigNumberish | null, amount?: null): WithdrawEventFilter; + }; + + estimateGas: { + BONUS_MULTIPLIER(overrides?: CallOverrides): Promise; + + add( + _allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claim( + _pid: BigNumberish, + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cvx(overrides?: CallOverrides): Promise; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endBlock(overrides?: CallOverrides): Promise; + + getMultiplier(_from: BigNumberish, _to: BigNumberish, overrides?: CallOverrides): Promise; + + isAddedPool(arg0: string, overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingCvx(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardPerBlock(overrides?: CallOverrides): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + _updateRewarder: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startBlock(overrides?: CallOverrides): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePool(_pid: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + userInfo(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise; + + withdraw( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + populateTransaction: { + BONUS_MULTIPLIER(overrides?: CallOverrides): Promise; + + add( + _allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claim( + _pid: BigNumberish, + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cvx(overrides?: CallOverrides): Promise; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endBlock(overrides?: CallOverrides): Promise; + + getMultiplier(_from: BigNumberish, _to: BigNumberish, overrides?: CallOverrides): Promise; + + isAddedPool(arg0: string, overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingCvx(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardPerBlock(overrides?: CallOverrides): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + _updateRewarder: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startBlock(overrides?: CallOverrides): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePool( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + userInfo(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise; + + withdraw( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; +} diff --git a/src/apps/aura/contracts/ethers/AuraToken.ts b/src/apps/aura/contracts/ethers/AuraToken.ts new file mode 100644 index 000000000..0fcc91f39 --- /dev/null +++ b/src/apps/aura/contracts/ethers/AuraToken.ts @@ -0,0 +1,560 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface AuraTokenInterface extends utils.Interface { + functions: { + 'EMISSIONS_MAX_SUPPLY()': FunctionFragment; + 'INIT_MINT_AMOUNT()': FunctionFragment; + 'allowance(address,address)': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'decimals()': FunctionFragment; + 'decreaseAllowance(address,uint256)': FunctionFragment; + 'increaseAllowance(address,uint256)': FunctionFragment; + 'init(address,address)': FunctionFragment; + 'mint(address,uint256)': FunctionFragment; + 'minter()': FunctionFragment; + 'minterMint(address,uint256)': FunctionFragment; + 'name()': FunctionFragment; + 'operator()': FunctionFragment; + 'reductionPerCliff()': FunctionFragment; + 'symbol()': FunctionFragment; + 'totalCliffs()': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'updateOperator()': FunctionFragment; + 'vecrvProxy()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'EMISSIONS_MAX_SUPPLY' + | 'INIT_MINT_AMOUNT' + | 'allowance' + | 'approve' + | 'balanceOf' + | 'decimals' + | 'decreaseAllowance' + | 'increaseAllowance' + | 'init' + | 'mint' + | 'minter' + | 'minterMint' + | 'name' + | 'operator' + | 'reductionPerCliff' + | 'symbol' + | 'totalCliffs' + | 'totalSupply' + | 'transfer' + | 'transferFrom' + | 'updateOperator' + | 'vecrvProxy', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'EMISSIONS_MAX_SUPPLY', values?: undefined): string; + encodeFunctionData(functionFragment: 'INIT_MINT_AMOUNT', values?: undefined): string; + encodeFunctionData(functionFragment: 'allowance', values: [string, string]): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'decimals', values?: undefined): string; + encodeFunctionData(functionFragment: 'decreaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'increaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'init', values: [string, string]): string; + encodeFunctionData(functionFragment: 'mint', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'minter', values?: undefined): string; + encodeFunctionData(functionFragment: 'minterMint', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'operator', values?: undefined): string; + encodeFunctionData(functionFragment: 'reductionPerCliff', values?: undefined): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalCliffs', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'updateOperator', values?: undefined): string; + encodeFunctionData(functionFragment: 'vecrvProxy', values?: undefined): string; + + decodeFunctionResult(functionFragment: 'EMISSIONS_MAX_SUPPLY', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'INIT_MINT_AMOUNT', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'init', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'mint', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'minter', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'minterMint', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'operator', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'reductionPerCliff', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalCliffs', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updateOperator', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'vecrvProxy', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'Initialised()': EventFragment; + 'OperatorChanged(address,address)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Initialised'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OperatorChanged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface InitialisedEventObject {} +export type InitialisedEvent = TypedEvent<[], InitialisedEventObject>; + +export type InitialisedEventFilter = TypedEventFilter; + +export interface OperatorChangedEventObject { + previousOperator: string; + newOperator: string; +} +export type OperatorChangedEvent = TypedEvent<[string, string], OperatorChangedEventObject>; + +export type OperatorChangedEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface AuraToken extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AuraTokenInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + EMISSIONS_MAX_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; + + INIT_MINT_AMOUNT(overrides?: CallOverrides): Promise<[BigNumber]>; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + init( + _to: string, + _minter: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + mint( + _to: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + minter(overrides?: CallOverrides): Promise<[string]>; + + minterMint( + _to: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise<[string]>; + + operator(overrides?: CallOverrides): Promise<[string]>; + + reductionPerCliff(overrides?: CallOverrides): Promise<[BigNumber]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalCliffs(overrides?: CallOverrides): Promise<[BigNumber]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateOperator(overrides?: Overrides & { from?: string | Promise }): Promise; + + vecrvProxy(overrides?: CallOverrides): Promise<[string]>; + }; + + EMISSIONS_MAX_SUPPLY(overrides?: CallOverrides): Promise; + + INIT_MINT_AMOUNT(overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + init( + _to: string, + _minter: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + mint( + _to: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + minter(overrides?: CallOverrides): Promise; + + minterMint( + _to: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + reductionPerCliff(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalCliffs(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateOperator(overrides?: Overrides & { from?: string | Promise }): Promise; + + vecrvProxy(overrides?: CallOverrides): Promise; + + callStatic: { + EMISSIONS_MAX_SUPPLY(overrides?: CallOverrides): Promise; + + INIT_MINT_AMOUNT(overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve(spender: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance(spender: string, subtractedValue: BigNumberish, overrides?: CallOverrides): Promise; + + increaseAllowance(spender: string, addedValue: BigNumberish, overrides?: CallOverrides): Promise; + + init(_to: string, _minter: string, overrides?: CallOverrides): Promise; + + mint(_to: string, _amount: BigNumberish, overrides?: CallOverrides): Promise; + + minter(overrides?: CallOverrides): Promise; + + minterMint(_to: string, _amount: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + reductionPerCliff(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalCliffs(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer(recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(sender: string, recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + updateOperator(overrides?: CallOverrides): Promise; + + vecrvProxy(overrides?: CallOverrides): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: string | null, + spender?: string | null, + value?: null, + ): ApprovalEventFilter; + Approval(owner?: string | null, spender?: string | null, value?: null): ApprovalEventFilter; + + 'Initialised()'(): InitialisedEventFilter; + Initialised(): InitialisedEventFilter; + + 'OperatorChanged(address,address)'( + previousOperator?: string | null, + newOperator?: string | null, + ): OperatorChangedEventFilter; + OperatorChanged(previousOperator?: string | null, newOperator?: string | null): OperatorChangedEventFilter; + + 'Transfer(address,address,uint256)'(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + }; + + estimateGas: { + EMISSIONS_MAX_SUPPLY(overrides?: CallOverrides): Promise; + + INIT_MINT_AMOUNT(overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + init(_to: string, _minter: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + mint( + _to: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + minter(overrides?: CallOverrides): Promise; + + minterMint( + _to: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + reductionPerCliff(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalCliffs(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateOperator(overrides?: Overrides & { from?: string | Promise }): Promise; + + vecrvProxy(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + EMISSIONS_MAX_SUPPLY(overrides?: CallOverrides): Promise; + + INIT_MINT_AMOUNT(overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + init( + _to: string, + _minter: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + mint( + _to: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + minter(overrides?: CallOverrides): Promise; + + minterMint( + _to: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + reductionPerCliff(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalCliffs(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateOperator(overrides?: Overrides & { from?: string | Promise }): Promise; + + vecrvProxy(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/aura/contracts/ethers/AuraVirtualBalanceRewardPool.ts b/src/apps/aura/contracts/ethers/AuraVirtualBalanceRewardPool.ts new file mode 100644 index 000000000..11523c92c --- /dev/null +++ b/src/apps/aura/contracts/ethers/AuraVirtualBalanceRewardPool.ts @@ -0,0 +1,532 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface AuraVirtualBalanceRewardPoolInterface extends utils.Interface { + functions: { + 'balanceOf(address)': FunctionFragment; + 'currentRewards()': FunctionFragment; + 'deposits()': FunctionFragment; + 'donate(uint256)': FunctionFragment; + 'duration()': FunctionFragment; + 'earned(address)': FunctionFragment; + 'getReward()': FunctionFragment; + 'getReward(address)': FunctionFragment; + 'historicalRewards()': FunctionFragment; + 'lastTimeRewardApplicable()': FunctionFragment; + 'lastUpdateTime()': FunctionFragment; + 'newRewardRatio()': FunctionFragment; + 'operator()': FunctionFragment; + 'periodFinish()': FunctionFragment; + 'queueNewRewards(uint256)': FunctionFragment; + 'queuedRewards()': FunctionFragment; + 'rewardPerToken()': FunctionFragment; + 'rewardPerTokenStored()': FunctionFragment; + 'rewardRate()': FunctionFragment; + 'rewardToken()': FunctionFragment; + 'rewards(address)': FunctionFragment; + 'stake(address,uint256)': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'userRewardPerTokenPaid(address)': FunctionFragment; + 'withdraw(address,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'balanceOf' + | 'currentRewards' + | 'deposits' + | 'donate' + | 'duration' + | 'earned' + | 'getReward()' + | 'getReward(address)' + | 'historicalRewards' + | 'lastTimeRewardApplicable' + | 'lastUpdateTime' + | 'newRewardRatio' + | 'operator' + | 'periodFinish' + | 'queueNewRewards' + | 'queuedRewards' + | 'rewardPerToken' + | 'rewardPerTokenStored' + | 'rewardRate' + | 'rewardToken' + | 'rewards' + | 'stake' + | 'totalSupply' + | 'userRewardPerTokenPaid' + | 'withdraw', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'currentRewards', values?: undefined): string; + encodeFunctionData(functionFragment: 'deposits', values?: undefined): string; + encodeFunctionData(functionFragment: 'donate', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'duration', values?: undefined): string; + encodeFunctionData(functionFragment: 'earned', values: [string]): string; + encodeFunctionData(functionFragment: 'getReward()', values?: undefined): string; + encodeFunctionData(functionFragment: 'getReward(address)', values: [string]): string; + encodeFunctionData(functionFragment: 'historicalRewards', values?: undefined): string; + encodeFunctionData(functionFragment: 'lastTimeRewardApplicable', values?: undefined): string; + encodeFunctionData(functionFragment: 'lastUpdateTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'newRewardRatio', values?: undefined): string; + encodeFunctionData(functionFragment: 'operator', values?: undefined): string; + encodeFunctionData(functionFragment: 'periodFinish', values?: undefined): string; + encodeFunctionData(functionFragment: 'queueNewRewards', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'queuedRewards', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardPerToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardPerTokenStored', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardRate', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewards', values: [string]): string; + encodeFunctionData(functionFragment: 'stake', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'userRewardPerTokenPaid', values: [string]): string; + encodeFunctionData(functionFragment: 'withdraw', values: [string, BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'currentRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposits', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'donate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'duration', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'earned', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getReward()', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getReward(address)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'historicalRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastTimeRewardApplicable', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastUpdateTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'newRewardRatio', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'operator', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'periodFinish', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'queueNewRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'queuedRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardPerToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardPerTokenStored', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardRate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stake', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userRewardPerTokenPaid', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + + events: { + 'RewardAdded(uint256)': EventFragment; + 'RewardPaid(address,uint256)': EventFragment; + 'Staked(address,uint256)': EventFragment; + 'Withdrawn(address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'RewardAdded'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardPaid'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Staked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdrawn'): EventFragment; +} + +export interface RewardAddedEventObject { + reward: BigNumber; +} +export type RewardAddedEvent = TypedEvent<[BigNumber], RewardAddedEventObject>; + +export type RewardAddedEventFilter = TypedEventFilter; + +export interface RewardPaidEventObject { + user: string; + reward: BigNumber; +} +export type RewardPaidEvent = TypedEvent<[string, BigNumber], RewardPaidEventObject>; + +export type RewardPaidEventFilter = TypedEventFilter; + +export interface StakedEventObject { + user: string; + amount: BigNumber; +} +export type StakedEvent = TypedEvent<[string, BigNumber], StakedEventObject>; + +export type StakedEventFilter = TypedEventFilter; + +export interface WithdrawnEventObject { + user: string; + amount: BigNumber; +} +export type WithdrawnEvent = TypedEvent<[string, BigNumber], WithdrawnEventObject>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface AuraVirtualBalanceRewardPool extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AuraVirtualBalanceRewardPoolInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + currentRewards(overrides?: CallOverrides): Promise<[BigNumber]>; + + deposits(overrides?: CallOverrides): Promise<[string]>; + + donate( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + duration(overrides?: CallOverrides): Promise<[BigNumber]>; + + earned(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + 'getReward()'(overrides?: Overrides & { from?: string | Promise }): Promise; + + 'getReward(address)'( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + historicalRewards(overrides?: CallOverrides): Promise<[BigNumber]>; + + lastTimeRewardApplicable(overrides?: CallOverrides): Promise<[BigNumber]>; + + lastUpdateTime(overrides?: CallOverrides): Promise<[BigNumber]>; + + newRewardRatio(overrides?: CallOverrides): Promise<[BigNumber]>; + + operator(overrides?: CallOverrides): Promise<[string]>; + + periodFinish(overrides?: CallOverrides): Promise<[BigNumber]>; + + queueNewRewards( + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(overrides?: CallOverrides): Promise<[BigNumber]>; + + rewardPerToken(overrides?: CallOverrides): Promise<[BigNumber]>; + + rewardPerTokenStored(overrides?: CallOverrides): Promise<[BigNumber]>; + + rewardRate(overrides?: CallOverrides): Promise<[BigNumber]>; + + rewardToken(overrides?: CallOverrides): Promise<[string]>; + + rewards(arg0: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + stake( + _account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + userRewardPerTokenPaid(arg0: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + withdraw( + _account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + currentRewards(overrides?: CallOverrides): Promise; + + deposits(overrides?: CallOverrides): Promise; + + donate( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + duration(overrides?: CallOverrides): Promise; + + earned(account: string, overrides?: CallOverrides): Promise; + + 'getReward()'(overrides?: Overrides & { from?: string | Promise }): Promise; + + 'getReward(address)'( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + historicalRewards(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(overrides?: CallOverrides): Promise; + + lastUpdateTime(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + periodFinish(overrides?: CallOverrides): Promise; + + queueNewRewards( + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(overrides?: CallOverrides): Promise; + + rewardPerToken(overrides?: CallOverrides): Promise; + + rewardPerTokenStored(overrides?: CallOverrides): Promise; + + rewardRate(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + rewards(arg0: string, overrides?: CallOverrides): Promise; + + stake( + _account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + userRewardPerTokenPaid(arg0: string, overrides?: CallOverrides): Promise; + + withdraw( + _account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + balanceOf(account: string, overrides?: CallOverrides): Promise; + + currentRewards(overrides?: CallOverrides): Promise; + + deposits(overrides?: CallOverrides): Promise; + + donate(_amount: BigNumberish, overrides?: CallOverrides): Promise; + + duration(overrides?: CallOverrides): Promise; + + earned(account: string, overrides?: CallOverrides): Promise; + + 'getReward()'(overrides?: CallOverrides): Promise; + + 'getReward(address)'(_account: string, overrides?: CallOverrides): Promise; + + historicalRewards(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(overrides?: CallOverrides): Promise; + + lastUpdateTime(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + periodFinish(overrides?: CallOverrides): Promise; + + queueNewRewards(_rewards: BigNumberish, overrides?: CallOverrides): Promise; + + queuedRewards(overrides?: CallOverrides): Promise; + + rewardPerToken(overrides?: CallOverrides): Promise; + + rewardPerTokenStored(overrides?: CallOverrides): Promise; + + rewardRate(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + rewards(arg0: string, overrides?: CallOverrides): Promise; + + stake(_account: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + userRewardPerTokenPaid(arg0: string, overrides?: CallOverrides): Promise; + + withdraw(_account: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + 'RewardAdded(uint256)'(reward?: null): RewardAddedEventFilter; + RewardAdded(reward?: null): RewardAddedEventFilter; + + 'RewardPaid(address,uint256)'(user?: string | null, reward?: null): RewardPaidEventFilter; + RewardPaid(user?: string | null, reward?: null): RewardPaidEventFilter; + + 'Staked(address,uint256)'(user?: string | null, amount?: null): StakedEventFilter; + Staked(user?: string | null, amount?: null): StakedEventFilter; + + 'Withdrawn(address,uint256)'(user?: string | null, amount?: null): WithdrawnEventFilter; + Withdrawn(user?: string | null, amount?: null): WithdrawnEventFilter; + }; + + estimateGas: { + balanceOf(account: string, overrides?: CallOverrides): Promise; + + currentRewards(overrides?: CallOverrides): Promise; + + deposits(overrides?: CallOverrides): Promise; + + donate(_amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + duration(overrides?: CallOverrides): Promise; + + earned(account: string, overrides?: CallOverrides): Promise; + + 'getReward()'(overrides?: Overrides & { from?: string | Promise }): Promise; + + 'getReward(address)'( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + historicalRewards(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(overrides?: CallOverrides): Promise; + + lastUpdateTime(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + periodFinish(overrides?: CallOverrides): Promise; + + queueNewRewards( + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(overrides?: CallOverrides): Promise; + + rewardPerToken(overrides?: CallOverrides): Promise; + + rewardPerTokenStored(overrides?: CallOverrides): Promise; + + rewardRate(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + rewards(arg0: string, overrides?: CallOverrides): Promise; + + stake( + _account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + userRewardPerTokenPaid(arg0: string, overrides?: CallOverrides): Promise; + + withdraw( + _account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + populateTransaction: { + balanceOf(account: string, overrides?: CallOverrides): Promise; + + currentRewards(overrides?: CallOverrides): Promise; + + deposits(overrides?: CallOverrides): Promise; + + donate( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + duration(overrides?: CallOverrides): Promise; + + earned(account: string, overrides?: CallOverrides): Promise; + + 'getReward()'(overrides?: Overrides & { from?: string | Promise }): Promise; + + 'getReward(address)'( + _account: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + historicalRewards(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(overrides?: CallOverrides): Promise; + + lastUpdateTime(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + periodFinish(overrides?: CallOverrides): Promise; + + queueNewRewards( + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(overrides?: CallOverrides): Promise; + + rewardPerToken(overrides?: CallOverrides): Promise; + + rewardPerTokenStored(overrides?: CallOverrides): Promise; + + rewardRate(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + rewards(arg0: string, overrides?: CallOverrides): Promise; + + stake( + _account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + userRewardPerTokenPaid(arg0: string, overrides?: CallOverrides): Promise; + + withdraw( + _account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; +} diff --git a/src/apps/aura/contracts/ethers/BalancerHelpers.ts b/src/apps/aura/contracts/ethers/BalancerHelpers.ts new file mode 100644 index 000000000..b1ed91a15 --- /dev/null +++ b/src/apps/aura/contracts/ethers/BalancerHelpers.ts @@ -0,0 +1,197 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export declare namespace IVault { + export type ExitPoolRequestStruct = { + assets: string[]; + minAmountsOut: BigNumberish[]; + userData: BytesLike; + toInternalBalance: boolean; + }; + + export type ExitPoolRequestStructOutput = [string[], BigNumber[], string, boolean] & { + assets: string[]; + minAmountsOut: BigNumber[]; + userData: string; + toInternalBalance: boolean; + }; + + export type JoinPoolRequestStruct = { + assets: string[]; + maxAmountsIn: BigNumberish[]; + userData: BytesLike; + fromInternalBalance: boolean; + }; + + export type JoinPoolRequestStructOutput = [string[], BigNumber[], string, boolean] & { + assets: string[]; + maxAmountsIn: BigNumber[]; + userData: string; + fromInternalBalance: boolean; + }; +} + +export interface BalancerHelpersInterface extends utils.Interface { + functions: { + 'queryExit(bytes32,address,address,(address[],uint256[],bytes,bool))': FunctionFragment; + 'queryJoin(bytes32,address,address,(address[],uint256[],bytes,bool))': FunctionFragment; + 'vault()': FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: 'queryExit' | 'queryJoin' | 'vault'): FunctionFragment; + + encodeFunctionData( + functionFragment: 'queryExit', + values: [BytesLike, string, string, IVault.ExitPoolRequestStruct], + ): string; + encodeFunctionData( + functionFragment: 'queryJoin', + values: [BytesLike, string, string, IVault.JoinPoolRequestStruct], + ): string; + encodeFunctionData(functionFragment: 'vault', values?: undefined): string; + + decodeFunctionResult(functionFragment: 'queryExit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'queryJoin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'vault', data: BytesLike): Result; + + events: {}; +} + +export interface BalancerHelpers extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BalancerHelpersInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + queryExit( + poolId: BytesLike, + sender: string, + recipient: string, + request: IVault.ExitPoolRequestStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queryJoin( + poolId: BytesLike, + sender: string, + recipient: string, + request: IVault.JoinPoolRequestStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + vault(overrides?: CallOverrides): Promise<[string]>; + }; + + queryExit( + poolId: BytesLike, + sender: string, + recipient: string, + request: IVault.ExitPoolRequestStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queryJoin( + poolId: BytesLike, + sender: string, + recipient: string, + request: IVault.JoinPoolRequestStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + vault(overrides?: CallOverrides): Promise; + + callStatic: { + queryExit( + poolId: BytesLike, + sender: string, + recipient: string, + request: IVault.ExitPoolRequestStruct, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber[]] & { bptIn: BigNumber; amountsOut: BigNumber[] }>; + + queryJoin( + poolId: BytesLike, + sender: string, + recipient: string, + request: IVault.JoinPoolRequestStruct, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber[]] & { bptOut: BigNumber; amountsIn: BigNumber[] }>; + + vault(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + queryExit( + poolId: BytesLike, + sender: string, + recipient: string, + request: IVault.ExitPoolRequestStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queryJoin( + poolId: BytesLike, + sender: string, + recipient: string, + request: IVault.JoinPoolRequestStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + vault(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + queryExit( + poolId: BytesLike, + sender: string, + recipient: string, + request: IVault.ExitPoolRequestStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queryJoin( + poolId: BytesLike, + sender: string, + recipient: string, + request: IVault.JoinPoolRequestStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + vault(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/aura/contracts/ethers/BaseRewardPool.ts b/src/apps/aura/contracts/ethers/BaseRewardPool.ts new file mode 100644 index 000000000..4731e150b --- /dev/null +++ b/src/apps/aura/contracts/ethers/BaseRewardPool.ts @@ -0,0 +1,759 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface BaseRewardPoolInterface extends utils.Interface { + functions: { + 'addExtraReward(address)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'clearExtraRewards()': FunctionFragment; + 'currentRewards()': FunctionFragment; + 'donate(uint256)': FunctionFragment; + 'duration()': FunctionFragment; + 'earned(address)': FunctionFragment; + 'extraRewards(uint256)': FunctionFragment; + 'extraRewardsLength()': FunctionFragment; + 'getReward()': FunctionFragment; + 'getReward(address,bool)': FunctionFragment; + 'historicalRewards()': FunctionFragment; + 'lastTimeRewardApplicable()': FunctionFragment; + 'lastUpdateTime()': FunctionFragment; + 'newRewardRatio()': FunctionFragment; + 'operator()': FunctionFragment; + 'periodFinish()': FunctionFragment; + 'pid()': FunctionFragment; + 'processIdleRewards()': FunctionFragment; + 'queueNewRewards(uint256)': FunctionFragment; + 'queuedRewards()': FunctionFragment; + 'rewardManager()': FunctionFragment; + 'rewardPerToken()': FunctionFragment; + 'rewardPerTokenStored()': FunctionFragment; + 'rewardRate()': FunctionFragment; + 'rewardToken()': FunctionFragment; + 'rewards(address)': FunctionFragment; + 'stake(uint256)': FunctionFragment; + 'stakeAll()': FunctionFragment; + 'stakeFor(address,uint256)': FunctionFragment; + 'stakingToken()': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'userRewardPerTokenPaid(address)': FunctionFragment; + 'withdraw(uint256,bool)': FunctionFragment; + 'withdrawAll(bool)': FunctionFragment; + 'withdrawAllAndUnwrap(bool)': FunctionFragment; + 'withdrawAndUnwrap(uint256,bool)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'addExtraReward' + | 'balanceOf' + | 'clearExtraRewards' + | 'currentRewards' + | 'donate' + | 'duration' + | 'earned' + | 'extraRewards' + | 'extraRewardsLength' + | 'getReward()' + | 'getReward(address,bool)' + | 'historicalRewards' + | 'lastTimeRewardApplicable' + | 'lastUpdateTime' + | 'newRewardRatio' + | 'operator' + | 'periodFinish' + | 'pid' + | 'processIdleRewards' + | 'queueNewRewards' + | 'queuedRewards' + | 'rewardManager' + | 'rewardPerToken' + | 'rewardPerTokenStored' + | 'rewardRate' + | 'rewardToken' + | 'rewards' + | 'stake' + | 'stakeAll' + | 'stakeFor' + | 'stakingToken' + | 'totalSupply' + | 'userRewardPerTokenPaid' + | 'withdraw' + | 'withdrawAll' + | 'withdrawAllAndUnwrap' + | 'withdrawAndUnwrap', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'addExtraReward', values: [string]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'clearExtraRewards', values?: undefined): string; + encodeFunctionData(functionFragment: 'currentRewards', values?: undefined): string; + encodeFunctionData(functionFragment: 'donate', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'duration', values?: undefined): string; + encodeFunctionData(functionFragment: 'earned', values: [string]): string; + encodeFunctionData(functionFragment: 'extraRewards', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'extraRewardsLength', values?: undefined): string; + encodeFunctionData(functionFragment: 'getReward()', values?: undefined): string; + encodeFunctionData(functionFragment: 'getReward(address,bool)', values: [string, boolean]): string; + encodeFunctionData(functionFragment: 'historicalRewards', values?: undefined): string; + encodeFunctionData(functionFragment: 'lastTimeRewardApplicable', values?: undefined): string; + encodeFunctionData(functionFragment: 'lastUpdateTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'newRewardRatio', values?: undefined): string; + encodeFunctionData(functionFragment: 'operator', values?: undefined): string; + encodeFunctionData(functionFragment: 'periodFinish', values?: undefined): string; + encodeFunctionData(functionFragment: 'pid', values?: undefined): string; + encodeFunctionData(functionFragment: 'processIdleRewards', values?: undefined): string; + encodeFunctionData(functionFragment: 'queueNewRewards', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'queuedRewards', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardManager', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardPerToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardPerTokenStored', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardRate', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewards', values: [string]): string; + encodeFunctionData(functionFragment: 'stake', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'stakeAll', values?: undefined): string; + encodeFunctionData(functionFragment: 'stakeFor', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'stakingToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'userRewardPerTokenPaid', values: [string]): string; + encodeFunctionData(functionFragment: 'withdraw', values: [BigNumberish, boolean]): string; + encodeFunctionData(functionFragment: 'withdrawAll', values: [boolean]): string; + encodeFunctionData(functionFragment: 'withdrawAllAndUnwrap', values: [boolean]): string; + encodeFunctionData(functionFragment: 'withdrawAndUnwrap', values: [BigNumberish, boolean]): string; + + decodeFunctionResult(functionFragment: 'addExtraReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'clearExtraRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'currentRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'donate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'duration', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'earned', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'extraRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'extraRewardsLength', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getReward()', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getReward(address,bool)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'historicalRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastTimeRewardApplicable', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastUpdateTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'newRewardRatio', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'operator', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'periodFinish', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pid', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'processIdleRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'queueNewRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'queuedRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardManager', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardPerToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardPerTokenStored', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardRate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stake', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stakeAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stakeFor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stakingToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userRewardPerTokenPaid', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdrawAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdrawAllAndUnwrap', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdrawAndUnwrap', data: BytesLike): Result; + + events: { + 'RewardAdded(uint256)': EventFragment; + 'RewardPaid(address,uint256)': EventFragment; + 'Staked(address,uint256)': EventFragment; + 'Withdrawn(address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'RewardAdded'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardPaid'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Staked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdrawn'): EventFragment; +} + +export interface RewardAddedEventObject { + reward: BigNumber; +} +export type RewardAddedEvent = TypedEvent<[BigNumber], RewardAddedEventObject>; + +export type RewardAddedEventFilter = TypedEventFilter; + +export interface RewardPaidEventObject { + user: string; + reward: BigNumber; +} +export type RewardPaidEvent = TypedEvent<[string, BigNumber], RewardPaidEventObject>; + +export type RewardPaidEventFilter = TypedEventFilter; + +export interface StakedEventObject { + user: string; + amount: BigNumber; +} +export type StakedEvent = TypedEvent<[string, BigNumber], StakedEventObject>; + +export type StakedEventFilter = TypedEventFilter; + +export interface WithdrawnEventObject { + user: string; + amount: BigNumber; +} +export type WithdrawnEvent = TypedEvent<[string, BigNumber], WithdrawnEventObject>; + +export type WithdrawnEventFilter = TypedEventFilter; + +export interface BaseRewardPool extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BaseRewardPoolInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addExtraReward( + _reward: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + clearExtraRewards(overrides?: Overrides & { from?: string | Promise }): Promise; + + currentRewards(overrides?: CallOverrides): Promise<[BigNumber]>; + + donate( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + duration(overrides?: CallOverrides): Promise<[BigNumber]>; + + earned(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + extraRewards(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + extraRewardsLength(overrides?: CallOverrides): Promise<[BigNumber]>; + + 'getReward()'(overrides?: Overrides & { from?: string | Promise }): Promise; + + 'getReward(address,bool)'( + _account: string, + _claimExtras: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + historicalRewards(overrides?: CallOverrides): Promise<[BigNumber]>; + + lastTimeRewardApplicable(overrides?: CallOverrides): Promise<[BigNumber]>; + + lastUpdateTime(overrides?: CallOverrides): Promise<[BigNumber]>; + + newRewardRatio(overrides?: CallOverrides): Promise<[BigNumber]>; + + operator(overrides?: CallOverrides): Promise<[string]>; + + periodFinish(overrides?: CallOverrides): Promise<[BigNumber]>; + + pid(overrides?: CallOverrides): Promise<[BigNumber]>; + + processIdleRewards(overrides?: Overrides & { from?: string | Promise }): Promise; + + queueNewRewards( + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(overrides?: CallOverrides): Promise<[BigNumber]>; + + rewardManager(overrides?: CallOverrides): Promise<[string]>; + + rewardPerToken(overrides?: CallOverrides): Promise<[BigNumber]>; + + rewardPerTokenStored(overrides?: CallOverrides): Promise<[BigNumber]>; + + rewardRate(overrides?: CallOverrides): Promise<[BigNumber]>; + + rewardToken(overrides?: CallOverrides): Promise<[string]>; + + rewards(arg0: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + stake( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + stakeAll(overrides?: Overrides & { from?: string | Promise }): Promise; + + stakeFor( + _for: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + stakingToken(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + userRewardPerTokenPaid(arg0: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + withdraw( + amount: BigNumberish, + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAll( + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAllAndUnwrap( + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAndUnwrap( + amount: BigNumberish, + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + addExtraReward( + _reward: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + clearExtraRewards(overrides?: Overrides & { from?: string | Promise }): Promise; + + currentRewards(overrides?: CallOverrides): Promise; + + donate( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + duration(overrides?: CallOverrides): Promise; + + earned(account: string, overrides?: CallOverrides): Promise; + + extraRewards(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + extraRewardsLength(overrides?: CallOverrides): Promise; + + 'getReward()'(overrides?: Overrides & { from?: string | Promise }): Promise; + + 'getReward(address,bool)'( + _account: string, + _claimExtras: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + historicalRewards(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(overrides?: CallOverrides): Promise; + + lastUpdateTime(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + periodFinish(overrides?: CallOverrides): Promise; + + pid(overrides?: CallOverrides): Promise; + + processIdleRewards(overrides?: Overrides & { from?: string | Promise }): Promise; + + queueNewRewards( + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(overrides?: CallOverrides): Promise; + + rewardManager(overrides?: CallOverrides): Promise; + + rewardPerToken(overrides?: CallOverrides): Promise; + + rewardPerTokenStored(overrides?: CallOverrides): Promise; + + rewardRate(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + rewards(arg0: string, overrides?: CallOverrides): Promise; + + stake( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + stakeAll(overrides?: Overrides & { from?: string | Promise }): Promise; + + stakeFor( + _for: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + stakingToken(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + userRewardPerTokenPaid(arg0: string, overrides?: CallOverrides): Promise; + + withdraw( + amount: BigNumberish, + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAll( + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAllAndUnwrap( + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAndUnwrap( + amount: BigNumberish, + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + addExtraReward(_reward: string, overrides?: CallOverrides): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + clearExtraRewards(overrides?: CallOverrides): Promise; + + currentRewards(overrides?: CallOverrides): Promise; + + donate(_amount: BigNumberish, overrides?: CallOverrides): Promise; + + duration(overrides?: CallOverrides): Promise; + + earned(account: string, overrides?: CallOverrides): Promise; + + extraRewards(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + extraRewardsLength(overrides?: CallOverrides): Promise; + + 'getReward()'(overrides?: CallOverrides): Promise; + + 'getReward(address,bool)'(_account: string, _claimExtras: boolean, overrides?: CallOverrides): Promise; + + historicalRewards(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(overrides?: CallOverrides): Promise; + + lastUpdateTime(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + periodFinish(overrides?: CallOverrides): Promise; + + pid(overrides?: CallOverrides): Promise; + + processIdleRewards(overrides?: CallOverrides): Promise; + + queueNewRewards(_rewards: BigNumberish, overrides?: CallOverrides): Promise; + + queuedRewards(overrides?: CallOverrides): Promise; + + rewardManager(overrides?: CallOverrides): Promise; + + rewardPerToken(overrides?: CallOverrides): Promise; + + rewardPerTokenStored(overrides?: CallOverrides): Promise; + + rewardRate(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + rewards(arg0: string, overrides?: CallOverrides): Promise; + + stake(_amount: BigNumberish, overrides?: CallOverrides): Promise; + + stakeAll(overrides?: CallOverrides): Promise; + + stakeFor(_for: string, _amount: BigNumberish, overrides?: CallOverrides): Promise; + + stakingToken(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + userRewardPerTokenPaid(arg0: string, overrides?: CallOverrides): Promise; + + withdraw(amount: BigNumberish, claim: boolean, overrides?: CallOverrides): Promise; + + withdrawAll(claim: boolean, overrides?: CallOverrides): Promise; + + withdrawAllAndUnwrap(claim: boolean, overrides?: CallOverrides): Promise; + + withdrawAndUnwrap(amount: BigNumberish, claim: boolean, overrides?: CallOverrides): Promise; + }; + + filters: { + 'RewardAdded(uint256)'(reward?: null): RewardAddedEventFilter; + RewardAdded(reward?: null): RewardAddedEventFilter; + + 'RewardPaid(address,uint256)'(user?: string | null, reward?: null): RewardPaidEventFilter; + RewardPaid(user?: string | null, reward?: null): RewardPaidEventFilter; + + 'Staked(address,uint256)'(user?: string | null, amount?: null): StakedEventFilter; + Staked(user?: string | null, amount?: null): StakedEventFilter; + + 'Withdrawn(address,uint256)'(user?: string | null, amount?: null): WithdrawnEventFilter; + Withdrawn(user?: string | null, amount?: null): WithdrawnEventFilter; + }; + + estimateGas: { + addExtraReward(_reward: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + clearExtraRewards(overrides?: Overrides & { from?: string | Promise }): Promise; + + currentRewards(overrides?: CallOverrides): Promise; + + donate(_amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + duration(overrides?: CallOverrides): Promise; + + earned(account: string, overrides?: CallOverrides): Promise; + + extraRewards(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + extraRewardsLength(overrides?: CallOverrides): Promise; + + 'getReward()'(overrides?: Overrides & { from?: string | Promise }): Promise; + + 'getReward(address,bool)'( + _account: string, + _claimExtras: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + historicalRewards(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(overrides?: CallOverrides): Promise; + + lastUpdateTime(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + periodFinish(overrides?: CallOverrides): Promise; + + pid(overrides?: CallOverrides): Promise; + + processIdleRewards(overrides?: Overrides & { from?: string | Promise }): Promise; + + queueNewRewards( + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(overrides?: CallOverrides): Promise; + + rewardManager(overrides?: CallOverrides): Promise; + + rewardPerToken(overrides?: CallOverrides): Promise; + + rewardPerTokenStored(overrides?: CallOverrides): Promise; + + rewardRate(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + rewards(arg0: string, overrides?: CallOverrides): Promise; + + stake(_amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + stakeAll(overrides?: Overrides & { from?: string | Promise }): Promise; + + stakeFor( + _for: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + stakingToken(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + userRewardPerTokenPaid(arg0: string, overrides?: CallOverrides): Promise; + + withdraw( + amount: BigNumberish, + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAll(claim: boolean, overrides?: Overrides & { from?: string | Promise }): Promise; + + withdrawAllAndUnwrap( + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAndUnwrap( + amount: BigNumberish, + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + populateTransaction: { + addExtraReward( + _reward: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + clearExtraRewards(overrides?: Overrides & { from?: string | Promise }): Promise; + + currentRewards(overrides?: CallOverrides): Promise; + + donate( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + duration(overrides?: CallOverrides): Promise; + + earned(account: string, overrides?: CallOverrides): Promise; + + extraRewards(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + extraRewardsLength(overrides?: CallOverrides): Promise; + + 'getReward()'(overrides?: Overrides & { from?: string | Promise }): Promise; + + 'getReward(address,bool)'( + _account: string, + _claimExtras: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + historicalRewards(overrides?: CallOverrides): Promise; + + lastTimeRewardApplicable(overrides?: CallOverrides): Promise; + + lastUpdateTime(overrides?: CallOverrides): Promise; + + newRewardRatio(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + periodFinish(overrides?: CallOverrides): Promise; + + pid(overrides?: CallOverrides): Promise; + + processIdleRewards(overrides?: Overrides & { from?: string | Promise }): Promise; + + queueNewRewards( + _rewards: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + queuedRewards(overrides?: CallOverrides): Promise; + + rewardManager(overrides?: CallOverrides): Promise; + + rewardPerToken(overrides?: CallOverrides): Promise; + + rewardPerTokenStored(overrides?: CallOverrides): Promise; + + rewardRate(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + rewards(arg0: string, overrides?: CallOverrides): Promise; + + stake( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + stakeAll(overrides?: Overrides & { from?: string | Promise }): Promise; + + stakeFor( + _for: string, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + stakingToken(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + userRewardPerTokenPaid(arg0: string, overrides?: CallOverrides): Promise; + + withdraw( + amount: BigNumberish, + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAll( + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAllAndUnwrap( + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawAndUnwrap( + amount: BigNumberish, + claim: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; +} diff --git a/src/apps/aura/contracts/ethers/common.ts b/src/apps/aura/contracts/ethers/common.ts new file mode 100644 index 000000000..6cfb10425 --- /dev/null +++ b/src/apps/aura/contracts/ethers/common.ts @@ -0,0 +1,30 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from '@ethersproject/providers'; +import type { Event, EventFilter } from 'ethers'; + +export interface TypedEvent = any, TArgsObject = any> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + (eventFilter: TypedEventFilter, listener: TypedListener): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory ? C : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory ? Parameters : never; diff --git a/src/apps/aura/contracts/ethers/factories/AuraLocker__factory.ts b/src/apps/aura/contracts/ethers/factories/AuraLocker__factory.ts new file mode 100644 index 000000000..b7872c137 --- /dev/null +++ b/src/apps/aura/contracts/ethers/factories/AuraLocker__factory.ts @@ -0,0 +1,1355 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { AuraLocker, AuraLockerInterface } from '../AuraLocker'; + +const _abi = [ + { + inputs: [ + { + internalType: 'string', + name: '_nameArg', + type: 'string', + }, + { + internalType: 'string', + name: '_symbolArg', + type: 'string', + }, + { + internalType: 'address', + name: '_stakingToken', + type: 'address', + }, + { + internalType: 'address', + name: '_cvxCrv', + type: 'address', + }, + { + internalType: 'address', + name: '_cvxCrvStaking', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'blacklisted', + type: 'bool', + }, + ], + name: 'BlacklistModified', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'delegator', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'fromDelegate', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'toDelegate', + type: 'address', + }, + ], + name: 'DelegateChanged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'delegate', + type: 'address', + }, + ], + name: 'DelegateCheckpointed', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'rate', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'delay', + type: 'uint256', + }, + ], + name: 'KickIncentiveSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: '_user', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: '_kicked', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: '_reward', + type: 'uint256', + }, + ], + name: 'KickReward', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'previousOwner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'OwnershipTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: '_token', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'Recovered', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: '_token', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: '_reward', + type: 'uint256', + }, + ], + name: 'RewardAdded', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: '_user', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: '_rewardsToken', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: '_reward', + type: 'uint256', + }, + ], + name: 'RewardPaid', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Shutdown', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: '_user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: '_paidAmount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: '_lockedAmount', + type: 'uint256', + }, + ], + name: 'Staked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: '_user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'bool', + name: '_relocked', + type: 'bool', + }, + ], + name: 'Withdrawn', + type: 'event', + }, + { + inputs: [ + { + internalType: 'address', + name: '_rewardsToken', + type: 'address', + }, + { + internalType: 'address', + name: '_distributor', + type: 'address', + }, + ], + name: 'addReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_rewardsToken', + type: 'address', + }, + { + internalType: 'address', + name: '_distributor', + type: 'address', + }, + { + internalType: 'bool', + name: '_approved', + type: 'bool', + }, + ], + name: 'approveRewardDistributor', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_epoch', + type: 'uint256', + }, + { + internalType: 'address', + name: '_user', + type: 'address', + }, + ], + name: 'balanceAtEpochOf', + outputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_user', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'balances', + outputs: [ + { + internalType: 'uint112', + name: 'locked', + type: 'uint112', + }, + { + internalType: 'uint32', + name: 'nextUnlockIndex', + type: 'uint32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'blacklist', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'checkpointEpoch', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint32', + name: 'pos', + type: 'uint32', + }, + ], + name: 'checkpoints', + outputs: [ + { + components: [ + { + internalType: 'uint224', + name: 'votes', + type: 'uint224', + }, + { + internalType: 'uint32', + name: 'epochStart', + type: 'uint32', + }, + ], + internalType: 'struct AuraLocker.DelegateeCheckpoint', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + ], + name: 'claimableRewards', + outputs: [ + { + components: [ + { + internalType: 'address', + name: 'token', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + internalType: 'struct AuraLocker.EarnedData[]', + name: 'userRewards', + type: 'tuple[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'cvxCrv', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'cvxcrvStaking', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'decimals', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newDelegatee', + type: 'address', + }, + ], + name: 'delegate', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'delegateeUnlocks', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'delegates', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'denominator', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'emergencyWithdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'epochCount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'epochs', + outputs: [ + { + internalType: 'uint224', + name: 'supply', + type: 'uint224', + }, + { + internalType: 'uint32', + name: 'date', + type: 'uint32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_time', + type: 'uint256', + }, + ], + name: 'findEpochId', + outputs: [ + { + internalType: 'uint256', + name: 'epoch', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'timestamp', + type: 'uint256', + }, + ], + name: 'getPastTotalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint256', + name: 'timestamp', + type: 'uint256', + }, + ], + name: 'getPastVotes', + outputs: [ + { + internalType: 'uint256', + name: 'votes', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + { + internalType: 'bool', + name: '_stake', + type: 'bool', + }, + ], + name: 'getReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + ], + name: 'getReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + { + internalType: 'bool[]', + name: '_skipIdx', + type: 'bool[]', + }, + ], + name: 'getReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'getVotes', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'isShutdown', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + ], + name: 'kickExpiredLocks', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'kickRewardEpochDelay', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'kickRewardPerEpoch', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_rewardsToken', + type: 'address', + }, + ], + name: 'lastTimeRewardApplicable', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'lock', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'lockDuration', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_user', + type: 'address', + }, + ], + name: 'lockedBalances', + outputs: [ + { + internalType: 'uint256', + name: 'total', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'unlockable', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'locked', + type: 'uint256', + }, + { + components: [ + { + internalType: 'uint112', + name: 'amount', + type: 'uint112', + }, + { + internalType: 'uint32', + name: 'unlockTime', + type: 'uint32', + }, + ], + internalType: 'struct AuraLocker.LockedBalance[]', + name: 'lockData', + type: 'tuple[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockedSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + { + internalType: 'bool', + name: '_blacklisted', + type: 'bool', + }, + ], + name: 'modifyBlacklist', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'newRewardRatio', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'numCheckpoints', + outputs: [ + { + internalType: 'uint32', + name: '', + type: 'uint32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'owner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bool', + name: '_relock', + type: 'bool', + }, + ], + name: 'processExpiredLocks', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_rewardsToken', + type: 'address', + }, + { + internalType: 'uint256', + name: '_rewards', + type: 'uint256', + }, + ], + name: 'queueNewRewards', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'queuedRewards', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_tokenAddress', + type: 'address', + }, + { + internalType: 'uint256', + name: '_tokenAmount', + type: 'uint256', + }, + ], + name: 'recoverERC20', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'renounceOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'rewardData', + outputs: [ + { + internalType: 'uint32', + name: 'periodFinish', + type: 'uint32', + }, + { + internalType: 'uint32', + name: 'lastUpdateTime', + type: 'uint32', + }, + { + internalType: 'uint96', + name: 'rewardRate', + type: 'uint96', + }, + { + internalType: 'uint96', + name: 'rewardPerTokenStored', + type: 'uint96', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'rewardDistributors', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_rewardsToken', + type: 'address', + }, + ], + name: 'rewardPerToken', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'rewardTokens', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardsDuration', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'setApprovals', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_rate', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_delay', + type: 'uint256', + }, + ], + name: 'setKickIncentive', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'shutdown', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'stakingToken', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: 'supply', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_epoch', + type: 'uint256', + }, + ], + name: 'totalSupplyAtEpoch', + outputs: [ + { + internalType: 'uint256', + name: 'supply', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'transferOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'userData', + outputs: [ + { + internalType: 'uint128', + name: 'rewardPerTokenPaid', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'rewards', + type: 'uint128', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'userLocks', + outputs: [ + { + internalType: 'uint112', + name: 'amount', + type: 'uint112', + }, + { + internalType: 'uint32', + name: 'unlockTime', + type: 'uint32', + }, + ], + stateMutability: 'view', + type: 'function', + }, +]; + +export class AuraLocker__factory { + static readonly abi = _abi; + static createInterface(): AuraLockerInterface { + return new utils.Interface(_abi) as AuraLockerInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): AuraLocker { + return new Contract(address, _abi, signerOrProvider) as AuraLocker; + } +} diff --git a/src/apps/aura/contracts/ethers/factories/AuraMasterchef__factory.ts b/src/apps/aura/contracts/ethers/factories/AuraMasterchef__factory.ts new file mode 100644 index 000000000..12f9b01a6 --- /dev/null +++ b/src/apps/aura/contracts/ethers/factories/AuraMasterchef__factory.ts @@ -0,0 +1,562 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { AuraMasterchef, AuraMasterchefInterface } from '../AuraMasterchef'; + +const _abi = [ + { + inputs: [ + { + internalType: 'contract IERC20', + name: '_cvx', + type: 'address', + }, + { + internalType: 'uint256', + name: '_rewardPerBlock', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_startBlock', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_endBlock', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Deposit', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'EmergencyWithdraw', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'previousOwner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'OwnershipTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'RewardPaid', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Withdraw', + type: 'event', + }, + { + inputs: [], + name: 'BONUS_MULTIPLIER', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_allocPoint', + type: 'uint256', + }, + { + internalType: 'contract IERC20', + name: '_lpToken', + type: 'address', + }, + { + internalType: 'contract IRewarder', + name: '_rewarder', + type: 'address', + }, + ], + name: 'add', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_pid', + type: 'uint256', + }, + { + internalType: 'address', + name: '_account', + type: 'address', + }, + ], + name: 'claim', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'cvx', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_pid', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'deposit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_pid', + type: 'uint256', + }, + ], + name: 'emergencyWithdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'endBlock', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_from', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_to', + type: 'uint256', + }, + ], + name: 'getMultiplier', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'isAddedPool', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'massUpdatePools', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'owner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_pid', + type: 'uint256', + }, + { + internalType: 'address', + name: '_user', + type: 'address', + }, + ], + name: 'pendingCvx', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'poolInfo', + outputs: [ + { + internalType: 'contract IERC20', + name: 'lpToken', + type: 'address', + }, + { + internalType: 'uint256', + name: 'allocPoint', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'lastRewardBlock', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'accCvxPerShare', + type: 'uint256', + }, + { + internalType: 'contract IRewarder', + name: 'rewarder', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'poolLength', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'renounceOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'rewardPerBlock', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_pid', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_allocPoint', + type: 'uint256', + }, + { + internalType: 'contract IRewarder', + name: '_rewarder', + type: 'address', + }, + { + internalType: 'bool', + name: '_updateRewarder', + type: 'bool', + }, + ], + name: 'set', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'startBlock', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalAllocPoint', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'transferOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_pid', + type: 'uint256', + }, + ], + name: 'updatePool', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'userInfo', + outputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'rewardDebt', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_pid', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class AuraMasterchef__factory { + static readonly abi = _abi; + static createInterface(): AuraMasterchefInterface { + return new utils.Interface(_abi) as AuraMasterchefInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): AuraMasterchef { + return new Contract(address, _abi, signerOrProvider) as AuraMasterchef; + } +} diff --git a/src/apps/aura/contracts/ethers/factories/AuraToken__factory.ts b/src/apps/aura/contracts/ethers/factories/AuraToken__factory.ts new file mode 100644 index 000000000..d7ff09a43 --- /dev/null +++ b/src/apps/aura/contracts/ethers/factories/AuraToken__factory.ts @@ -0,0 +1,488 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { AuraToken, AuraTokenInterface } from '../AuraToken'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: '_proxy', + type: 'address', + }, + { + internalType: 'string', + name: '_nameArg', + type: 'string', + }, + { + internalType: 'string', + name: '_symbolArg', + type: 'string', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Initialised', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'previousOperator', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'newOperator', + type: 'address', + }, + ], + name: 'OperatorChanged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + inputs: [], + name: 'EMISSIONS_MAX_SUPPLY', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'INIT_MINT_AMOUNT', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + ], + name: 'allowance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'decimals', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'subtractedValue', + type: 'uint256', + }, + ], + name: 'decreaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'addedValue', + type: 'uint256', + }, + ], + name: 'increaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'address', + name: '_minter', + type: 'address', + }, + ], + name: 'init', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'mint', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'minter', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_to', + type: 'address', + }, + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'minterMint', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'operator', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'reductionPerCliff', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalCliffs', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'updateOperator', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'vecrvProxy', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, +]; + +export class AuraToken__factory { + static readonly abi = _abi; + static createInterface(): AuraTokenInterface { + return new utils.Interface(_abi) as AuraTokenInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): AuraToken { + return new Contract(address, _abi, signerOrProvider) as AuraToken; + } +} diff --git a/src/apps/aura/contracts/ethers/factories/AuraVirtualBalanceRewardPool__factory.ts b/src/apps/aura/contracts/ethers/factories/AuraVirtualBalanceRewardPool__factory.ts new file mode 100644 index 000000000..9ff44807c --- /dev/null +++ b/src/apps/aura/contracts/ethers/factories/AuraVirtualBalanceRewardPool__factory.ts @@ -0,0 +1,473 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { + AuraVirtualBalanceRewardPool, + AuraVirtualBalanceRewardPoolInterface, +} from '../AuraVirtualBalanceRewardPool'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: 'deposit_', + type: 'address', + }, + { + internalType: 'address', + name: 'reward_', + type: 'address', + }, + { + internalType: 'address', + name: 'op_', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'reward', + type: 'uint256', + }, + ], + name: 'RewardAdded', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'reward', + type: 'uint256', + }, + ], + name: 'RewardPaid', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Staked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Withdrawn', + type: 'event', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'currentRewards', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'deposits', + outputs: [ + { + internalType: 'contract IDeposit', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'donate', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'duration', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'earned', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'getReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + ], + name: 'getReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'historicalRewards', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lastTimeRewardApplicable', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lastUpdateTime', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'newRewardRatio', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'operator', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'periodFinish', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_rewards', + type: 'uint256', + }, + ], + name: 'queueNewRewards', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'queuedRewards', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardPerToken', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardPerTokenStored', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardRate', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardToken', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'rewards', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'stake', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'userRewardPerTokenPaid', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class AuraVirtualBalanceRewardPool__factory { + static readonly abi = _abi; + static createInterface(): AuraVirtualBalanceRewardPoolInterface { + return new utils.Interface(_abi) as AuraVirtualBalanceRewardPoolInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): AuraVirtualBalanceRewardPool { + return new Contract(address, _abi, signerOrProvider) as AuraVirtualBalanceRewardPool; + } +} diff --git a/src/apps/aura/contracts/ethers/factories/BalancerHelpers__factory.ts b/src/apps/aura/contracts/ethers/factories/BalancerHelpers__factory.ts new file mode 100644 index 000000000..7f33ab200 --- /dev/null +++ b/src/apps/aura/contracts/ethers/factories/BalancerHelpers__factory.ts @@ -0,0 +1,166 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { BalancerHelpers, BalancerHelpersInterface } from '../BalancerHelpers'; + +const _abi = [ + { + inputs: [ + { + internalType: 'contract IVault', + name: '_vault', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'poolId', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'sender', + type: 'address', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + components: [ + { + internalType: 'contract IAsset[]', + name: 'assets', + type: 'address[]', + }, + { + internalType: 'uint256[]', + name: 'minAmountsOut', + type: 'uint256[]', + }, + { + internalType: 'bytes', + name: 'userData', + type: 'bytes', + }, + { + internalType: 'bool', + name: 'toInternalBalance', + type: 'bool', + }, + ], + internalType: 'struct IVault.ExitPoolRequest', + name: 'request', + type: 'tuple', + }, + ], + name: 'queryExit', + outputs: [ + { + internalType: 'uint256', + name: 'bptIn', + type: 'uint256', + }, + { + internalType: 'uint256[]', + name: 'amountsOut', + type: 'uint256[]', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'poolId', + type: 'bytes32', + }, + { + internalType: 'address', + name: 'sender', + type: 'address', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + components: [ + { + internalType: 'contract IAsset[]', + name: 'assets', + type: 'address[]', + }, + { + internalType: 'uint256[]', + name: 'maxAmountsIn', + type: 'uint256[]', + }, + { + internalType: 'bytes', + name: 'userData', + type: 'bytes', + }, + { + internalType: 'bool', + name: 'fromInternalBalance', + type: 'bool', + }, + ], + internalType: 'struct IVault.JoinPoolRequest', + name: 'request', + type: 'tuple', + }, + ], + name: 'queryJoin', + outputs: [ + { + internalType: 'uint256', + name: 'bptOut', + type: 'uint256', + }, + { + internalType: 'uint256[]', + name: 'amountsIn', + type: 'uint256[]', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'vault', + outputs: [ + { + internalType: 'contract IVault', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, +]; + +export class BalancerHelpers__factory { + static readonly abi = _abi; + static createInterface(): BalancerHelpersInterface { + return new utils.Interface(_abi) as BalancerHelpersInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): BalancerHelpers { + return new Contract(address, _abi, signerOrProvider) as BalancerHelpers; + } +} diff --git a/src/apps/aura/contracts/ethers/factories/BaseRewardPool__factory.ts b/src/apps/aura/contracts/ethers/factories/BaseRewardPool__factory.ts new file mode 100644 index 000000000..60de0cbdc --- /dev/null +++ b/src/apps/aura/contracts/ethers/factories/BaseRewardPool__factory.ts @@ -0,0 +1,738 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, BigNumberish, Overrides } from 'ethers'; +import type { Provider, TransactionRequest } from '@ethersproject/providers'; +import type { BaseRewardPool, BaseRewardPoolInterface } from '../BaseRewardPool'; + +const _abi = [ + { + inputs: [ + { + internalType: 'uint256', + name: 'pid_', + type: 'uint256', + }, + { + internalType: 'address', + name: 'stakingToken_', + type: 'address', + }, + { + internalType: 'address', + name: 'rewardToken_', + type: 'address', + }, + { + internalType: 'address', + name: 'operator_', + type: 'address', + }, + { + internalType: 'address', + name: 'rewardManager_', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'reward', + type: 'uint256', + }, + ], + name: 'RewardAdded', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'reward', + type: 'uint256', + }, + ], + name: 'RewardPaid', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Staked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Withdrawn', + type: 'event', + }, + { + inputs: [ + { + internalType: 'address', + name: '_reward', + type: 'address', + }, + ], + name: 'addExtraReward', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'clearExtraRewards', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'currentRewards', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'donate', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'duration', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'earned', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'extraRewards', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'extraRewardsLength', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'getReward', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_account', + type: 'address', + }, + { + internalType: 'bool', + name: '_claimExtras', + type: 'bool', + }, + ], + name: 'getReward', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'historicalRewards', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lastTimeRewardApplicable', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lastUpdateTime', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'newRewardRatio', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'operator', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'periodFinish', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pid', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'processIdleRewards', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_rewards', + type: 'uint256', + }, + ], + name: 'queueNewRewards', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'queuedRewards', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardManager', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardPerToken', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardPerTokenStored', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardRate', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardToken', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'rewards', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'stake', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'stakeAll', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_for', + type: 'address', + }, + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'stakeFor', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'stakingToken', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'userRewardPerTokenPaid', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'claim', + type: 'bool', + }, + ], + name: 'withdraw', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bool', + name: 'claim', + type: 'bool', + }, + ], + name: 'withdrawAll', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bool', + name: 'claim', + type: 'bool', + }, + ], + name: 'withdrawAllAndUnwrap', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'claim', + type: 'bool', + }, + ], + name: 'withdrawAndUnwrap', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +const _bytecode = + '0x61012060405260008055600060015560006004556000600555600060065534801561002957600080fd5b50604051611d09380380611d09833981810160405260a081101561004c57600080fd5b50805160208201516040830151606080850151608095860151610100959095526001600160601b031993821b841660a05291811b8316909452831b811660c052911b1660e05260805160601c60a05160601c60c05160601c60e05160601c61010051611beb61011e60003980610cd4528061106d528061175e5250806105ae52806106305280610acd52508061099c52806109cb5280610ca5528061179552508061069d52806108975280610e595280610eab5280610f75525080610c7c528061109e52806110dd5250611beb6000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80636c8bcee811610130578063a694fc3a116100b8578063df136d651161007c578063df136d65146104f6578063ebe2b12b146104fe578063f106845414610506578063f14faf6f1461050e578063f7c618c11461052b57610226565b8063a694fc3a1461049c578063c32e7202146104b9578063c8f33c91146104de578063cd3daf9d146104e6578063d55a23f4146104ee57610226565b80637b0a47ee116100ff5780637b0a47ee1461045657806380faa57d1461045e5780638b876347146104665780638dcb40611461048c578063901a7d531461049457610226565b80636c8bcee8146103f25780637050ccd9146103fa57806370a082311461042857806372f702f31461044e57610226565b806338d07436116101b357806349f039a21161018257806349f039a214610380578063570ca7351461039f578063590a41f5146103a75780635e43c47b146103c457806363d38c3b146103ea57610226565b806338d074361461032e5780633d18b912146103535780633e8b83e31461035b57806340c354461461036357610226565b80630fb5a6b4116101fa5780630fb5a6b4146102b757806318160ddd146102bf5780631c1c6fe5146102c7578063262d3d6d146102e65780632ee40908146102ee57610226565b80628cc2621461022b5780630569d388146102635780630700037d1461026d5780630f4ef8a614610293575b600080fd5b6102516004803603602081101561024157600080fd5b50356001600160a01b0316610533565b60408051918252519081900360200190f35b61026b6105a3565b005b6102516004803603602081101561028357600080fd5b50356001600160a01b031661061c565b61029b61062e565b604080516001600160a01b039092168252519081900360200190f35b610251610652565b610251610659565b61026b600480360360208110156102dd57600080fd5b50351515610660565b61025161067e565b61031a6004803603604081101561030457600080fd5b506001600160a01b038135169060200135610684565b604080519115158252519081900360200190f35b61031a6004803603604081101561034457600080fd5b5080359060200135151561070e565b61031a610919565b61026b61092e565b61029b6004803603602081101561037957600080fd5b5035610959565b61026b6004803603602081101561039657600080fd5b50351515610980565b61029b61099a565b61031a600480360360208110156103bd57600080fd5b50356109be565b61031a600480360360208110156103da57600080fd5b50356001600160a01b0316610ac0565b610251610be0565b610251610be6565b61031a6004803603604081101561041057600080fd5b506001600160a01b0381351690602001351515610bec565b6102516004803603602081101561043e57600080fd5b50356001600160a01b0316610e3c565b61029b610e57565b610251610e7b565b610251610e81565b6102516004803603602081101561047c57600080fd5b50356001600160a01b0316610e94565b61031a610ea6565b610251610f56565b61031a600480360360208110156104b257600080fd5b5035610f5c565b61031a600480360360408110156104cf57600080fd5b50803590602001351515610fdb565b610251611005565b61025161100b565b610251611059565b61025161105f565b610251611065565b61025161106b565b61031a6004803603602081101561052457600080fd5b503561108f565b61029b6110db565b6001600160a01b038116600090815260096020908152604080832054600890925282205461059b919061059590670de0b6b3a76400009061058f906105809061057a61100b565b906110ff565b61058988610e3c565b9061115c565b906111bc565b90611223565b90505b919050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461060e576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b61061a600b6000611b0a565b565b60096020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b62093a8081565b6007545b90565b336000908152600a602052604090205461067a908261070e565b5050565b60065481565b6000610690828461127d565b6106c56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611419565b6040805183815290516001600160a01b038516917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25060015b92915050565b60003361071961100b565b600355610724610e81565b6002556001600160a01b0381161561076b5761073f81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b600084116107c0576040805162461bcd60e51b815260206004820152601e60248201527f526577617264506f6f6c203a2043616e6e6f7420776974686472617720300000604482015290519081900360640190fd5b60005b600b5481101561085357600b81815481106107da57fe5b60009182526020822001546040805163f3fef3a360e01b81523360048201526024810189905290516001600160a01b039092169263f3fef3a39260448084019382900301818387803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b5050600190920191506107c39050565b5060075461086190856110ff565b600755336000908152600a602052604090205461087e90856110ff565b336000818152600a60205260409020919091556108c6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169086611479565b60408051858152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a2821561090f5761090d336001610bec565b505b5060019392505050565b6000610926336001610bec565b506001905090565b600054421015801561094257506000600454115b1561061a576109526004546114d0565b6000600455565b600b818154811061096657fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600a602052604090205461067a9082610fdb565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a2b576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b600454610a39908390611223565b91506000544210610a5a57610a4d826114d0565b506000600455600161059e565b60008054610a7690610a6f9062093a806110ff565b42906110ff565b60015490915081026000610a908561058f846103e861115c565b905061033e811015610aaf57610aa5856114d0565b6000600455610ab5565b60048590555b506001949350505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b6001600160a01b038216610b7a576040805162461bcd60e51b815260206004820152600f60248201526e217265776172642073657474696e6760881b604482015290519081900360640190fd5b600b54600c11610b8c5750600061059e565b50600b8054600181810183556000929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0384166001600160a01b0319909116179055919050565b60045481565b61033e81565b600082610bf761100b565b600355610c02610e81565b6002556001600160a01b03811615610c4957610c1d81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6000610c5485610533565b90508015610d9a576001600160a01b03808616600090815260096020526040812055610ca3907f0000000000000000000000000000000000000000000000000000000000000000168683611479565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371192b177f000000000000000000000000000000000000000000000000000000000000000087846040518463ffffffff1660e01b815260040180848152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b50506040805184815290516001600160a01b03891693507fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048692509081900360200190a25b8315610ab55760005b600b54811015610e3057600b8181548110610dba57fe5b600091825260208220015460408051630c00007b60e41b81526001600160a01b038a811660048301529151919092169263c00007b0926024808201939182900301818387803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505060019092019150610da39050565b50506001949350505050565b6001600160a01b03166000908152600a602052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b6000610e8f426000546115f4565b905090565b60086020526000908152604090205481565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f1657600080fd5b505afa158015610f2a573d6000803e3d6000fd5b505050506040513d6020811015610f4057600080fd5b50519050610f4d81610f5c565b50600191505090565b60055481565b6000610f68823361127d565b610f9d6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611419565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a2506001919050565b6000610fe883333361160a565b508115610ffc57610ffa336001610bec565b505b50600192915050565b60025481565b6000611015610659565b611022575060035461065d565b610e8f611050611030610659565b61058f670de0b6b3a764000061058960015461058960025461057a610e81565b60035490611223565b600b5490565b60035481565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110c66001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611419565b6004546110d39083611223565b600455919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082821115611156576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008261116b57506000610708565b8282028284828161117857fe5b04146111b55760405162461bcd60e51b8152600401808060200182810382526021815260200180611b6b6021913960400191505060405180910390fd5b9392505050565b6000808211611212576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161121b57fe5b049392505050565b6000828201838110156111b5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8061128661100b565b600355611291610e81565b6002556001600160a01b038116156112d8576112ac81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6000831161132d576040805162461bcd60e51b815260206004820152601b60248201527f526577617264506f6f6c203a2043616e6e6f74207374616b6520300000000000604482015290519081900360640190fd5b60005b600b548110156113c457600b818154811061134757fe5b6000918252602082200154604080516356e4bb9760e11b81526001600160a01b038781166004830152602482018990529151919092169263adc9772e926044808201939182900301818387803b1580156113a057600080fd5b505af11580156113b4573d6000803e3d6000fd5b5050600190920191506113309050565b506007546113d29084611223565b6007556001600160a01b0382166000908152600a60205260409020546113f89084611223565b6001600160a01b039092166000908152600a60205260409020919091555050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261147390859061183c565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114cb90849061183c565b505050565b60006114da61100b565b6003556114e5610e81565b6002556001600160a01b0381161561152c5761150081610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6006546115399083611223565b600655600054421061155a576115528262093a806111bc565b6001556115a2565b6000805461156890426110ff565b905060006115816001548361115c90919063ffffffff16565b905061158d8482611223565b935061159c8462093a806111bc565b60015550505b60058290554260028190556115ba9062093a80611223565b6000556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b600081831061160357816111b5565b5090919050565b60008261161561100b565b600355611620610e81565b6002556001600160a01b038116156116675761163b81610533565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b60005b600b548110156116fe57600b818154811061168157fe5b60009182526020822001546040805163f3fef3a360e01b81526001600160a01b038981166004830152602482018b90529151919092169263f3fef3a3926044808201939182900301818387803b1580156116da57600080fd5b505af11580156116ee573d6000803e3d6000fd5b50506001909201915061166a9050565b5060075461170c90866110ff565b6007556001600160a01b0384166000908152600a602052604090205461173290866110ff565b6001600160a01b038086166000908152600a60205260408082209390935582516305335c3960e21b81527f0000000000000000000000000000000000000000000000000000000000000000600482015260248101899052868316604482015292517f0000000000000000000000000000000000000000000000000000000000000000909216926314cd70e4926064808301939282900301818387803b1580156117da57600080fd5b505af11580156117ee573d6000803e3d6000fd5b50506040805188815290516001600160a01b03881693507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d592509081900360200190a2506001949350505050565b6060611891826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166118ed9092919063ffffffff16565b8051909150156114cb578080602001905160208110156118b057600080fd5b50516114cb5760405162461bcd60e51b815260040180806020018281038252602a815260200180611b8c602a913960400191505060405180910390fd5b60606118fc8484600085611904565b949350505050565b6060824710156119455760405162461bcd60e51b8152600401808060200182810382526026815260200180611b456026913960400191505060405180910390fd5b61194e85611a60565b61199f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106119de5780518252601f1990920191602091820191016119bf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611a40576040519150601f19603f3d011682016040523d82523d6000602084013e611a45565b606091505b5091509150611a55828286611a66565b979650505050505050565b3b151590565b60608315611a755750816111b5565b825115611a855782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611acf578181015183820152602001611ab7565b50505050905090810190601f168015611afc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080546000825590600052602060002090810190611b289190611b2b565b50565b5b80821115611b405760008155600101611b2c565b509056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220d0d4834e546c839bf06d5243f76bcbd47043cf984843f141cd50e7972377895864736f6c634300060c0033'; + +type BaseRewardPoolConstructorParams = [signer?: Signer] | ConstructorParameters; + +const isSuperArgs = (xs: BaseRewardPoolConstructorParams): xs is ConstructorParameters => + xs.length > 1; + +export class BaseRewardPool__factory extends ContractFactory { + constructor(...args: BaseRewardPoolConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + pid_: BigNumberish, + stakingToken_: string, + rewardToken_: string, + operator_: string, + rewardManager_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise { + return super.deploy( + pid_, + stakingToken_, + rewardToken_, + operator_, + rewardManager_, + overrides || {}, + ) as Promise; + } + override getDeployTransaction( + pid_: BigNumberish, + stakingToken_: string, + rewardToken_: string, + operator_: string, + rewardManager_: string, + overrides?: Overrides & { from?: string | Promise }, + ): TransactionRequest { + return super.getDeployTransaction(pid_, stakingToken_, rewardToken_, operator_, rewardManager_, overrides || {}); + } + override attach(address: string): BaseRewardPool { + return super.attach(address) as BaseRewardPool; + } + override connect(signer: Signer): BaseRewardPool__factory { + return super.connect(signer) as BaseRewardPool__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): BaseRewardPoolInterface { + return new utils.Interface(_abi) as BaseRewardPoolInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): BaseRewardPool { + return new Contract(address, _abi, signerOrProvider) as BaseRewardPool; + } +} diff --git a/src/apps/aura/contracts/ethers/factories/index.ts b/src/apps/aura/contracts/ethers/factories/index.ts new file mode 100644 index 000000000..519ba4887 --- /dev/null +++ b/src/apps/aura/contracts/ethers/factories/index.ts @@ -0,0 +1,9 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { AuraLocker__factory } from './AuraLocker__factory'; +export { AuraMasterchef__factory } from './AuraMasterchef__factory'; +export { AuraToken__factory } from './AuraToken__factory'; +export { AuraVirtualBalanceRewardPool__factory } from './AuraVirtualBalanceRewardPool__factory'; +export { BalancerHelpers__factory } from './BalancerHelpers__factory'; +export { BaseRewardPool__factory } from './BaseRewardPool__factory'; diff --git a/src/apps/aura/contracts/ethers/index.ts b/src/apps/aura/contracts/ethers/index.ts new file mode 100644 index 000000000..072ff25ca --- /dev/null +++ b/src/apps/aura/contracts/ethers/index.ts @@ -0,0 +1,16 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { AuraLocker } from './AuraLocker'; +export type { AuraMasterchef } from './AuraMasterchef'; +export type { AuraToken } from './AuraToken'; +export type { AuraVirtualBalanceRewardPool } from './AuraVirtualBalanceRewardPool'; +export type { BalancerHelpers } from './BalancerHelpers'; +export type { BaseRewardPool } from './BaseRewardPool'; +export * as factories from './factories'; +export { AuraLocker__factory } from './factories/AuraLocker__factory'; +export { AuraMasterchef__factory } from './factories/AuraMasterchef__factory'; +export { AuraToken__factory } from './factories/AuraToken__factory'; +export { AuraVirtualBalanceRewardPool__factory } from './factories/AuraVirtualBalanceRewardPool__factory'; +export { BalancerHelpers__factory } from './factories/BalancerHelpers__factory'; +export { BaseRewardPool__factory } from './factories/BaseRewardPool__factory'; diff --git a/src/apps/aura/contracts/index.ts b/src/apps/aura/contracts/index.ts new file mode 100644 index 000000000..9b92266f9 --- /dev/null +++ b/src/apps/aura/contracts/index.ts @@ -0,0 +1,48 @@ +import { Injectable, Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { ContractFactory } from '~contract/contracts'; +import { Network } from '~types/network.interface'; + +import { AuraLocker__factory } from './ethers'; +import { AuraMasterchef__factory } from './ethers'; +import { AuraToken__factory } from './ethers'; +import { AuraVirtualBalanceRewardPool__factory } from './ethers'; +import { BalancerHelpers__factory } from './ethers'; +import { BaseRewardPool__factory } from './ethers'; + +// eslint-disable-next-line +type ContractOpts = { address: string; network: Network }; + +@Injectable() +export class AuraContractFactory extends ContractFactory { + constructor(@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit) { + super((network: Network) => appToolkit.getNetworkProvider(network)); + } + + auraLocker({ address, network }: ContractOpts) { + return AuraLocker__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + auraMasterchef({ address, network }: ContractOpts) { + return AuraMasterchef__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + auraToken({ address, network }: ContractOpts) { + return AuraToken__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + auraVirtualBalanceRewardPool({ address, network }: ContractOpts) { + return AuraVirtualBalanceRewardPool__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + balancerHelpers({ address, network }: ContractOpts) { + return BalancerHelpers__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + baseRewardPool({ address, network }: ContractOpts) { + return BaseRewardPool__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } +} + +export type { AuraLocker } from './ethers'; +export type { AuraMasterchef } from './ethers'; +export type { AuraToken } from './ethers'; +export type { AuraVirtualBalanceRewardPool } from './ethers'; +export type { BalancerHelpers } from './ethers'; +export type { BaseRewardPool } from './ethers'; diff --git a/src/apps/aura/ethereum/aura.balance-fetcher.ts b/src/apps/aura/ethereum/aura.balance-fetcher.ts new file mode 100644 index 000000000..2b2f9f0e1 --- /dev/null +++ b/src/apps/aura/ethereum/aura.balance-fetcher.ts @@ -0,0 +1,211 @@ +import { Inject } from '@nestjs/common'; +import { BigNumber } from 'ethers'; +import { compact } from 'lodash'; + +import { drillBalance } from '~app-toolkit'; +import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present'; +import { BalanceFetcher } from '~balance/balance-fetcher.interface'; +import { isClaimable, isSupplied, isLocked } from '~position/position.utils'; +import { Network } from '~types/network.interface'; + +import { AURA_DEFINITION } from '../aura.definition'; +import { AuraBaseRewardPoolDataProps } from '../aura.types'; +import { AuraContractFactory, AuraMasterchef, AuraVirtualBalanceRewardPool } from '../contracts'; +import { AuraBaseRewardPoolHelper } from '../helpers/aura.base-reward-pool-helper'; + +const appId = AURA_DEFINITION.id; +const groups = AURA_DEFINITION.groups; +const network = Network.ETHEREUM_MAINNET; + +type GetBaseRewardPoolBalancesParams = { + address: string; + groupId: string; +}; + +@Register.BalanceFetcher(appId, network) +export class EthereumAuraBalanceFetcher implements BalanceFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(AuraContractFactory) private readonly auraContractFactory: AuraContractFactory, + @Inject(AuraBaseRewardPoolHelper) private readonly auraBaseRewardPoolHelper: AuraBaseRewardPoolHelper, + ) {} + + async getBaseRewardPoolBalances({ address, groupId }: GetBaseRewardPoolBalancesParams) { + return this.appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances( + { + appId, + groupId, + network, + address, + resolveBalances: async ({ address, contractPosition, multicall }) => { + const stakedToken = contractPosition.tokens.find(isSupplied); + const claimableTokens = contractPosition.tokens.filter(isClaimable); + + const rewardToken = claimableTokens.find( + ({ address }) => address.toLowerCase() === contractPosition.dataProps.rewardToken.toLowerCase(), + ); + const auraToken = claimableTokens.find( + ({ address }) => address.toLowerCase() === AURA_DEFINITION.token!.address, + ); + const extraRewardTokens = compact( + claimableTokens.filter(({ address }) => + contractPosition.dataProps.extraRewards.find( + extraReward => extraReward.rewardToken.toLowerCase() === address.toLowerCase(), + ), + ), + ); + + const baseRewardPool = this.auraContractFactory.baseRewardPool(contractPosition); + + const extraRewardPools: AuraVirtualBalanceRewardPool[] = contractPosition.dataProps.extraRewards + .filter(({ rewardToken }) => + extraRewardTokens.find(token => token.address.toLowerCase() === rewardToken.toLowerCase()), + ) + .map(({ address }) => this.auraContractFactory.auraVirtualBalanceRewardPool({ address, network })); + + const [stakedBalanceRaw, rewardBalanceRaw, ...extraRewardBalancesRaw] = await Promise.all([ + multicall.wrap(baseRewardPool).balanceOf(address), + multicall.wrap(baseRewardPool).earned(address), + ...extraRewardPools.map(virtualBalanceRewardPool => + multicall.wrap(virtualBalanceRewardPool).earned(address), + ), + ]); + + const auraRewardBalanceRaw = await this.auraBaseRewardPoolHelper.getAuraMintedForRewardToken({ + rewardTokenAmount: rewardBalanceRaw, + network, + }); + + return compact([ + stakedToken ? drillBalance(stakedToken, stakedBalanceRaw.toString()) : null, + rewardToken ? drillBalance(rewardToken, rewardBalanceRaw.toString()) : null, + auraToken ? drillBalance(auraToken, auraRewardBalanceRaw.toString()) : null, + ...extraRewardBalancesRaw.map((balanceRaw, index) => { + const extraRewardToken = extraRewardTokens[index]; + return extraRewardToken ? drillBalance(extraRewardToken, balanceRaw.toString()) : null; + }), + ]); + }, + }, + ); + } + + async getChefBalances(address: string) { + return this.appToolkit.helpers.masterChefContractPositionBalanceHelper.getBalances({ + appId, + groupId: groups.chef.id, + network, + address, + resolveChefContract: ({ contractAddress, network }) => + this.auraContractFactory.auraMasterchef({ address: contractAddress, network }), + resolveStakedTokenBalance: this.appToolkit.helpers.masterChefDefaultStakedBalanceStrategy.build({ + resolveStakedBalance: ({ contract, multicall, contractPosition }) => + multicall + .wrap(contract) + .userInfo(contractPosition.dataProps.poolIndex, address) + .then(v => v.amount), + }), + resolveClaimableTokenBalances: this.appToolkit.helpers.masterChefDefaultClaimableBalanceStrategy.build({ + resolveClaimableBalance: async ({ contract, contractPosition, multicall, address }) => { + const provider = this.appToolkit.getNetworkProvider(network); + const block = await provider.getBlockNumber(); + + const { poolIndex } = contractPosition.dataProps; + const [poolInfo, userInfo, totalAllocPoint, rewardPerBlock, endBlock] = await Promise.all([ + multicall.wrap(contract).poolInfo(poolIndex), + multicall.wrap(contract).userInfo(poolIndex, address), + multicall.wrap(contract).totalAllocPoint(), + multicall.wrap(contract).rewardPerBlock(), + multicall.wrap(contract).endBlock(), + ]); + + if (userInfo.amount.eq(0)) { + return 0; + } + + const lpToken = this.appToolkit.globalContracts.erc20({ address: poolInfo.lpToken, network }); + const lpSupply = await lpToken.balanceOf(contract.address); + + let { accCvxPerShare } = poolInfo; + if (poolInfo.lastRewardBlock.lt(block) && lpSupply.gt(0)) { + const clampedTo = Math.min(block, Number(endBlock)); + const clampedFrom = Math.min(Number(poolInfo.lastRewardBlock), Number(endBlock)); + const multiplier = BigNumber.from(clampedTo - clampedFrom); + const reward = multiplier.mul(rewardPerBlock).mul(poolInfo.allocPoint).div(totalAllocPoint); + accCvxPerShare = accCvxPerShare.add(reward.mul(10 ** 12).div(lpSupply)); + } + + return userInfo.amount + .mul(accCvxPerShare) + .div(10 ** 12) + .sub(userInfo.rewardDebt); + }, + }), + }); + } + + async getLockerBalances(address: string) { + const auraLockerAddress = '0x3fa73f1e5d8a792c80f426fc8f84fbf7ce9bbcac'; + + return this.appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ + network, + appId, + address, + groupId: groups.locker.id, + resolveBalances: async ({ address, contractPosition, multicall, network }) => { + const auraLocker = this.auraContractFactory.auraLocker({ + address: auraLockerAddress, + network, + }); + + const [lockedBalances, claimableRewards] = await Promise.all([ + multicall.wrap(auraLocker).lockedBalances(address), + multicall.wrap(auraLocker).claimableRewards(address), + ]); + + const { unlockable, locked } = lockedBalances; + + const lockedToken = contractPosition.tokens.find(isLocked); + const suppliedToken = contractPosition.tokens.find(isSupplied); // Same as locked (ie AURA), but unlocked + const claimableTokens = contractPosition.tokens.filter(isClaimable); + + return compact([ + lockedToken ? drillBalance(lockedToken, locked.toString()) : null, + suppliedToken ? drillBalance(suppliedToken, unlockable.toString()) : null, + ...claimableRewards.map(({ token, amount }) => { + const claimableToken = claimableTokens.find(t => t.address.toLowerCase() === token.toLowerCase()); + return claimableToken ? drillBalance(claimableToken, amount.toString()) : null; + }), + ]); + }, + }); + } + + private async getStakingBalances(address: string) { + return this.getBaseRewardPoolBalances({ address, groupId: groups.staking.id }); + } + + private async getPoolsBalances(address: string) { + return this.getBaseRewardPoolBalances({ address, groupId: groups.pools.id }); + } + + async getBalances(address: string) { + const groupBalances = await Promise.all([ + this.getLockerBalances(address), + this.getChefBalances(address), + this.getStakingBalances(address), + this.getPoolsBalances(address), + ]); + + return presentBalanceFetcherResponse( + groupBalances + .filter(assets => assets.length > 0) + .map(assets => ({ + assets, + label: groups[assets[0].groupId].label, + })), + ); + } +} diff --git a/src/apps/aura/ethereum/aura.chef.contract-position-fetcher.ts b/src/apps/aura/ethereum/aura.chef.contract-position-fetcher.ts new file mode 100644 index 000000000..f40a0b2f6 --- /dev/null +++ b/src/apps/aura/ethereum/aura.chef.contract-position-fetcher.ts @@ -0,0 +1,60 @@ +import { Inject } from '@nestjs/common'; + +import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { BALANCER_V2_DEFINITION } from '~apps/balancer-v2'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { AURA_DEFINITION } from '../aura.definition'; +import { AuraContractFactory, AuraMasterchef } from '../contracts'; + +const appId = AURA_DEFINITION.id; +const groupId = AURA_DEFINITION.groups.chef.id; +const network = Network.ETHEREUM_MAINNET; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class EthereumAuraChefContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(AuraContractFactory) private readonly auraContractFactory: AuraContractFactory, + ) {} + + async getPositions() { + return this.appToolkit.helpers.masterChefContractPositionHelper.getContractPositions({ + address: '0x1ab80f7fb46b25b7e0b2cfac23fc88ac37aaf4e9', + network, + appId, + groupId, + dependencies: [ + { appId, network, groupIds: [groupId] }, + { appId: BALANCER_V2_DEFINITION.id, network, groupIds: [BALANCER_V2_DEFINITION.groups.pool.id] }, + ], + resolvePoolIndexIsValid: async ({ contract, poolIndex, multicall }) => + // pid 0 is deprecated + poolIndex > 0 && poolIndex < Number(await multicall.wrap(contract).poolLength()), + resolveLiquidity: ({ depositTokenAddress, address, multicall }) => + multicall + .wrap(this.appToolkit.globalContracts.erc20({ network, address: depositTokenAddress })) + .balanceOf(address), + resolveDepositTokenAddress: ({ contract, multicall, poolIndex }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.lpToken), + resolveRewardRate: async ({ contract, multicall, poolIndex }) => { + const [rewardPerBlock, totalAllocPoint, { allocPoint }] = await Promise.all([ + multicall.wrap(contract).rewardPerBlock(), + multicall.wrap(contract).totalAllocPoint(), + multicall.wrap(contract).poolInfo(poolIndex), + ]); + + return rewardPerBlock.mul(allocPoint.mul(1000).div(totalAllocPoint)).div(1000); + }, + resolvePoolLength: ({ multicall, contract }) => multicall.wrap(contract).poolLength(), + resolveContract: ({ address, network }) => this.auraContractFactory.auraMasterchef({ address, network }), + resolveRewardTokenAddresses: ({ multicall, contract }) => multicall.wrap(contract).cvx(), + }); + } +} diff --git a/src/apps/aura/ethereum/aura.chef.token-fetcher.ts b/src/apps/aura/ethereum/aura.chef.token-fetcher.ts new file mode 100644 index 000000000..b2a85caf6 --- /dev/null +++ b/src/apps/aura/ethereum/aura.chef.token-fetcher.ts @@ -0,0 +1,173 @@ +import { Inject } from '@nestjs/common'; +import { BigNumber, utils } from 'ethers'; +import { compact } from 'lodash'; + +import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { buildDollarDisplayItem } from '~app-toolkit/helpers/presentation/display-item.present'; +import { getTokenImg } from '~app-toolkit/helpers/presentation/image.present'; +import { BALANCER_V2_DEFINITION } from '~apps/balancer-v2'; +import { ContractType } from '~position/contract.interface'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { AppTokenPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { AURA_DEFINITION } from '../aura.definition'; +import { BalancerPool } from '../aura.types'; +import { AuraContractFactory } from '../contracts'; +import { AuraBalancerPoolsHelper } from '../helpers/aura.balancer-pools-helper'; + +type GetAuraBALStableParams = { auraBAL: AppTokenPosition | null; balancerPool: BalancerPool }; + +const appId = AURA_DEFINITION.id; +const groupId = AURA_DEFINITION.groups.chef.id; +const network = Network.ETHEREUM_MAINNET; + +const AURA_BAL_ADDRESS = '0x616e8bfa43f920657b3497dbf40d6b1a02d4608d'; +const B_80BAL_20WETH_ADDRESS = '0x5c6ee304399dbdb9c8ef030ab642b10820db8f56'; +const STABLE_POOL_ID = '0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249'; + +@Register.TokenPositionFetcher({ appId, groupId, network }) +export class EthereumAuraChefTokenFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(AuraContractFactory) private readonly auraContractFactory: AuraContractFactory, + @Inject(AuraBalancerPoolsHelper) private readonly auraBalancerPoolsHelper: AuraBalancerPoolsHelper, + ) {} + + async getPositions() { + const balancerPool = await this.auraBalancerPoolsHelper.getBalancerPool(STABLE_POOL_ID); + if (!balancerPool) { + return []; + } + + const auraBAL = await this.getAuraBAL(balancerPool); + + const auraBALStable = await this.getAuraBALStable({ auraBAL, balancerPool }); + + return compact([auraBAL, auraBALStable]); + } + + private async getAuraBALPrice(balancerPool: BalancerPool) { + const { tokens, totalLiquidity, totalShares } = balancerPool; + + const auraBAL = tokens.find(token => token.address === AURA_BAL_ADDRESS); + if (!auraBAL) { + return null; + } + + // Single-sided join: add 100 auraBAL + const auraBALAmount = utils.parseUnits('100', auraBAL.decimals); + const maxAmountsIn = tokens.map(token => (token.address === AURA_BAL_ADDRESS ? auraBALAmount : BigNumber.from(0))); + + const { bptOut } = await this.auraBalancerPoolsHelper.getBPTOut({ balancerPool, maxAmountsIn }); + + const bptPerAuraBALRaw = bptOut.mul(utils.parseEther('1')).div(auraBALAmount); + const bptPerAuraBAL = Number(bptPerAuraBALRaw) / 10 ** 18; + + const bptPrice = totalLiquidity / totalShares; + + const auraBALPrice = bptPrice / bptPerAuraBAL; + return auraBALPrice; + } + + private async getAuraBAL(balancerPool: BalancerPool) { + const tokenData = balancerPool.tokens.find(token => token.address === AURA_BAL_ADDRESS); + if (!tokenData) { + return null; + } + + const { address, symbol, decimals } = tokenData; + + const contract = this.appToolkit.globalContracts.erc20({ address, network }); + const totalSupplyRaw = await contract.totalSupply(); + + const supply = Number(totalSupplyRaw) / 10 ** decimals; + + const price = await this.getAuraBALPrice(balancerPool); + if (!price) { + return null; + } + + const liquidity = price * supply; + + const token: AppTokenPosition = { + type: ContractType.APP_TOKEN, + appId, + groupId, + address, + tokens: [], + price, + pricePerShare: 1, + symbol, + decimals, + supply, + network, + dataProps: {}, + displayProps: { + label: symbol, + images: [getTokenImg(address)], + statsItems: [ + { + label: 'Liquidity', + value: buildDollarDisplayItem(liquidity), + }, + ], + }, + }; + + return token; + } + + async getAuraBALStable({ auraBAL, balancerPool }: GetAuraBALStableParams) { + if (!auraBAL) { + return null; + } + + const appTokens = await this.appToolkit.getAppTokenPositions({ + appId: BALANCER_V2_DEFINITION.id, + network, + groupIds: [BALANCER_V2_DEFINITION.groups.pool.id], + }); + + const b80BAL20WETH = appTokens.find(token => token.address.toLowerCase() === B_80BAL_20WETH_ADDRESS); + if (!b80BAL20WETH) { + return null; + } + + const { symbol, address, totalLiquidity, totalShares } = balancerPool; + + const tokens = [auraBAL, b80BAL20WETH]; + + const price = totalLiquidity / totalShares; + + const token: AppTokenPosition = { + type: ContractType.APP_TOKEN, + address, + network, + appId, + groupId, + symbol, + decimals: 18, + supply: totalShares, + price, + pricePerShare: 1, + tokens, + dataProps: { + liquidity: totalLiquidity, + }, + displayProps: { + label: symbol, + images: tokens.map(v => getTokenImg(v.address, network)), + statsItems: [ + { + label: 'Liquidity', + value: buildDollarDisplayItem(totalLiquidity), + }, + ], + }, + }; + + return token; + } +} diff --git a/src/apps/aura/ethereum/aura.locker.contract-position-fetcher.ts b/src/apps/aura/ethereum/aura.locker.contract-position-fetcher.ts new file mode 100644 index 000000000..0a3fb85ed --- /dev/null +++ b/src/apps/aura/ethereum/aura.locker.contract-position-fetcher.ts @@ -0,0 +1,142 @@ +import { Inject } from '@nestjs/common'; +import { BigNumber } from 'ethers'; +import { gql } from 'graphql-request'; +import { compact } from 'lodash'; + +import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { + buildDollarDisplayItem, + buildPercentageDisplayItem, +} from '~app-toolkit/helpers/presentation/display-item.present'; +import { getTokenImg } from '~app-toolkit/helpers/presentation/image.present'; +import { SynthetixSingleStakingRoiStrategy } from '~apps/synthetix'; +import { ContractType } from '~position/contract.interface'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { claimable, locked, supplied } from '~position/position.utils'; +import { Network } from '~types/network.interface'; + +import { AURA_DEFINITION } from '../aura.definition'; +import { AuraContractFactory, AuraLocker } from '../contracts'; + +const appId = AURA_DEFINITION.id; +const groupId = AURA_DEFINITION.groups.locker.id; +const network = Network.ETHEREUM_MAINNET; + +type AuraLockerQuery = { + auraLocker: { + totalSupply: string; + rewardData: { + token: { id: string }; + rewardRate: string; + }[]; + }; +}; + +const AURA_LOCKER_QUERY = gql` + { + auraLocker(id: "auraLocker") { + totalSupply + rewardData { + rewardRate + token { + id + } + } + } + } +`; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class EthereumAuraLockerContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(AuraContractFactory) private readonly auraContractFactory: AuraContractFactory, + @Inject(SynthetixSingleStakingRoiStrategy) private readonly roiStrategy: SynthetixSingleStakingRoiStrategy, + ) {} + + async getPositions() { + const address = '0x3fa73f1e5d8a792c80f426fc8f84fbf7ce9bbcac'; + + const contract = this.auraContractFactory.auraLocker({ address, network }); + const multicall = this.appToolkit.getMulticall(network); + + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const appTokens = await this.appToolkit.getAppTokenPositions({ + appId, + groupIds: [AURA_DEFINITION.groups.chef.id], + network, + }); + + const allTokens = [...baseTokens, ...appTokens]; + + const auraToken = allTokens.find(t => t.address.toLowerCase() === AURA_DEFINITION.token!.address.toLowerCase()); + if (!auraToken) return []; + + const { totalSupply, rewardData } = await this.getAuraLockerData(); + + const rewardTokenMatches = compact( + rewardData.map(({ address, rewardRate }) => { + const token = allTokens.find(token => token.address.toLowerCase() === address); + return token ? { token, rewardRate } : null; + }), + ); + + const lockedToken = locked(auraToken); + const unlockedToken = supplied(auraToken); + const rewardTokens = rewardTokenMatches.map(({ token }) => claimable(token)); + const tokens = [lockedToken, unlockedToken, ...rewardTokens]; + + const liquidity = (Number(totalSupply) / 10 ** lockedToken.decimals) * lockedToken.price; + + const roisStrategy = this.roiStrategy.build({ + resolveRewardRates: async () => rewardTokenMatches.map(({ rewardRate }) => rewardRate), + }); + const rois = await roisStrategy({ + contract, + multicall, + rewardTokens, + address, + network, + stakedToken: lockedToken, + liquidity, + }); + + const position: ContractPosition = { + type: ContractType.POSITION, + appId, + groupId, + address, + network, + tokens, + dataProps: { + liquidity, + rois, + }, + displayProps: { + label: 'Vote-locked Aura (vlAURA)', + images: [getTokenImg(lockedToken.address, network)], + statsItems: [ + { label: 'APR', value: buildPercentageDisplayItem(rois.yearlyROI * 100) }, + { label: 'Liquidity', value: buildDollarDisplayItem(liquidity) }, + ], + }, + }; + + return [position]; + } + + private async getAuraLockerData() { + const { + auraLocker: { rewardData, totalSupply }, + } = await this.appToolkit.helpers.theGraphHelper.request({ + endpoint: 'https://api.thegraph.com/subgraphs/name/aurafinance/aura', + query: AURA_LOCKER_QUERY, + }); + return { + totalSupply: BigNumber.from(totalSupply), + rewardData: rewardData.map(({ token: { id }, rewardRate }) => ({ address: id.toLowerCase(), rewardRate })), + }; + } +} diff --git a/src/apps/aura/ethereum/aura.pools.contract-position-fetcher.ts b/src/apps/aura/ethereum/aura.pools.contract-position-fetcher.ts new file mode 100644 index 000000000..81bd5f3c8 --- /dev/null +++ b/src/apps/aura/ethereum/aura.pools.contract-position-fetcher.ts @@ -0,0 +1,64 @@ +import { Inject } from '@nestjs/common'; +import { gql } from 'graphql-request'; +import { compact } from 'lodash'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { AuraBaseRewardPoolHelper } from '~apps/aura/helpers/aura.base-reward-pool-helper'; +import { BALANCER_V2_DEFINITION } from '~apps/balancer-v2'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { AURA_DEFINITION } from '../aura.definition'; +import { AuraContractFactory } from '../contracts'; + +const appId = AURA_DEFINITION.id; +const groupId = AURA_DEFINITION.groups.pools.id; +const network = Network.ETHEREUM_MAINNET; + +type RewardPools = { + pools: { + rewardPool: string; + }[]; +}; + +const REWARD_POOLS_QUERY = gql` + { + pools(where: { isFactoryPool: true }) { + rewardPool + } + } +`; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class EthereumAuraPoolsContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(AuraContractFactory) private readonly auraContractFactory: AuraContractFactory, + @Inject(AuraBaseRewardPoolHelper) private readonly auraBaseRewardPoolHelper: AuraBaseRewardPoolHelper, + ) {} + + async getPositions() { + const rewardPools = await this.getRewardPools(); + + return this.auraBaseRewardPoolHelper.getBaseRewardPoolContractPositions({ + appId, + network, + groupId, + dependencies: [ + { appId: BALANCER_V2_DEFINITION.id, network, groupIds: [BALANCER_V2_DEFINITION.groups.pool.id] }, + { appId, network, groupIds: [AURA_DEFINITION.groups.chef.id, groupId] }, + ], + rewardPools, + }); + } + + private async getRewardPools() { + const { pools } = await this.appToolkit.helpers.theGraphHelper.request({ + endpoint: 'https://api.thegraph.com/subgraphs/name/aurafinance/aura', + query: REWARD_POOLS_QUERY, + }); + return compact(pools.map(pool => pool.rewardPool)); + } +} diff --git a/src/apps/aura/ethereum/aura.pools.token-fetcher.ts b/src/apps/aura/ethereum/aura.pools.token-fetcher.ts new file mode 100644 index 000000000..33cb5b24a --- /dev/null +++ b/src/apps/aura/ethereum/aura.pools.token-fetcher.ts @@ -0,0 +1,122 @@ +import { Inject } from '@nestjs/common'; +import { gql } from 'graphql-request'; +import { compact } from 'lodash'; + +import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { getTokenImg } from '~app-toolkit/helpers/presentation/image.present'; +import { BALANCER_V2_DEFINITION } from '~apps/balancer-v2'; +import { ContractType } from '~position/contract.interface'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { AppTokenPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { AURA_DEFINITION } from '../aura.definition'; +import { AuraContractFactory } from '../contracts'; + +type Pools = { + pools: { + depositToken: { + id: string; + symbol: string; + name: string; + decimals: number; + }; + lpToken: { + id: string; + symbol: string; + name: string; + decimals: number; + }; + totalSupply: string; + }[]; +}; + +const appId = AURA_DEFINITION.id; +const groupId = AURA_DEFINITION.groups.pools.id; +const network = Network.ETHEREUM_MAINNET; + +const QUERY = gql` + { + pools(where: { isFactoryPool: true }) { + depositToken { + id + symbol + name + decimals + } + lpToken { + id + symbol + decimals + name + } + totalSupply + rewardPool + } + } +`; + +@Register.TokenPositionFetcher({ appId, groupId, network }) +export class EthereumAuraPoolsTokenFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(AuraContractFactory) private readonly auraContractFactory: AuraContractFactory, + ) {} + + async getPositions() { + const appTokens = await this.appToolkit.getAppTokenPositions( + { + appId: BALANCER_V2_DEFINITION.id, + groupIds: [BALANCER_V2_DEFINITION.groups.pool.id], + network, + }, + { + appId, + groupIds: [AURA_DEFINITION.groups.chef.id], + network, + }, + ); + + const { pools } = await this.appToolkit.helpers.theGraphHelper.request({ + endpoint: 'https://api.thegraph.com/subgraphs/name/aurafinance/aura', + query: QUERY, + }); + + // Aura platform deposit tokens (e.g. aBPT tokens) + const depositTokens = pools.map( + ({ depositToken, lpToken: { id: lpTokenAddress }, totalSupply }) => { + const address = depositToken.id.toLowerCase(); + const { decimals, symbol } = depositToken; + + const lpToken = appTokens.find(token => token.address.toLowerCase() === lpTokenAddress.toLowerCase()); + if (!lpToken) { + return null; + } + + const supply = Number(totalSupply) / 10 ** decimals; + + return { + type: ContractType.APP_TOKEN, + appId, + groupId, + network, + address, + decimals, + symbol, + supply, + price: lpToken.price, + tokens: [lpToken], + displayProps: { + label: symbol, + images: [getTokenImg(address)], + }, + dataProps: {}, + pricePerShare: 1, + }; + }, + ); + + return compact(depositTokens); + } +} diff --git a/src/apps/aura/ethereum/aura.staking.contract-position-fetcher.ts b/src/apps/aura/ethereum/aura.staking.contract-position-fetcher.ts new file mode 100644 index 000000000..631bd8109 --- /dev/null +++ b/src/apps/aura/ethereum/aura.staking.contract-position-fetcher.ts @@ -0,0 +1,38 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { AuraBaseRewardPoolHelper } from '~apps/aura/helpers/aura.base-reward-pool-helper'; +import { BALANCER_V2_DEFINITION } from '~apps/balancer-v2'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { AURA_DEFINITION } from '../aura.definition'; +import { AuraContractFactory } from '../contracts'; + +const appId = AURA_DEFINITION.id; +const groupId = AURA_DEFINITION.groups.staking.id; +const network = Network.ETHEREUM_MAINNET; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class EthereumAuraStakingContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(AuraContractFactory) private readonly auraContractFactory: AuraContractFactory, + @Inject(AuraBaseRewardPoolHelper) private readonly auraBaseRewardPoolHelper: AuraBaseRewardPoolHelper, + ) {} + + async getPositions() { + return this.auraBaseRewardPoolHelper.getBaseRewardPoolContractPositions({ + appId, + network, + groupId, + dependencies: [ + { appId: BALANCER_V2_DEFINITION.id, network, groupIds: [BALANCER_V2_DEFINITION.groups.pool.id] }, + { appId, network, groupIds: [groupId, AURA_DEFINITION.groups.chef.id] }, + ], + rewardPools: ['0x5e5ea2048475854a5702f5b8468a51ba1296efcc'], + }); + } +} diff --git a/src/apps/aura/helpers/aura.balancer-pools-helper.ts b/src/apps/aura/helpers/aura.balancer-pools-helper.ts new file mode 100644 index 000000000..12638b90a --- /dev/null +++ b/src/apps/aura/helpers/aura.balancer-pools-helper.ts @@ -0,0 +1,148 @@ +import { Inject, Injectable } from '@nestjs/common'; +import { BigNumber, ethers } from 'ethers'; +import { gql } from 'graphql-request'; + +import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Cache } from '~cache/cache.decorator'; +import { Network } from '~types'; + +import { AURA_DEFINITION } from '../aura.definition'; +import { BalancerPool } from '../aura.types'; +import { AuraContractFactory } from '../index'; + +type GetPoolResponse = { + pool: { + id: string; + address: string; + name: string; + poolType: string; + swapFee: string; + symbol: string; + tokensList: string; + totalLiquidity: string; + totalSwapVolume: string; + totalSwapFee: string; + totalShares: string; + tokens: { + address: string; + symbol: string; + decimals: number; + balance: string; + weight: string; + }[]; + } | null; +}; + +type GetBPTOutParams = { balancerPool: BalancerPool; maxAmountsIn: BigNumber[]; sender?: string; recipient?: string }; + +const GET_POOL_QUERY = gql` + query getPool($id: ID!) { + pool(id: $id) { + id + address + name + poolType + swapFee + symbol + tokensList + totalLiquidity + totalSwapVolume + totalSwapFee + totalShares + tokens { + address + symbol + decimals + balance + weight + } + } + } +`; + +const BALANCER_VAULT = '0xba12222222228d8ba445958a75a0704d566bf2c8'; + +const network = Network.ETHEREUM_MAINNET; + +@Injectable() +export class AuraBalancerPoolsHelper { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(AuraContractFactory) private readonly auraContractFactory: AuraContractFactory, + ) {} + + @Cache({ + key: (poolId: string) => `apps-v3:${AURA_DEFINITION.id}:balancer-pools-${poolId}`, + ttl: 15 * 60, // 15 minutes + }) + async getBalancerPool(poolId: string): Promise { + const { pool } = await this.appToolkit.helpers.theGraphHelper.request({ + endpoint: 'https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-v2', + query: GET_POOL_QUERY, + variables: { id: poolId }, + }); + + if (!pool) { + return null; + } + + const { + id, + address, + name, + poolType, + swapFee, + symbol, + tokensList, + totalLiquidity, + totalSwapVolume, + totalSwapFee, + totalShares, + tokens, + } = pool; + + return { + id, + address, + name, + poolType, + swapFee: Number(swapFee), + symbol, + tokensList, + totalLiquidity: Number(totalLiquidity), + totalSwapVolume: Number(totalSwapVolume), + totalSwapFee: Number(totalSwapFee), + totalShares: Number(totalShares), + tokens: tokens.map(({ address, balance, symbol, decimals, weight }) => ({ + address, + balance: Number(balance), + symbol, + decimals, + weight: Number(weight), + })), + }; + } + + async getBPTOut({ + balancerPool, + maxAmountsIn, + sender = BALANCER_VAULT, + recipient = BALANCER_VAULT, + }: GetBPTOutParams) { + const { id, tokens } = balancerPool; + + const balancerHelpers = this.auraContractFactory.balancerHelpers({ + address: '0x5aDDCCa35b7A0D07C74063c48700C8590E87864E', + network, + }); + + const joinPoolRequestStruct = { + assets: tokens.map(token => token.address), + maxAmountsIn, + userData: ethers.utils.defaultAbiCoder.encode(['uint256', 'uint256[]', 'uint256'], [1, maxAmountsIn, 0]), + fromInternalBalance: false, + }; + + return balancerHelpers.callStatic.queryJoin(id, sender, recipient, joinPoolRequestStruct); + } +} diff --git a/src/apps/aura/helpers/aura.base-reward-pool-helper.ts b/src/apps/aura/helpers/aura.base-reward-pool-helper.ts new file mode 100644 index 000000000..5efc0ee95 --- /dev/null +++ b/src/apps/aura/helpers/aura.base-reward-pool-helper.ts @@ -0,0 +1,209 @@ +import { Inject, Injectable } from '@nestjs/common'; +import { BigNumber } from 'ethers'; + +import { APP_TOOLKIT, IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { AURA_DEFINITION, AuraContractFactory } from '~apps/aura'; +import { AuraBaseRewardPoolDataProps } from '~apps/aura/aura.types'; +import { BaseRewardPool } from '~apps/aura/contracts'; +import { SynthetixSingleStakingIsActiveStrategy, SynthetixSingleStakingRoiStrategy } from '~apps/synthetix'; +import { ContractPosition } from '~position/position.interface'; +import { AppGroupsDefinition } from '~position/position.service'; +import { Network } from '~types'; + +type GetRewardsDataPropsParams = { + network: Network; + rewardPools: string[]; +}; + +type GetBaseRewardPoolContractPositionsParams = { + appId: string; + groupId: string; + network: Network; + dependencies: AppGroupsDefinition[]; + rewardPools: string[]; +}; + +type GetAuraMintedForRewardTokenParams = { + rewardTokenAmount: BigNumber; + network: Network; +}; + +type GetAuraRewardRateParams = { + rewardRate: BigNumber; + network: Network; +}; + +@Injectable() +export class AuraBaseRewardPoolHelper { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(AuraContractFactory) private readonly auraContractFactory: AuraContractFactory, + @Inject(SynthetixSingleStakingIsActiveStrategy) + private readonly isActiveStrategy: SynthetixSingleStakingIsActiveStrategy, + @Inject(SynthetixSingleStakingRoiStrategy) private readonly roiStrategy: SynthetixSingleStakingRoiStrategy, + ) {} + + async getBaseRewardPoolContractPositions({ + appId, + groupId, + network, + dependencies, + rewardPools, + }: GetBaseRewardPoolContractPositionsParams) { + // Get the reward tokens and extra rewards up front because we need some + // extra dataProps in order to resolve earned rewards across base reward + // pools and virtual reward pools + const rewardsDataProps = await this.getRewardsDataProps({ rewardPools, network }); + + const contractPositions: ContractPosition[] = + await this.appToolkit.helpers.singleStakingFarmContractPositionHelper.getContractPositions({ + network, + appId, + groupId, + dependencies, + resolveFarmContract: ({ address, network }) => this.auraContractFactory.baseRewardPool({ address, network }), + resolveFarmAddresses: () => rewardPools, + resolveLiquidity: ({ contract, multicall }) => multicall.wrap(contract).totalSupply(), + resolveIsActive: this.isActiveStrategy.build({ + resolvePeriodFinish: ({ contract, multicall }) => multicall.wrap(contract).periodFinish(), + }), + resolveRewardTokenAddresses: async ({ contract }) => { + const rewards = rewardsDataProps.find(r => r.rewardPool === contract.address)!; + const { rewardToken, extraRewards } = rewards; + return [rewardToken, AURA_DEFINITION.token!.address, ...extraRewards.map(r => r.rewardToken)]; + }, + resolveStakedTokenAddress: ({ contract, multicall }) => multicall.wrap(contract).stakingToken(), + resolveRois: opts => { + const strategy = this.roiStrategy.build({ + resolveRewardRates: async ({ contract, multicall }) => { + // Platform reward (e.g. BAL) + const rewardRate = await contract.rewardRate(); + + const { extraRewards } = rewardsDataProps.find(r => r.rewardPool === contract.address)!; + + // AURA reward and extra rewards + const otherRewardRates = await Promise.all([ + this.getAuraRewardRate({ network, rewardRate }), + ...extraRewards.map(({ address }) => + multicall + .wrap(this.auraContractFactory.auraVirtualBalanceRewardPool({ address, network })) + .rewardRate(), + ), + ]); + + return [rewardRate, ...otherRewardRates]; + }, + }); + return strategy(opts); + }, + }); + + return contractPositions.map>( + ({ dataProps, ...contractPosition }) => { + const { extraRewards, rewardToken } = rewardsDataProps.find(r => r.rewardPool === contractPosition.address)!; + return { + ...contractPosition, + dataProps: { ...dataProps, extraRewards, rewardToken }, + }; + }, + ); + } + + async getAuraMintedForRewardToken({ rewardTokenAmount, network }: GetAuraMintedForRewardTokenParams) { + // All values are static/immutable + const maxSupply = BigNumber.from(10).pow(26); + const initMintAmount = BigNumber.from(10).pow(25).mul(5); + const emissionsMaxSupply = BigNumber.from(10).pow(25).mul(5); + const totalCliffs = BigNumber.from(500); + const reductionPerCliff = emissionsMaxSupply.div(totalCliffs); + + const contract = this.auraContractFactory.auraToken({ address: AURA_DEFINITION.token!.address, network }); + const totalSupply = await contract.totalSupply(); + + const emissionsMinted = totalSupply.sub(initMintAmount); + + // e.g. reductionPerCliff = 5e25 / 500 = 1e23 + // e.g. cliff = 1e25 / 1e23 = 100 + const cliff = emissionsMinted.div(reductionPerCliff); + + // e.g. 100 < 500 + if (cliff.lt(totalCliffs)) { + // e.g. (new) reduction = (500 - 100) * 2.5 + 700 = 1700; + // e.g. (new) reduction = (500 - 250) * 2.5 + 700 = 1325; + // e.g. (new) reduction = (500 - 400) * 2.5 + 700 = 950; + const reduction = totalCliffs.sub(cliff).mul(5).div(2).add(700); + // e.g. (new) amount = 1e19 * 1700 / 500 = 34e18; + // e.g. (new) amount = 1e19 * 1325 / 500 = 26.5e18; + // e.g. (new) amount = 1e19 * 950 / 500 = 19e17; + let amount = rewardTokenAmount.mul(reduction).div(totalCliffs); + + // e.g. amtTillMax = 5e25 - 1e25 = 4e25 + const amtTillMax = maxSupply.sub(emissionsMinted); + if (amount.gt(amtTillMax)) { + amount = amtTillMax; + } + + return amount; + } + + return BigNumber.from(0); + } + + private async getAuraRewardRate({ rewardRate, network }: GetAuraRewardRateParams) { + if (rewardRate.eq(0)) { + return BigNumber.from(0); + } + + // Annualise rewardRate to get an amount of reward token earned per year + const secondsPerYear = 86400 * 7 * 365; + const rewardTokenAmount = rewardRate.mul(secondsPerYear); + + // Get the AURA amount minted for that period + const auraRewardRate = await this.getAuraMintedForRewardToken({ rewardTokenAmount, network }); + + // Get per-second value (i.e. the AURA reward rate) + if (auraRewardRate.gt(0)) { + return auraRewardRate.div(secondsPerYear); + } + return auraRewardRate; + } + + private async getRewardsDataProps({ + rewardPools, + network, + }: GetRewardsDataPropsParams): Promise< + { rewardPool: string; rewardToken: string; extraRewards: { address: string; rewardToken: string }[] }[] + > { + const multicall = this.appToolkit.getMulticall(network); + + return Promise.all( + rewardPools.map(async rewardPool => { + const contract = this.auraContractFactory.baseRewardPool({ address: rewardPool, network }); + + const extraRewardsLength = Number(await contract.extraRewardsLength()); + + let extraRewards: { address: string; rewardToken: string }[] = []; + + if (extraRewardsLength > 0) { + const indexes = [...Array(extraRewardsLength).keys()]; + const extraRewardsAddresses = await Promise.all( + indexes.map(index => multicall.wrap(contract).extraRewards(index)), + ); + const extraRewardTokens = await Promise.all( + extraRewardsAddresses + .map(address => this.auraContractFactory.auraVirtualBalanceRewardPool({ address, network })) + .map(contract => multicall.wrap(contract).rewardToken()), + ); + extraRewards = extraRewardsAddresses.map((address, index) => ({ + address: address.toLowerCase(), + rewardToken: extraRewardTokens[index].toLowerCase(), + })); + } + + const rewardToken = (await multicall.wrap(contract).rewardToken()).toLowerCase(); + + return { rewardPool, rewardToken, extraRewards }; + }), + ); + } +} diff --git a/src/apps/aura/index.ts b/src/apps/aura/index.ts new file mode 100644 index 000000000..c5803fcc1 --- /dev/null +++ b/src/apps/aura/index.ts @@ -0,0 +1,3 @@ +export { AURA_DEFINITION, AuraAppDefinition } from './aura.definition'; +export { AuraAppModule } from './aura.module'; +export { AuraContractFactory } from './contracts';