diff --git a/src/app-toolkit/app-toolkit.helpers.ts b/src/app-toolkit/app-toolkit.helpers.ts index 7481d1565..20e05215b 100644 --- a/src/app-toolkit/app-toolkit.helpers.ts +++ b/src/app-toolkit/app-toolkit.helpers.ts @@ -8,8 +8,9 @@ import { MasterChefContractPositionHelper } from './helpers/master-chef/master-c import { MasterChefDefaultClaimableBalanceStrategy } from './helpers/master-chef/master-chef.default.claimable-token-balances-strategy'; import { MasterChefDefaultRewardRateStrategy } from './helpers/master-chef/master-chef.default.reward-token-reward-rate-strategy'; import { MasterChefDefaultStakedBalanceStrategy } from './helpers/master-chef/master-chef.default.staked-token-balance-strategy'; -import { MasterChefRewarderClaimableBalanceStrategy } from './helpers/master-chef/master-chef.rewarder.claimable-token-balances-strategy'; -import { MasterChefRewarderClaimableTokenStrategy } from './helpers/master-chef/master-chef.rewarder.claimable-token-strategy'; +import { MasterChefV2ClaimableBalanceStrategy } from './helpers/master-chef/master-chef.v2.claimable-token-balance-strategy'; +import { MasterChefV2ClaimableTokenStrategy } from './helpers/master-chef/master-chef.v2.claimable-token-strategy'; +import { MasterChefV2RewardRateStrategy } from './helpers/master-chef/master-chef.v2.reward-rate-strategy'; import { SingleStakingFarmContractPositionHelper } from './helpers/position/single-staking-farm.contract-position-helper'; import { SingleVaultTokenHelper } from './helpers/position/single-vault.token-helper'; import { TheGraphHelper } from './helpers/the-graph/the-graph.helper'; @@ -26,8 +27,9 @@ export const AppToolkitHelpers = [ MasterChefDefaultClaimableBalanceStrategy, MasterChefDefaultRewardRateStrategy, MasterChefDefaultStakedBalanceStrategy, - MasterChefRewarderClaimableBalanceStrategy, - MasterChefRewarderClaimableTokenStrategy, + MasterChefV2ClaimableBalanceStrategy, + MasterChefV2ClaimableTokenStrategy, + MasterChefV2RewardRateStrategy, ]; @Injectable() @@ -52,9 +54,11 @@ export class AppToolkitHelperRegistry { public readonly masterChefDefaultRewardsPerBlockStrategy: MasterChefDefaultRewardRateStrategy, @Inject(MasterChefDefaultStakedBalanceStrategy) public readonly masterChefDefaultStakedBalanceStrategy: MasterChefDefaultStakedBalanceStrategy, - @Inject(MasterChefRewarderClaimableBalanceStrategy) - public readonly masterChefRewarderClaimableBalanceStrategy: MasterChefRewarderClaimableBalanceStrategy, - @Inject(MasterChefRewarderClaimableTokenStrategy) - public readonly masterChefRewarderClaimableTokenStrategy: MasterChefRewarderClaimableTokenStrategy, + @Inject(MasterChefV2ClaimableBalanceStrategy) + public readonly masterChefV2ClaimableBalanceStrategy: MasterChefV2ClaimableBalanceStrategy, + @Inject(MasterChefV2ClaimableTokenStrategy) + public readonly masterChefV2ClaimableTokenStrategy: MasterChefV2ClaimableTokenStrategy, + @Inject(MasterChefV2RewardRateStrategy) + public readonly masterChefV2RewardRateStrategy: MasterChefV2RewardRateStrategy, ) {} } diff --git a/src/app-toolkit/helpers/master-chef/master-chef.rewarder.claimable-token-balances-strategy.ts b/src/app-toolkit/helpers/master-chef/master-chef.v2.claimable-token-balance-strategy.ts similarity index 92% rename from src/app-toolkit/helpers/master-chef/master-chef.rewarder.claimable-token-balances-strategy.ts rename to src/app-toolkit/helpers/master-chef/master-chef.v2.claimable-token-balance-strategy.ts index 217a2fe15..90d3a3175 100644 --- a/src/app-toolkit/helpers/master-chef/master-chef.rewarder.claimable-token-balances-strategy.ts +++ b/src/app-toolkit/helpers/master-chef/master-chef.v2.claimable-token-balance-strategy.ts @@ -12,7 +12,7 @@ import { MasterChefClaimableTokenBalanceStrategy } from './master-chef.contract- import { MasterChefContractPositionDataProps } from './master-chef.contract-position-helper'; import { MasterChefDefaultClaimableBalanceStrategy } from './master-chef.default.claimable-token-balances-strategy'; -export type MasterChefRewarderClaimableBalanceStrategyParams = { +export type MasterChefV2ClaimableBalanceStrategyParams = { resolvePrimaryClaimableBalance: (opts: { address: string; multicall: Multicall; @@ -34,7 +34,7 @@ export type MasterChefRewarderClaimableBalanceStrategyParams = { }; @Injectable() -export class MasterChefRewarderClaimableBalanceStrategy { +export class MasterChefV2ClaimableBalanceStrategy { constructor( @Inject(forwardRef(() => MasterChefDefaultClaimableBalanceStrategy)) private readonly masterChefDefaultClaimableBalanceStrategy: MasterChefDefaultClaimableBalanceStrategy, @@ -45,7 +45,7 @@ export class MasterChefRewarderClaimableBalanceStrategy { resolveRewarderAddress, resolveRewarderContract, resolveSecondaryClaimableBalance, - }: MasterChefRewarderClaimableBalanceStrategyParams): MasterChefClaimableTokenBalanceStrategy { + }: MasterChefV2ClaimableBalanceStrategyParams): MasterChefClaimableTokenBalanceStrategy { const primaryStrategy = this.masterChefDefaultClaimableBalanceStrategy.build({ resolveClaimableBalance: resolvePrimaryClaimableBalance, }); diff --git a/src/app-toolkit/helpers/master-chef/master-chef.rewarder.claimable-token-strategy.ts b/src/app-toolkit/helpers/master-chef/master-chef.v2.claimable-token-strategy.ts similarity index 89% rename from src/app-toolkit/helpers/master-chef/master-chef.rewarder.claimable-token-strategy.ts rename to src/app-toolkit/helpers/master-chef/master-chef.v2.claimable-token-strategy.ts index 0b0951386..cfbba6d59 100644 --- a/src/app-toolkit/helpers/master-chef/master-chef.rewarder.claimable-token-strategy.ts +++ b/src/app-toolkit/helpers/master-chef/master-chef.v2.claimable-token-strategy.ts @@ -7,7 +7,7 @@ import { Network } from '~types/network.interface'; import { MasterChefRewardTokenAddressesStrategy } from './master-chef.contract-position-helper'; -export type MasterChefRewarderClaimableTokenStrategyParams = { +export type MasterChefV2ClaimableTokenStrategyParams = { resolvePrimaryClaimableToken: (opts: { multicall: Multicall; contract: T }) => Promise; resolveRewarderAddress: (opts: { multicall: Multicall; poolIndex: number; contract: T }) => Promise; resolveRewarderContract: (opts: { rewarderAddress: string; network: Network }) => V; @@ -19,13 +19,13 @@ export type MasterChefRewarderClaimableTokenStrategyParams = { }; @Injectable() -export class MasterChefRewarderClaimableTokenStrategy { +export class MasterChefV2ClaimableTokenStrategy { build({ resolvePrimaryClaimableToken, resolveRewarderAddress, resolveRewarderContract, resolveSecondaryClaimableToken, - }: MasterChefRewarderClaimableTokenStrategyParams): MasterChefRewardTokenAddressesStrategy { + }: MasterChefV2ClaimableTokenStrategyParams): MasterChefRewardTokenAddressesStrategy { return async opts => { // Resolve the reward token address from the primary chef contract const primaryRewardTokenAddress = await resolvePrimaryClaimableToken(opts); diff --git a/src/app-toolkit/helpers/master-chef/master-chef.v2.reward-rate-strategy.ts b/src/app-toolkit/helpers/master-chef/master-chef.v2.reward-rate-strategy.ts new file mode 100644 index 000000000..41445fdf4 --- /dev/null +++ b/src/app-toolkit/helpers/master-chef/master-chef.v2.reward-rate-strategy.ts @@ -0,0 +1,86 @@ +import { Injectable } from '@nestjs/common'; +import { BigNumberish } from 'ethers'; +import { isArray } from 'lodash'; + +import { ZERO_ADDRESS } from '~app-toolkit/constants/address'; +import { EthersMulticall as Multicall } from '~multicall/multicall.ethers'; +import { Network } from '~types/network.interface'; + +import { MasterChefRewardRateStrategy } from './master-chef.contract-position-helper'; + +export type MasterChefV2RewardRateStrategyParams = { + resolveTotalAllocPoints: (opts: { + network: Network; + contract: T; + multicall: Multicall; + poolIndex: number; + }) => BigNumberish | Promise; + resolvePoolAllocPoints: (opts: { + network: Network; + contract: T; + multicall: Multicall; + poolIndex: number; + }) => BigNumberish | Promise; + resolvePrimaryTotalRewardRate: (opts: { + network: Network; + contract: T; + multicall: Multicall; + poolIndex: number; + }) => Promise; + resolveRewarderAddress: (opts: { multicall: Multicall; poolIndex: number; contract: T }) => Promise; + resolveRewarderContract: (opts: { rewarderAddress: string; network: Network }) => V; + resolveSecondaryTotalRewardRate: (opts: { + multicall: Multicall; + poolIndex: number; + rewarderContract: V; + }) => Promise; + resolveRewardMultiplier?: (opts: { + network: Network; + contract: T; + multicall: Multicall; + poolIndex: number; + }) => Promise; +}; + +@Injectable() +export class MasterChefV2RewardRateStrategy { + build({ + resolvePoolAllocPoints, + resolveTotalAllocPoints, + resolvePrimaryTotalRewardRate, + resolveRewarderAddress, + resolveRewarderContract, + resolveSecondaryTotalRewardRate, + resolveRewardMultiplier = async () => [1], + }: MasterChefV2RewardRateStrategyParams): MasterChefRewardRateStrategy { + return async opts => { + // Resolve the reward allocations and reward per block from the primary chef contract + const [totalAllocPoints, primaryTotalRewardRate, poolAllocPoints, rewardMultiplier] = await Promise.all([ + resolveTotalAllocPoints(opts), + resolvePrimaryTotalRewardRate(opts), + resolvePoolAllocPoints(opts), + resolveRewardMultiplier(opts), + ]); + + // Resolve additional rewarder address + const rewarderAddressRaw = await resolveRewarderAddress(opts); + const rewarderAddress = rewarderAddressRaw.toLowerCase(); + + // Retrieve bonus token total reward per block if there's a valid rewarder + const totalRewardRate = [primaryTotalRewardRate]; + if (rewarderAddress !== ZERO_ADDRESS) { + const rewarderContract = resolveRewarderContract({ rewarderAddress, ...opts }); + const secondaryTotalRewardRate = await resolveSecondaryTotalRewardRate({ rewarderContract, ...opts }); + const secondaryTotalRewardRates = isArray(secondaryTotalRewardRate) + ? secondaryTotalRewardRate + : [secondaryTotalRewardRate]; + totalRewardRate.push(...secondaryTotalRewardRates); + } + + // Calculate reward per block for the given pool's share + const share = Number(poolAllocPoints) / Number(totalAllocPoints); + const rewardRate = totalRewardRate.map((v, i) => share * Number(v) * Number(rewardMultiplier[i] ?? 1)); + return rewardRate; + }; + } +} diff --git a/src/app-toolkit/index.ts b/src/app-toolkit/index.ts index 7e73d24eb..ce07f2fdf 100644 --- a/src/app-toolkit/index.ts +++ b/src/app-toolkit/index.ts @@ -6,8 +6,8 @@ export { MasterChefContractPositionHelper } from './helpers/master-chef/master-c export { MasterChefDefaultClaimableBalanceStrategy } from './helpers/master-chef/master-chef.default.claimable-token-balances-strategy'; export { MasterChefDefaultRewardRateStrategy as MasterChefDefaultRewardsPerBlockStrategy } from './helpers/master-chef/master-chef.default.reward-token-reward-rate-strategy'; export { MasterChefDefaultStakedBalanceStrategy } from './helpers/master-chef/master-chef.default.staked-token-balance-strategy'; -export { MasterChefRewarderClaimableBalanceStrategy } from './helpers/master-chef/master-chef.rewarder.claimable-token-balances-strategy'; -export { MasterChefRewarderClaimableTokenStrategy } from './helpers/master-chef/master-chef.rewarder.claimable-token-strategy'; +export { MasterChefV2ClaimableBalanceStrategy } from './helpers/master-chef/master-chef.v2.claimable-token-balance-strategy'; +export { MasterChefV2ClaimableTokenStrategy } from './helpers/master-chef/master-chef.v2.claimable-token-strategy'; export { SingleStakingFarmContractPositionHelper } from './helpers/position/single-staking-farm.contract-position-helper'; export { SingleVaultTokenHelper } from './helpers/position/single-vault.token-helper'; @@ -33,8 +33,8 @@ export type { export type { MasterChefDefaultClaimableBalanceStrategyParams } from './helpers/master-chef/master-chef.default.claimable-token-balances-strategy'; export type { MasterChefDefaultRewardRateStrategyParams as MasterChefDefaultRewardsPerBlockStrategyParams } from './helpers/master-chef/master-chef.default.reward-token-reward-rate-strategy'; export type { MasterChefDefaultStakedBalanceStrategyParams } from './helpers/master-chef/master-chef.default.staked-token-balance-strategy'; -export type { MasterChefRewarderClaimableBalanceStrategyParams } from './helpers/master-chef/master-chef.rewarder.claimable-token-balances-strategy'; -export type { MasterChefRewarderClaimableTokenStrategyParams } from './helpers/master-chef/master-chef.rewarder.claimable-token-strategy'; +export type { MasterChefV2ClaimableBalanceStrategyParams } from './helpers/master-chef/master-chef.v2.claimable-token-balance-strategy'; +export type { MasterChefV2ClaimableTokenStrategyParams } from './helpers/master-chef/master-chef.v2.claimable-token-strategy'; export type { SingleStakingContractStrategy, SingleStakingStakedTokenBalanceStrategy, diff --git a/src/apps/pickle/arbitrum/pickle.balance-fetcher.ts b/src/apps/pickle/arbitrum/pickle.balance-fetcher.ts index 0a5823643..ffb714818 100644 --- a/src/apps/pickle/arbitrum/pickle.balance-fetcher.ts +++ b/src/apps/pickle/arbitrum/pickle.balance-fetcher.ts @@ -42,7 +42,7 @@ export class ArbitrumPickleBalanceFetcher implements BalanceFetcher { .userInfo(contractPosition.dataProps.poolIndex, address) .then(v => v.amount), }), - resolveClaimableTokenBalances: this.appToolkit.helpers.masterChefRewarderClaimableBalanceStrategy.build< + resolveClaimableTokenBalances: this.appToolkit.helpers.masterChefV2ClaimableBalanceStrategy.build< PickleMiniChefV2, PickleRewarder >({ diff --git a/src/apps/pickle/arbitrum/pickle.farm.contract-position-fetcher.ts b/src/apps/pickle/arbitrum/pickle.farm.contract-position-fetcher.ts index 7631c4a70..220f7ca1e 100644 --- a/src/apps/pickle/arbitrum/pickle.farm.contract-position-fetcher.ts +++ b/src/apps/pickle/arbitrum/pickle.farm.contract-position-fetcher.ts @@ -39,7 +39,7 @@ export class ArbitrumPickleFarmContractPositionFetcher implements PositionFetche }), resolvePoolLength: ({ multicall, contract }) => multicall.wrap(contract).poolLength(), resolveDepositTokenAddress: ({ poolIndex, contract, multicall }) => multicall.wrap(contract).lpToken(poolIndex), - resolveRewardTokenAddresses: this.appToolkit.helpers.masterChefRewarderClaimableTokenStrategy.build< + resolveRewardTokenAddresses: this.appToolkit.helpers.masterChefV2ClaimableTokenStrategy.build< PickleMiniChefV2, PickleRewarder >({ diff --git a/src/apps/pickle/polygon/pickle.balance-fetcher.ts b/src/apps/pickle/polygon/pickle.balance-fetcher.ts index 2d3932718..8890da340 100644 --- a/src/apps/pickle/polygon/pickle.balance-fetcher.ts +++ b/src/apps/pickle/polygon/pickle.balance-fetcher.ts @@ -42,7 +42,7 @@ export class PolygonPickleBalanceFetcher implements BalanceFetcher { .userInfo(contractPosition.dataProps.poolIndex, address) .then(v => v.amount), }), - resolveClaimableTokenBalances: this.appToolkit.helpers.masterChefRewarderClaimableBalanceStrategy.build< + resolveClaimableTokenBalances: this.appToolkit.helpers.masterChefV2ClaimableBalanceStrategy.build< PickleMiniChefV2, PickleRewarder >({ diff --git a/src/apps/pickle/polygon/pickle.farm.contract-position-fetcher.ts b/src/apps/pickle/polygon/pickle.farm.contract-position-fetcher.ts index 6e139d2b8..66b4c3d7d 100644 --- a/src/apps/pickle/polygon/pickle.farm.contract-position-fetcher.ts +++ b/src/apps/pickle/polygon/pickle.farm.contract-position-fetcher.ts @@ -39,7 +39,7 @@ export class PolygonPickleFarmContractPositionFetcher implements PositionFetcher }), resolvePoolLength: ({ multicall, contract }) => multicall.wrap(contract).poolLength(), resolveDepositTokenAddress: ({ poolIndex, contract, multicall }) => multicall.wrap(contract).lpToken(poolIndex), - resolveRewardTokenAddresses: this.appToolkit.helpers.masterChefRewarderClaimableTokenStrategy.build< + resolveRewardTokenAddresses: this.appToolkit.helpers.masterChefV2ClaimableTokenStrategy.build< PickleMiniChefV2, PickleRewarder >({ diff --git a/src/apps/trader-joe/avalanche/trader-joe.balance-fetcher.ts b/src/apps/trader-joe/avalanche/trader-joe.balance-fetcher.ts new file mode 100644 index 000000000..c86af27f8 --- /dev/null +++ b/src/apps/trader-joe/avalanche/trader-joe.balance-fetcher.ts @@ -0,0 +1,222 @@ +import { Inject } from '@nestjs/common'; + +import { drillBalance } from '~app-toolkit'; +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 { APP_TOOLKIT, IAppToolkit } from '~lib'; +import { MetaType } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { + TraderJoeChefBoosted, + TraderJoeChefV2, + TraderJoeChefV3, + TraderJoeContractFactory, + TraderJoeStableStaking, + TraderJoeVeJoeStaking, +} from '../contracts'; +import { TRADER_JOE_DEFINITION } from '../trader-joe.definition'; + +const appId = TRADER_JOE_DEFINITION.id; +const network = Network.AVALANCHE_MAINNET; + +@Register.BalanceFetcher(TRADER_JOE_DEFINITION.id, Network.AVALANCHE_MAINNET) +export class AvalancheTraderJoeBalanceFetcher implements BalanceFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(TraderJoeContractFactory) private readonly traderJoeContractFactory: TraderJoeContractFactory, + ) {} + + private async getXJoeBalances(address: string) { + return this.appToolkit.helpers.tokenBalanceHelper.getTokenBalances({ + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.xJoe.id, + network: Network.AVALANCHE_MAINNET, + address, + }); + } + + private async getSJoeBalances(address: string) { + return this.appToolkit.helpers.singleStakingContractPositionBalanceHelper.getBalances({ + address, + appId, + network, + groupId: TRADER_JOE_DEFINITION.groups.sJoe.id, + resolveContract: opts => this.traderJoeContractFactory.traderJoeStableStaking(opts), + resolveStakedTokenBalance: ({ multicall, contract, contractPosition }) => { + const tokenAddress = contractPosition.tokens.find(v => v.metaType === MetaType.CLAIMABLE)?.address; + if (!tokenAddress) { + throw new Error(`Could not find claimable token for ${contractPosition.address} ${contractPosition.network}`); + } + return multicall + .wrap(contract) + .getUserInfo(address, tokenAddress) + .then(v => v[0]); + }, + resolveRewardTokenBalances: ({ multicall, contract, contractPosition }) => { + const tokenAddress = contractPosition.tokens.find(v => v.metaType === MetaType.CLAIMABLE)?.address; + if (!tokenAddress) { + throw new Error(`Could not find claimable token for ${contractPosition.address} ${contractPosition.network}`); + } + return multicall.wrap(contract).pendingReward(address, tokenAddress); + }, + }); + } + + private async getVeJoeStakingBalances(address: string) { + return this.appToolkit.helpers.singleStakingContractPositionBalanceHelper.getBalances({ + address, + appId, + network, + groupId: TRADER_JOE_DEFINITION.groups.veJoeFarm.id, + resolveContract: opts => this.traderJoeContractFactory.traderJoeVeJoeStaking(opts), + resolveStakedTokenBalance: ({ multicall, contract }) => + multicall + .wrap(contract) + .userInfos(address) + .then(v => v.balance), + resolveRewardTokenBalances: ({ multicall, contract }) => multicall.wrap(contract).getPendingVeJoe(address), + }); + } + + private async getPoolBalances(address: string) { + return this.appToolkit.helpers.tokenBalanceHelper.getTokenBalances({ + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.pool.id, + network: Network.AVALANCHE_MAINNET, + address, + }); + } + + private async getChefV2FarmBalances(address: string) { + return this.appToolkit.helpers.masterChefContractPositionBalanceHelper.getBalances({ + address, + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.chefV2Farm.id, + network: Network.AVALANCHE_MAINNET, + resolveChefContract: ({ contractAddress }) => + this.traderJoeContractFactory.traderJoeChefV2({ network: Network.AVALANCHE_MAINNET, address: contractAddress }), + resolveStakedTokenBalance: this.appToolkit.helpers.masterChefDefaultStakedBalanceStrategy.build({ + resolveStakedBalance: ({ contract, multicall, contractPosition }) => + multicall + .wrap(contract) + .userInfo(contractPosition.dataProps.poolIndex, address) + .then(v => v.amount), + }), + resolveClaimableTokenBalances: async ({ address, contract, contractPosition, multicall }) => { + const pendingTokens = await multicall + .wrap(contract) + .pendingTokens(contractPosition.dataProps.poolIndex, address); + + const claimable = [pendingTokens.pendingJoe, pendingTokens.pendingBonusToken]; + const claimableTokens = contractPosition.tokens.filter(t => t.metaType === MetaType.CLAIMABLE); + return claimableTokens.map((v, i) => drillBalance(v, claimable[i].toString())); + }, + }); + } + + private async getChefV3FarmBalances(address: string) { + return this.appToolkit.helpers.masterChefContractPositionBalanceHelper.getBalances({ + address, + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.chefV3Farm.id, + network: Network.AVALANCHE_MAINNET, + resolveChefContract: ({ contractAddress }) => + this.traderJoeContractFactory.traderJoeChefV3({ network: Network.AVALANCHE_MAINNET, address: contractAddress }), + resolveStakedTokenBalance: this.appToolkit.helpers.masterChefDefaultStakedBalanceStrategy.build({ + resolveStakedBalance: ({ contract, multicall, contractPosition }) => + multicall + .wrap(contract) + .userInfo(contractPosition.dataProps.poolIndex, address) + .then(v => v.amount), + }), + resolveClaimableTokenBalances: async ({ address, contract, contractPosition, multicall }) => { + const pendingTokens = await multicall + .wrap(contract) + .pendingTokens(contractPosition.dataProps.poolIndex, address); + + const claimable = [pendingTokens.pendingJoe, pendingTokens.pendingBonusToken]; + const claimableTokens = contractPosition.tokens.filter(t => t.metaType === MetaType.CLAIMABLE); + return claimableTokens.map((v, i) => drillBalance(v, claimable[i].toString())); + }, + }); + } + + private async getChefBoostedFarmBalances(address: string) { + return this.appToolkit.helpers.masterChefContractPositionBalanceHelper.getBalances({ + address, + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.chefBoostedFarm.id, + network: Network.AVALANCHE_MAINNET, + resolveChefContract: ({ contractAddress }) => + this.traderJoeContractFactory.traderJoeChefBoosted({ + network: Network.AVALANCHE_MAINNET, + address: contractAddress, + }), + resolveStakedTokenBalance: this.appToolkit.helpers.masterChefDefaultStakedBalanceStrategy.build({ + resolveStakedBalance: ({ contract, multicall, contractPosition }) => + multicall + .wrap(contract) + .userInfo(contractPosition.dataProps.poolIndex, address) + .then(v => v.amount), + }), + resolveClaimableTokenBalances: async ({ address, contract, contractPosition, multicall }) => { + const pendingTokens = await multicall + .wrap(contract) + .pendingTokens(contractPosition.dataProps.poolIndex, address); + + const claimable = [pendingTokens.pendingJoe, pendingTokens.pendingBonusToken]; + const claimableTokens = contractPosition.tokens.filter(t => t.metaType === MetaType.CLAIMABLE); + return claimableTokens.map((v, i) => drillBalance(v, claimable[i].toString())); + }, + }); + } + + async getBalances(address: string) { + const [ + xJoeBalances, + sJoeBalances, + veJoeBalances, + poolBalances, + chefV2FarmBalances, + chefV3FarmBalances, + chefBoostedFarmBalances, + ] = await Promise.all([ + this.getXJoeBalances(address), + this.getSJoeBalances(address), + this.getVeJoeStakingBalances(address), + this.getPoolBalances(address), + this.getChefV2FarmBalances(address), + this.getChefV3FarmBalances(address), + this.getChefBoostedFarmBalances(address), + ]); + + return presentBalanceFetcherResponse([ + { + label: 'xJOE', + assets: [...xJoeBalances], + }, + { + label: 'sJOE', + assets: [...sJoeBalances], + }, + { + label: 'veJOE Staking', + assets: [...veJoeBalances], + }, + { + label: 'Pools', + assets: [...poolBalances], + }, + { + label: 'Farms', + assets: [...chefV2FarmBalances, ...chefV3FarmBalances], + }, + { + label: 'Boost', + assets: [...chefBoostedFarmBalances], + }, + ]); + } +} diff --git a/src/apps/trader-joe/avalanche/trader-joe.chef-boosted-farm.contract-position-fetcher.ts b/src/apps/trader-joe/avalanche/trader-joe.chef-boosted-farm.contract-position-fetcher.ts new file mode 100644 index 000000000..3f1e3e2be --- /dev/null +++ b/src/apps/trader-joe/avalanche/trader-joe.chef-boosted-farm.contract-position-fetcher.ts @@ -0,0 +1,88 @@ +import { Inject } from '@nestjs/common'; + +import { Register } from '~app-toolkit/decorators'; +import { RewardRateUnit } from '~app-toolkit/helpers/master-chef/master-chef.contract-position-helper'; +import { APP_TOOLKIT, IAppToolkit } from '~lib'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { TraderJoeChefBoosted, TraderJoeChefV2Rewarder, TraderJoeContractFactory } from '../contracts'; +import { TRADER_JOE_DEFINITION } from '../trader-joe.definition'; + +@Register.ContractPositionFetcher({ + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.chefBoostedFarm.id, + network: Network.AVALANCHE_MAINNET, +}) +export class AvalancheTraderJoeChefBoostedFarmContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(TraderJoeContractFactory) private readonly traderJoeContractFactory: TraderJoeContractFactory, + ) {} + + async getPositions() { + return this.appToolkit.helpers.masterChefContractPositionHelper.getContractPositions({ + address: '0x4483f0b6e2f5486d06958c20f8c39a7abe87bf8f', + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.chefBoostedFarm.id, + network: Network.AVALANCHE_MAINNET, + dependencies: [ + { + appId: TRADER_JOE_DEFINITION.id, + groupIds: [TRADER_JOE_DEFINITION.groups.pool.id, TRADER_JOE_DEFINITION.groups.xJoe.id], + network: Network.AVALANCHE_MAINNET, + }, + ], + resolveContract: ({ address, network }) => + this.traderJoeContractFactory.traderJoeChefBoosted({ address, network }), + resolvePoolLength: ({ multicall, contract }) => multicall.wrap(contract).poolLength(), + resolveDepositTokenAddress: ({ poolIndex, contract, multicall }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.lpToken), + resolveRewardTokenAddresses: this.appToolkit.helpers.masterChefV2ClaimableTokenStrategy.build< + TraderJoeChefBoosted, + TraderJoeChefV2Rewarder + >({ + resolvePrimaryClaimableToken: ({ multicall, contract }) => multicall.wrap(contract).JOE(), + resolveRewarderAddress: ({ multicall, contract, poolIndex }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.rewarder), + resolveRewarderContract: ({ network, rewarderAddress }) => + this.traderJoeContractFactory.traderJoeChefV2Rewarder({ address: rewarderAddress, network }), + resolveSecondaryClaimableToken: ({ multicall, rewarderContract }) => + multicall.wrap(rewarderContract).rewardToken(), + }), + rewardRateUnit: RewardRateUnit.SECOND, + resolveRewardRate: this.appToolkit.helpers.masterChefV2RewardRateStrategy.build< + TraderJoeChefBoosted, + TraderJoeChefV2Rewarder + >({ + resolvePoolAllocPoints: async ({ poolIndex, contract, multicall }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.allocPoint), + resolveTotalAllocPoints: ({ multicall, contract }) => multicall.wrap(contract).totalAllocPoint(), + resolvePrimaryTotalRewardRate: async ({ multicall, contract }) => multicall.wrap(contract).joePerSec(), + resolveRewarderAddress: ({ multicall, contract, poolIndex }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.rewarder), + resolveRewarderContract: ({ network, rewarderAddress }) => + this.traderJoeContractFactory.traderJoeChefV2Rewarder({ address: rewarderAddress, network }), + resolveSecondaryTotalRewardRate: async ({ multicall, rewarderContract }) => { + return multicall + .wrap(rewarderContract) + .rewardPerSecond() + .catch(() => '0'); + }, + }), + }); + } +} diff --git a/src/apps/trader-joe/avalanche/trader-joe.chef-v2-farm.contract-position-fetcher.ts b/src/apps/trader-joe/avalanche/trader-joe.chef-v2-farm.contract-position-fetcher.ts new file mode 100644 index 000000000..8ed6995b1 --- /dev/null +++ b/src/apps/trader-joe/avalanche/trader-joe.chef-v2-farm.contract-position-fetcher.ts @@ -0,0 +1,84 @@ +import { Inject } from '@nestjs/common'; + +import { Register } from '~app-toolkit/decorators'; +import { APP_TOOLKIT, IAppToolkit } from '~lib'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { TraderJoeChefV2, TraderJoeChefV2Rewarder, TraderJoeContractFactory } from '../contracts'; +import { TRADER_JOE_DEFINITION } from '../trader-joe.definition'; + +@Register.ContractPositionFetcher({ + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.chefV2Farm.id, + network: Network.AVALANCHE_MAINNET, +}) +export class AvalancheTraderJoeChefV2FarmContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(TraderJoeContractFactory) private readonly traderJoeContractFactory: TraderJoeContractFactory, + ) {} + + async getPositions() { + return this.appToolkit.helpers.masterChefContractPositionHelper.getContractPositions({ + address: '0xd6a4f121ca35509af06a0be99093d08462f53052', + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.chefV2Farm.id, + network: Network.AVALANCHE_MAINNET, + dependencies: [ + { + appId: TRADER_JOE_DEFINITION.id, + groupIds: [TRADER_JOE_DEFINITION.groups.pool.id, TRADER_JOE_DEFINITION.groups.xJoe.id], + network: Network.AVALANCHE_MAINNET, + }, + ], + resolveContract: ({ address, network }) => this.traderJoeContractFactory.traderJoeChefV2({ address, network }), + resolvePoolLength: ({ multicall, contract }) => multicall.wrap(contract).poolLength(), + resolveDepositTokenAddress: ({ poolIndex, contract, multicall }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.lpToken), + resolveRewardTokenAddresses: this.appToolkit.helpers.masterChefV2ClaimableTokenStrategy.build< + TraderJoeChefV2, + TraderJoeChefV2Rewarder + >({ + resolvePrimaryClaimableToken: ({ multicall, contract }) => multicall.wrap(contract).joe(), + resolveRewarderAddress: ({ multicall, contract, poolIndex }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.rewarder), + resolveRewarderContract: ({ network, rewarderAddress }) => + this.traderJoeContractFactory.traderJoeChefV2Rewarder({ address: rewarderAddress, network }), + resolveSecondaryClaimableToken: ({ multicall, rewarderContract }) => + multicall.wrap(rewarderContract).rewardToken(), + }), + resolveRewardRate: this.appToolkit.helpers.masterChefV2RewardRateStrategy.build< + TraderJoeChefV2, + TraderJoeChefV2Rewarder + >({ + resolvePoolAllocPoints: async ({ poolIndex, contract, multicall }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.allocPoint), + resolveTotalAllocPoints: ({ multicall, contract }) => multicall.wrap(contract).totalAllocPoint(), + resolvePrimaryTotalRewardRate: async ({ multicall, contract }) => multicall.wrap(contract).joePerSec(), + resolveRewarderAddress: ({ multicall, contract, poolIndex }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.rewarder), + resolveRewarderContract: ({ network, rewarderAddress }) => + this.traderJoeContractFactory.traderJoeChefV2Rewarder({ address: rewarderAddress, network }), + resolveSecondaryTotalRewardRate: async ({ multicall, rewarderContract }) => + multicall + .wrap(rewarderContract) + .rewardPerSecond() + .catch(() => '0'), + }), + }); + } +} diff --git a/src/apps/trader-joe/avalanche/trader-joe.chef-v3-farm.contract-position-fetcher.ts b/src/apps/trader-joe/avalanche/trader-joe.chef-v3-farm.contract-position-fetcher.ts new file mode 100644 index 000000000..0e92f8e5d --- /dev/null +++ b/src/apps/trader-joe/avalanche/trader-joe.chef-v3-farm.contract-position-fetcher.ts @@ -0,0 +1,84 @@ +import { Inject } from '@nestjs/common'; + +import { Register } from '~app-toolkit/decorators'; +import { APP_TOOLKIT, IAppToolkit } from '~lib'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { TraderJoeChefV2Rewarder, TraderJoeChefV3, TraderJoeContractFactory } from '../contracts'; +import { TRADER_JOE_DEFINITION } from '../trader-joe.definition'; + +@Register.ContractPositionFetcher({ + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.chefV3Farm.id, + network: Network.AVALANCHE_MAINNET, +}) +export class AvalancheTraderJoeChefV3FarmContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(TraderJoeContractFactory) private readonly traderJoeContractFactory: TraderJoeContractFactory, + ) {} + + async getPositions() { + return this.appToolkit.helpers.masterChefContractPositionHelper.getContractPositions({ + address: '0x188bed1968b795d5c9022f6a0bb5931ac4c18f00', + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.chefV3Farm.id, + network: Network.AVALANCHE_MAINNET, + dependencies: [ + { + appId: TRADER_JOE_DEFINITION.id, + groupIds: [TRADER_JOE_DEFINITION.groups.pool.id, TRADER_JOE_DEFINITION.groups.xJoe.id], + network: Network.AVALANCHE_MAINNET, + }, + ], + resolveContract: ({ address, network }) => this.traderJoeContractFactory.traderJoeChefV3({ address, network }), + resolvePoolLength: ({ multicall, contract }) => multicall.wrap(contract).poolLength(), + resolveDepositTokenAddress: ({ poolIndex, contract, multicall }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.lpToken), + resolveRewardTokenAddresses: this.appToolkit.helpers.masterChefV2ClaimableTokenStrategy.build< + TraderJoeChefV3, + TraderJoeChefV2Rewarder + >({ + resolvePrimaryClaimableToken: ({ multicall, contract }) => multicall.wrap(contract).JOE(), + resolveRewarderAddress: ({ multicall, contract, poolIndex }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.rewarder), + resolveRewarderContract: ({ network, rewarderAddress }) => + this.traderJoeContractFactory.traderJoeChefV2Rewarder({ address: rewarderAddress, network }), + resolveSecondaryClaimableToken: ({ multicall, rewarderContract }) => + multicall.wrap(rewarderContract).rewardToken(), + }), + resolveRewardRate: this.appToolkit.helpers.masterChefV2RewardRateStrategy.build< + TraderJoeChefV3, + TraderJoeChefV2Rewarder + >({ + resolvePoolAllocPoints: async ({ poolIndex, contract, multicall }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.allocPoint), + resolveTotalAllocPoints: ({ multicall, contract }) => multicall.wrap(contract).totalAllocPoint(), + resolvePrimaryTotalRewardRate: async ({ multicall, contract }) => multicall.wrap(contract).joePerSec(), + resolveRewarderAddress: ({ multicall, contract, poolIndex }) => + multicall + .wrap(contract) + .poolInfo(poolIndex) + .then(v => v.rewarder), + resolveRewarderContract: ({ network, rewarderAddress }) => + this.traderJoeContractFactory.traderJoeChefV2Rewarder({ address: rewarderAddress, network }), + resolveSecondaryTotalRewardRate: async ({ multicall, rewarderContract }) => + multicall + .wrap(rewarderContract) + .rewardPerSecond() + .catch(() => '0'), + }), + }); + } +} diff --git a/src/apps/trader-joe/avalanche/trader-joe.pool.token-fetcher.ts b/src/apps/trader-joe/avalanche/trader-joe.pool.token-fetcher.ts new file mode 100644 index 000000000..ca51cf334 --- /dev/null +++ b/src/apps/trader-joe/avalanche/trader-joe.pool.token-fetcher.ts @@ -0,0 +1,59 @@ +import { Inject } from '@nestjs/common'; + +import { Register } from '~app-toolkit/decorators'; +import { OLYMPUS_DEFINITION } from '~apps/olympus/olympus.definition'; +import { UniswapV2ContractFactory } from '~apps/uniswap-v2/contracts'; +import { UniswapV2PoolTokenHelper } from '~apps/uniswap-v2/helpers/uniswap-v2.pool.token-helper'; +import { UniswapV2TheGraphPoolTokenAddressStrategy } from '~apps/uniswap-v2/helpers/uniswap-v2.the-graph.pool-token-address-strategy'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { AppTokenPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { TRADER_JOE_DEFINITION } from '../trader-joe.definition'; + +const appId = TRADER_JOE_DEFINITION.id; +const groupId = TRADER_JOE_DEFINITION.groups.pool.id; +const network = Network.AVALANCHE_MAINNET; +@Register.TokenPositionFetcher({ appId, groupId, network }) +export class AvalancheTraderJoePoolTokenFetcher implements PositionFetcher { + constructor( + @Inject(UniswapV2ContractFactory) + private readonly uniswapV2ContractFactory: UniswapV2ContractFactory, + @Inject(UniswapV2PoolTokenHelper) + private readonly uniswapV2PoolTokenHelper: UniswapV2PoolTokenHelper, + @Inject(UniswapV2TheGraphPoolTokenAddressStrategy) + private readonly uniswapV2TheGraphPoolTokenAddressStrategy: UniswapV2TheGraphPoolTokenAddressStrategy, + ) {} + + getPositions() { + const network = Network.AVALANCHE_MAINNET; + return this.uniswapV2PoolTokenHelper.getTokens({ + network, + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.pool.id, + factoryAddress: '0x9ad6c38be94206ca50bb0d90783181662f0cfa10', + appTokenDependencies: [ + { appId: OLYMPUS_DEFINITION.id, groupIds: [OLYMPUS_DEFINITION.groups.gOhm.id], network }, + // @TODO: migrate me + { appId: 'benqi', groupIds: ['s-avax'], network }, + ], + resolveFactoryContract: ({ address, network }) => + this.uniswapV2ContractFactory.uniswapFactory({ address, network }), + resolvePoolContract: ({ address, network }) => this.uniswapV2ContractFactory.uniswapPair({ address, network }), + resolvePoolTokenAddresses: this.uniswapV2TheGraphPoolTokenAddressStrategy.build({ + subgraphUrl: 'https://api.thegraph.com/subgraphs/name/traderjoe-xyz/exchange', + requiredPools: ['0x23ddca8de11eccd8000263f008a92e10dc1f21e8', '0x2a8a315e82f85d1f0658c5d66a452bbdd9356783'], + first: 500, + }), + resolvePoolTokenSymbol: ({ multicall, poolContract }) => multicall.wrap(poolContract).symbol(), + resolvePoolTokenSupply: ({ multicall, poolContract }) => multicall.wrap(poolContract).totalSupply(), + resolvePoolReserves: async ({ multicall, poolContract }) => + multicall + .wrap(poolContract) + .getReserves() + .then(v => [v[0], v[1]]), + resolvePoolUnderlyingTokenAddresses: async ({ multicall, poolContract }) => + Promise.all([multicall.wrap(poolContract).token0(), multicall.wrap(poolContract).token1()]), + }); + } +} diff --git a/src/apps/trader-joe/avalanche/trader-joe.s-joe.contract-position-fetcher.ts b/src/apps/trader-joe/avalanche/trader-joe.s-joe.contract-position-fetcher.ts new file mode 100644 index 000000000..1b81eb909 --- /dev/null +++ b/src/apps/trader-joe/avalanche/trader-joe.s-joe.contract-position-fetcher.ts @@ -0,0 +1,41 @@ +import { Inject } from '@nestjs/common'; +import _ from 'lodash'; + +import { Register } from '~app-toolkit/decorators'; +import { APP_TOOLKIT, IAppToolkit } from '~lib'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { TraderJoeContractFactory, TraderJoeStableStaking } from '../contracts'; +import { TRADER_JOE_DEFINITION } from '../trader-joe.definition'; + +const appId = TRADER_JOE_DEFINITION.id; +const groupId = TRADER_JOE_DEFINITION.groups.sJoe.id; +const network = Network.AVALANCHE_MAINNET; +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class AvalancheTraderJoeSJoeContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(TraderJoeContractFactory) + private readonly contractFactory: TraderJoeContractFactory, + ) {} + + async getPositions() { + return this.appToolkit.helpers.singleStakingFarmContractPositionHelper.getContractPositions( + { + appId, + groupId, + network, + resolveFarmAddresses: async () => ['0x1a731b2299e22fbac282e7094eda41046343cb51'], + resolveStakedTokenAddress: async ({ multicall, contract }) => multicall.wrap(contract).joe(), + resolveFarmContract: opts => this.contractFactory.traderJoeStableStaking(opts), + resolveRewardTokenAddresses: async ({ multicall, contract }) => { + const length = await multicall.wrap(contract).rewardTokensLength().then(Number); + return Promise.all(_.range(length).map(i => multicall.wrap(contract).rewardTokens(i))); + }, + resolveRois: () => ({ dailyROI: 0, weeklyROI: 0, yearlyROI: 0 }), + }, + ); + } +} diff --git a/src/apps/trader-joe/avalanche/trader-joe.tvl-fetcher.ts b/src/apps/trader-joe/avalanche/trader-joe.tvl-fetcher.ts new file mode 100644 index 000000000..a081e503d --- /dev/null +++ b/src/apps/trader-joe/avalanche/trader-joe.tvl-fetcher.ts @@ -0,0 +1,42 @@ +import { Inject } from '@nestjs/common'; +import { gql, request } from 'graphql-request'; +import { sumBy } from 'lodash'; + +import { Register } from '~app-toolkit/decorators'; +import { TvlFetcher } from '~stats/tvl/tvl-fetcher.interface'; +import { Network } from '~types/network.interface'; + +import { TRADER_JOE_DEFINITION } from '../trader-joe.definition'; + +import { AvalancheTraderJoeXJoeTokenFetcher } from './trader-joe.x-joe.token-fetcher'; + +@Register.TvlFetcher({ appId: TRADER_JOE_DEFINITION.id, network: Network.AVALANCHE_MAINNET }) +export class AvalancheTraderJoeTvlFetcher implements TvlFetcher { + constructor( + @Inject(AvalancheTraderJoeXJoeTokenFetcher) + private readonly avalancheTraderJoeXJoeTokenFetcher: AvalancheTraderJoeXJoeTokenFetcher, + ) {} + + async getTvl() { + const graphPromise = request<{ factories: { liquidityUSD: string }[] }>( + `https://api.thegraph.com/subgraphs/name/traderjoe-xyz/exchange`, + gql` + query getTraderJoeTvl { + factories { + liquidityUSD + } + } + `, + {}, + ); + + const xJoePromise = this.avalancheTraderJoeXJoeTokenFetcher.getPositions(); + + const [resp, xJoePositions] = await Promise.all([graphPromise, xJoePromise]); + + const poolTVL = parseFloat(resp.factories[0].liquidityUSD); + const xJoeTvl = sumBy(xJoePositions, p => p.dataProps.liquidity); + + return poolTVL + xJoeTvl; + } +} diff --git a/src/apps/trader-joe/avalanche/trader-joe.ve-joe-farm.contract-position-fetcher.ts b/src/apps/trader-joe/avalanche/trader-joe.ve-joe-farm.contract-position-fetcher.ts new file mode 100644 index 000000000..3e4244e00 --- /dev/null +++ b/src/apps/trader-joe/avalanche/trader-joe.ve-joe-farm.contract-position-fetcher.ts @@ -0,0 +1,40 @@ +import { Inject } from '@nestjs/common'; + +import { Register } from '~app-toolkit/decorators'; +import { APP_TOOLKIT, IAppToolkit } from '~lib'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { TraderJoeVeJoeStaking, TraderJoeContractFactory } from '../contracts'; +import { TRADER_JOE_DEFINITION } from '../trader-joe.definition'; + +const appId = TRADER_JOE_DEFINITION.id; +const groupId = TRADER_JOE_DEFINITION.groups.veJoeFarm.id; +const network = Network.AVALANCHE_MAINNET; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class AvalancheTraderJoeVeJoeFarmContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(TraderJoeContractFactory) private readonly contractFactory: TraderJoeContractFactory, + ) {} + + async getPositions() { + return this.appToolkit.helpers.masterChefContractPositionHelper.getContractPositions({ + address: '0x25d85e17dd9e544f6e9f8d44f99602dbf5a97341', + appId, + groupId, + network, + resolveContract: ({ address, network }) => this.contractFactory.traderJoeVeJoeStaking({ address, network }), + resolvePoolLength: () => 1, + resolveDepositTokenAddress: ({ contract, multicall }) => multicall.wrap(contract).joe(), + resolveRewardTokenAddresses: ({ contract, multicall }) => multicall.wrap(contract).veJoe(), + resolveRewardRate: this.appToolkit.helpers.masterChefDefaultRewardsPerBlockStrategy.build({ + resolvePoolAllocPoints: async () => 1, + resolveTotalAllocPoints: () => 1, + resolveTotalRewardRate: ({ multicall, contract }) => multicall.wrap(contract).veJoePerSharePerSec(), + }), + }); + } +} diff --git a/src/apps/trader-joe/avalanche/trader-joe.x-joe.token-fetcher.ts b/src/apps/trader-joe/avalanche/trader-joe.x-joe.token-fetcher.ts new file mode 100644 index 000000000..a0a43a238 --- /dev/null +++ b/src/apps/trader-joe/avalanche/trader-joe.x-joe.token-fetcher.ts @@ -0,0 +1,34 @@ +import { Inject } from '@nestjs/common'; + +import { Register } from '~app-toolkit/decorators'; +import { APP_TOOLKIT, IAppToolkit } from '~lib'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { AppTokenPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { TraderJoeContractFactory } from '../contracts'; +import { TRADER_JOE_DEFINITION } from '../trader-joe.definition'; + +@Register.TokenPositionFetcher({ + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.xJoe.id, + network: Network.AVALANCHE_MAINNET, +}) +export class AvalancheTraderJoeXJoeTokenFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(TraderJoeContractFactory) + private readonly traderJoeContractFactory: TraderJoeContractFactory, + ) {} + + async getPositions() { + return this.appToolkit.helpers.singleVaultTokenHelper.getTokens({ + appId: TRADER_JOE_DEFINITION.id, + groupId: TRADER_JOE_DEFINITION.groups.xJoe.id, + network: Network.AVALANCHE_MAINNET, + address: '0x57319d41f71e81f3c65f2a47ca4e001ebafd4f33', + resolveUnderlyingTokenAddress: () => '0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd', + resolveContract: ({ address, network }) => this.traderJoeContractFactory.erc20({ address, network }), + }); + } +} diff --git a/src/apps/trader-joe/contracts/abis/trader-joe-chef-boosted.json b/src/apps/trader-joe/contracts/abis/trader-joe-chef-boosted.json new file mode 100644 index 000000000..0891cfb09 --- /dev/null +++ b/src/apps/trader-joe/contracts/abis/trader-joe-chef-boosted.json @@ -0,0 +1,303 @@ +[ + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "allocPoint", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "veJoeShareBp", "type": "uint256" }, + { "indexed": true, "internalType": "contract IERC20", "name": "lpToken", "type": "address" }, + { "indexed": true, "internalType": "contract IRewarder", "name": "rewarder", "type": "address" } + ], + "name": "Add", + "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": "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": "user", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "Harvest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }], + "name": "Init", + "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": "uint256", "name": "pid", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "allocPoint", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "veJoeShareBp", "type": "uint256" }, + { "indexed": true, "internalType": "contract IRewarder", "name": "rewarder", "type": "address" }, + { "indexed": false, "internalType": "bool", "name": "overwrite", "type": "bool" } + ], + "name": "Set", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "lastRewardTimestamp", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "lpSupply", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "accJoePerShare", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "accJoePerFactorPerShare", "type": "uint256" } + ], + "name": "UpdatePool", + "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": "JOE", + "outputs": [{ "internalType": "contract IERC20", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MASTER_CHEF_V2", + "outputs": [{ "internalType": "contract IMasterChefJoe", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MASTER_PID", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VEJOE", + "outputs": [{ "internalType": "contract IERC20", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint96", "name": "_allocPoint", "type": "uint96" }, + { "internalType": "uint32", "name": "_veJoeShareBp", "type": "uint32" }, + { "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": "", "type": "uint256" }, + { "internalType": "address", "name": "", "type": "address" } + ], + "name": "claimableJoe", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "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": "harvestFromMasterChef", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "contract IERC20", "name": "_dummyToken", "type": "address" }], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "contract IMasterChefJoe", "name": "_MASTER_CHEF_V2", "type": "address" }, + { "internalType": "contract IERC20", "name": "_joe", "type": "address" }, + { "internalType": "contract IERC20", "name": "_veJoe", "type": "address" }, + { "internalType": "uint256", "name": "_MASTER_PID", "type": "uint256" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "joePerSec", + "outputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "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": "pendingTokens", + "outputs": [ + { "internalType": "uint256", "name": "pendingJoe", "type": "uint256" }, + { "internalType": "address", "name": "bonusTokenAddress", "type": "address" }, + { "internalType": "string", "name": "bonusTokenSymbol", "type": "string" }, + { "internalType": "uint256", "name": "pendingBonusToken", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "name": "poolInfo", + "outputs": [ + { "internalType": "contract IERC20", "name": "lpToken", "type": "address" }, + { "internalType": "uint96", "name": "allocPoint", "type": "uint96" }, + { "internalType": "uint256", "name": "accJoePerShare", "type": "uint256" }, + { "internalType": "uint256", "name": "accJoePerFactorPerShare", "type": "uint256" }, + { "internalType": "uint64", "name": "lastRewardTimestamp", "type": "uint64" }, + { "internalType": "contract IRewarder", "name": "rewarder", "type": "address" }, + { "internalType": "uint32", "name": "veJoeShareBp", "type": "uint32" }, + { "internalType": "uint256", "name": "totalFactor", "type": "uint256" }, + { "internalType": "uint256", "name": "totalLpSupply", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolLength", + "outputs": [{ "internalType": "uint256", "name": "pools", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "uint256", "name": "_pid", "type": "uint256" }, + { "internalType": "uint96", "name": "_allocPoint", "type": "uint96" }, + { "internalType": "uint32", "name": "_veJoeShareBp", "type": "uint32" }, + { "internalType": "contract IRewarder", "name": "_rewarder", "type": "address" }, + { "internalType": "bool", "name": "_overwrite", "type": "bool" } + ], + "name": "set", + "outputs": [], + "stateMutability": "nonpayable", + "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": "address", "name": "_user", "type": "address" }, + { "internalType": "uint256", "name": "_newVeJoeBalance", "type": "uint256" } + ], + "name": "updateFactor", + "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" }, + { "internalType": "uint256", "name": "factor", "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/trader-joe/contracts/abis/trader-joe-chef-v-2-rewarder.json b/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-2-rewarder.json new file mode 100644 index 000000000..dbf7ea093 --- /dev/null +++ b/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-2-rewarder.json @@ -0,0 +1,208 @@ +[ + { + "inputs": [{ "internalType": "address", "name": "_MASTERCHEF_V2", "type": "address" }], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { "anonymous": false, "inputs": [], "name": "LogInit", "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" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" } + ], + "name": "LogOnReward", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "allocPoint", "type": "uint256" } + ], + "name": "LogPoolAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "rewardPerSecond", "type": "uint256" }], + "name": "LogRewardPerSecond", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "allocPoint", "type": "uint256" } + ], + "name": "LogSetPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, + { "indexed": false, "internalType": "uint64", "name": "lastRewardTime", "type": "uint64" }, + { "indexed": false, "internalType": "uint256", "name": "lpSupply", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "accSushiPerShare", "type": "uint256" } + ], + "name": "LogUpdatePool", + "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" + }, + { + "inputs": [], + "name": "MASTERCHEF_V2", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "claimOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "bytes", "name": "data", "type": "bytes" }], + "name": "init", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "masterLpToken", + "outputs": [{ "internalType": "contract IERC20", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "pid", "type": "uint256" }, + { "internalType": "address", "name": "_user", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "lpToken", "type": "uint256" } + ], + "name": "onSushiReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_pid", "type": "uint256" }, + { "internalType": "address", "name": "_user", "type": "address" } + ], + "name": "pendingToken", + "outputs": [{ "internalType": "uint256", "name": "pending", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "pid", "type": "uint256" }, + { "internalType": "address", "name": "user", "type": "address" }, + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "name": "pendingTokens", + "outputs": [ + { "internalType": "contract IERC20[]", "name": "rewardTokens", "type": "address[]" }, + { "internalType": "uint256[]", "name": "rewardAmounts", "type": "uint256[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "name": "poolInfo", + "outputs": [ + { "internalType": "uint128", "name": "accSushiPerShare", "type": "uint128" }, + { "internalType": "uint64", "name": "lastRewardTime", "type": "uint64" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerSecond", + "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": "uint256", "name": "_rewardPerSecond", "type": "uint256" }], + "name": "setRewardPerSecond", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "newOwner", "type": "address" }, + { "internalType": "bool", "name": "direct", "type": "bool" }, + { "internalType": "bool", "name": "renounce", "type": "bool" } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "pid", "type": "uint256" }], + "name": "updatePool", + "outputs": [ + { + "components": [ + { "internalType": "uint128", "name": "accSushiPerShare", "type": "uint128" }, + { "internalType": "uint64", "name": "lastRewardTime", "type": "uint64" } + ], + "internalType": "struct RulerRewarder.PoolInfo", + "name": "pool", + "type": "tuple" + } + ], + "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" + } +] diff --git a/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-2.json b/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-2.json new file mode 100644 index 000000000..711fe85b0 --- /dev/null +++ b/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-2.json @@ -0,0 +1,367 @@ +[ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { "type": "address", "name": "_joe", "internalType": "contract JoeToken" }, + { "type": "address", "name": "_devAddr", "internalType": "address" }, + { "type": "address", "name": "_treasuryAddr", "internalType": "address" }, + { "type": "address", "name": "_investorAddr", "internalType": "address" }, + { "type": "uint256", "name": "_joePerSec", "internalType": "uint256" }, + { "type": "uint256", "name": "_startTimestamp", "internalType": "uint256" }, + { "type": "uint256", "name": "_devPercent", "internalType": "uint256" }, + { "type": "uint256", "name": "_treasuryPercent", "internalType": "uint256" }, + { "type": "uint256", "name": "_investorPercent", "internalType": "uint256" } + ] + }, + { + "type": "event", + "name": "Add", + "inputs": [ + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "allocPoint", "internalType": "uint256", "indexed": false }, + { "type": "address", "name": "lpToken", "internalType": "contract IERC20", "indexed": true }, + { "type": "address", "name": "rewarder", "internalType": "contract IRewarder", "indexed": true } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Deposit", + "inputs": [ + { "type": "address", "name": "user", "internalType": "address", "indexed": true }, + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "amount", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EmergencyWithdraw", + "inputs": [ + { "type": "address", "name": "user", "internalType": "address", "indexed": true }, + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "amount", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Harvest", + "inputs": [ + { "type": "address", "name": "user", "internalType": "address", "indexed": true }, + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "amount", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { "type": "address", "name": "previousOwner", "internalType": "address", "indexed": true }, + { "type": "address", "name": "newOwner", "internalType": "address", "indexed": true } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Set", + "inputs": [ + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "allocPoint", "internalType": "uint256", "indexed": false }, + { "type": "address", "name": "rewarder", "internalType": "contract IRewarder", "indexed": true }, + { "type": "bool", "name": "overwrite", "internalType": "bool", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SetDevAddress", + "inputs": [ + { "type": "address", "name": "oldAddress", "internalType": "address", "indexed": true }, + { "type": "address", "name": "newAddress", "internalType": "address", "indexed": true } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdateEmissionRate", + "inputs": [ + { "type": "address", "name": "user", "internalType": "address", "indexed": true }, + { "type": "uint256", "name": "_joePerSec", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdatePool", + "inputs": [ + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "lastRewardTimestamp", "internalType": "uint256", "indexed": false }, + { "type": "uint256", "name": "lpSupply", "internalType": "uint256", "indexed": false }, + { "type": "uint256", "name": "accJoePerShare", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Withdraw", + "inputs": [ + { "type": "address", "name": "user", "internalType": "address", "indexed": true }, + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "amount", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "add", + "inputs": [ + { "type": "uint256", "name": "_allocPoint", "internalType": "uint256" }, + { "type": "address", "name": "_lpToken", "internalType": "contract IERC20" }, + { "type": "address", "name": "_rewarder", "internalType": "contract IRewarder" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "deposit", + "inputs": [ + { "type": "uint256", "name": "_pid", "internalType": "uint256" }, + { "type": "uint256", "name": "_amount", "internalType": "uint256" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "dev", + "inputs": [{ "type": "address", "name": "_devAddr", "internalType": "address" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "address" }], + "name": "devAddr", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "devPercent", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "emergencyWithdraw", + "inputs": [{ "type": "uint256", "name": "_pid", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "address" }], + "name": "investorAddr", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "investorPercent", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "contract JoeToken" }], + "name": "joe", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "joePerSec", + "inputs": [] + }, + { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "massUpdatePools", "inputs": [] }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "address" }], + "name": "owner", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "uint256", "name": "pendingJoe", "internalType": "uint256" }, + { "type": "address", "name": "bonusTokenAddress", "internalType": "address" }, + { "type": "string", "name": "bonusTokenSymbol", "internalType": "string" }, + { "type": "uint256", "name": "pendingBonusToken", "internalType": "uint256" } + ], + "name": "pendingTokens", + "inputs": [ + { "type": "uint256", "name": "_pid", "internalType": "uint256" }, + { "type": "address", "name": "_user", "internalType": "address" } + ] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "address", "name": "lpToken", "internalType": "contract IERC20" }, + { "type": "uint256", "name": "allocPoint", "internalType": "uint256" }, + { "type": "uint256", "name": "lastRewardTimestamp", "internalType": "uint256" }, + { "type": "uint256", "name": "accJoePerShare", "internalType": "uint256" }, + { "type": "address", "name": "rewarder", "internalType": "contract IRewarder" } + ], + "name": "poolInfo", + "inputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "poolLength", + "inputs": [] + }, + { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "renounceOwnership", "inputs": [] }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "address", "name": "bonusTokenAddress", "internalType": "address" }, + { "type": "string", "name": "bonusTokenSymbol", "internalType": "string" } + ], + "name": "rewarderBonusTokenInfo", + "inputs": [{ "type": "uint256", "name": "_pid", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "set", + "inputs": [ + { "type": "uint256", "name": "_pid", "internalType": "uint256" }, + { "type": "uint256", "name": "_allocPoint", "internalType": "uint256" }, + { "type": "address", "name": "_rewarder", "internalType": "contract IRewarder" }, + { "type": "bool", "name": "overwrite", "internalType": "bool" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "setDevPercent", + "inputs": [{ "type": "uint256", "name": "_newDevPercent", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "setInvestorAddr", + "inputs": [{ "type": "address", "name": "_investorAddr", "internalType": "address" }] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "setInvestorPercent", + "inputs": [{ "type": "uint256", "name": "_newInvestorPercent", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "setTreasuryAddr", + "inputs": [{ "type": "address", "name": "_treasuryAddr", "internalType": "address" }] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "setTreasuryPercent", + "inputs": [{ "type": "uint256", "name": "_newTreasuryPercent", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "startTimestamp", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "totalAllocPoint", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "transferOwnership", + "inputs": [{ "type": "address", "name": "newOwner", "internalType": "address" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "address" }], + "name": "treasuryAddr", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "treasuryPercent", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "updateEmissionRate", + "inputs": [{ "type": "uint256", "name": "_joePerSec", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "updatePool", + "inputs": [{ "type": "uint256", "name": "_pid", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "uint256", "name": "amount", "internalType": "uint256" }, + { "type": "uint256", "name": "rewardDebt", "internalType": "uint256" } + ], + "name": "userInfo", + "inputs": [ + { "type": "uint256", "name": "", "internalType": "uint256" }, + { "type": "address", "name": "", "internalType": "address" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "withdraw", + "inputs": [ + { "type": "uint256", "name": "_pid", "internalType": "uint256" }, + { "type": "uint256", "name": "_amount", "internalType": "uint256" } + ] + } +] diff --git a/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-3-rewarder.json b/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-3-rewarder.json new file mode 100644 index 000000000..be5eff641 --- /dev/null +++ b/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-3-rewarder.json @@ -0,0 +1,171 @@ +[ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { "type": "address", "name": "_rewardToken", "internalType": "contract IERC20" }, + { "type": "address", "name": "_lpToken", "internalType": "contract IERC20" }, + { "type": "uint256", "name": "_tokenPerSec", "internalType": "uint256" }, + { "type": "address", "name": "_MCJ", "internalType": "contract IMasterChefJoe" }, + { "type": "bool", "name": "_isNative", "internalType": "bool" } + ] + }, + { + "type": "event", + "name": "OnReward", + "inputs": [ + { "type": "address", "name": "user", "internalType": "address", "indexed": true }, + { "type": "uint256", "name": "amount", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { "type": "address", "name": "previousOwner", "internalType": "address", "indexed": true }, + { "type": "address", "name": "newOwner", "internalType": "address", "indexed": true } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardRateUpdated", + "inputs": [ + { "type": "uint256", "name": "oldRate", "internalType": "uint256", "indexed": false }, + { "type": "uint256", "name": "newRate", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "contract IMasterChefJoe" }], + "name": "MCJ", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "balance", + "inputs": [] + }, + { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "claimOwnership", "inputs": [] }, + { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "emergencyWithdraw", "inputs": [] }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "bool", "name": "", "internalType": "bool" }], + "name": "isNative", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "contract IERC20" }], + "name": "lpToken", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "onJoeReward", + "inputs": [ + { "type": "address", "name": "_user", "internalType": "address" }, + { "type": "uint256", "name": "_lpAmount", "internalType": "uint256" } + ] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "address" }], + "name": "owner", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "address" }], + "name": "pendingOwner", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "pending", "internalType": "uint256" }], + "name": "pendingTokens", + "inputs": [{ "type": "address", "name": "_user", "internalType": "address" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "uint256", "name": "accTokenPerShare", "internalType": "uint256" }, + { "type": "uint256", "name": "lastRewardTimestamp", "internalType": "uint256" } + ], + "name": "poolInfo", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "contract IERC20" }], + "name": "rewardToken", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "setRewardRate", + "inputs": [{ "type": "uint256", "name": "_tokenPerSec", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "tokenPerSec", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "transferOwnership", + "inputs": [ + { "type": "address", "name": "newOwner", "internalType": "address" }, + { "type": "bool", "name": "direct", "internalType": "bool" }, + { "type": "bool", "name": "renounce", "internalType": "bool" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [ + { + "type": "tuple", + "name": "pool", + "internalType": "struct SimpleRewarderPerSec.PoolInfo", + "components": [ + { "type": "uint256", "name": "accTokenPerShare", "internalType": "uint256" }, + { "type": "uint256", "name": "lastRewardTimestamp", "internalType": "uint256" } + ] + } + ], + "name": "updatePool", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "uint256", "name": "amount", "internalType": "uint256" }, + { "type": "uint256", "name": "rewardDebt", "internalType": "uint256" } + ], + "name": "userInfo", + "inputs": [{ "type": "address", "name": "", "internalType": "address" }] + }, + { "type": "receive", "stateMutability": "payable" } +] diff --git a/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-3.json b/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-3.json new file mode 100644 index 000000000..15d118cc8 --- /dev/null +++ b/src/apps/trader-joe/contracts/abis/trader-joe-chef-v-3.json @@ -0,0 +1,264 @@ +[ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { "type": "address", "name": "_MASTER_CHEF_V2", "internalType": "contract IMasterChef" }, + { "type": "address", "name": "_joe", "internalType": "contract IERC20" }, + { "type": "uint256", "name": "_MASTER_PID", "internalType": "uint256" } + ] + }, + { + "type": "event", + "name": "Add", + "inputs": [ + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "allocPoint", "internalType": "uint256", "indexed": false }, + { "type": "address", "name": "lpToken", "internalType": "contract IERC20", "indexed": true }, + { "type": "address", "name": "rewarder", "internalType": "contract IRewarder", "indexed": true } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Deposit", + "inputs": [ + { "type": "address", "name": "user", "internalType": "address", "indexed": true }, + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "amount", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EmergencyWithdraw", + "inputs": [ + { "type": "address", "name": "user", "internalType": "address", "indexed": true }, + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "amount", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Harvest", + "inputs": [ + { "type": "address", "name": "user", "internalType": "address", "indexed": true }, + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "amount", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { "type": "event", "name": "Init", "inputs": [], "anonymous": false }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { "type": "address", "name": "previousOwner", "internalType": "address", "indexed": true }, + { "type": "address", "name": "newOwner", "internalType": "address", "indexed": true } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Set", + "inputs": [ + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "allocPoint", "internalType": "uint256", "indexed": false }, + { "type": "address", "name": "rewarder", "internalType": "contract IRewarder", "indexed": true }, + { "type": "bool", "name": "overwrite", "internalType": "bool", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UpdatePool", + "inputs": [ + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "lastRewardTimestamp", "internalType": "uint256", "indexed": false }, + { "type": "uint256", "name": "lpSupply", "internalType": "uint256", "indexed": false }, + { "type": "uint256", "name": "accJoePerShare", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Withdraw", + "inputs": [ + { "type": "address", "name": "user", "internalType": "address", "indexed": true }, + { "type": "uint256", "name": "pid", "internalType": "uint256", "indexed": true }, + { "type": "uint256", "name": "amount", "internalType": "uint256", "indexed": false } + ], + "anonymous": false + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "contract IERC20" }], + "name": "JOE", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "contract IMasterChef" }], + "name": "MASTER_CHEF_V2", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "MASTER_PID", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "add", + "inputs": [ + { "type": "uint256", "name": "allocPoint", "internalType": "uint256" }, + { "type": "address", "name": "_lpToken", "internalType": "contract IERC20" }, + { "type": "address", "name": "_rewarder", "internalType": "contract IRewarder" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "deposit", + "inputs": [ + { "type": "uint256", "name": "pid", "internalType": "uint256" }, + { "type": "uint256", "name": "amount", "internalType": "uint256" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "emergencyWithdraw", + "inputs": [{ "type": "uint256", "name": "pid", "internalType": "uint256" }] + }, + { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "harvestFromMasterChef", "inputs": [] }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "init", + "inputs": [{ "type": "address", "name": "dummyToken", "internalType": "contract IERC20" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "amount", "internalType": "uint256" }], + "name": "joePerSec", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "massUpdatePools", + "inputs": [{ "type": "uint256[]", "name": "pids", "internalType": "uint256[]" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "address", "name": "", "internalType": "address" }], + "name": "owner", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "uint256", "name": "pendingJoe", "internalType": "uint256" }, + { "type": "address", "name": "bonusTokenAddress", "internalType": "address" }, + { "type": "string", "name": "bonusTokenSymbol", "internalType": "string" }, + { "type": "uint256", "name": "pendingBonusToken", "internalType": "uint256" } + ], + "name": "pendingTokens", + "inputs": [ + { "type": "uint256", "name": "_pid", "internalType": "uint256" }, + { "type": "address", "name": "_user", "internalType": "address" } + ] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "address", "name": "lpToken", "internalType": "contract IERC20" }, + { "type": "uint256", "name": "accJoePerShare", "internalType": "uint256" }, + { "type": "uint256", "name": "lastRewardTimestamp", "internalType": "uint256" }, + { "type": "uint256", "name": "allocPoint", "internalType": "uint256" }, + { "type": "address", "name": "rewarder", "internalType": "contract IRewarder" } + ], + "name": "poolInfo", + "inputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "pools", "internalType": "uint256" }], + "name": "poolLength", + "inputs": [] + }, + { "type": "function", "stateMutability": "nonpayable", "outputs": [], "name": "renounceOwnership", "inputs": [] }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "set", + "inputs": [ + { "type": "uint256", "name": "_pid", "internalType": "uint256" }, + { "type": "uint256", "name": "_allocPoint", "internalType": "uint256" }, + { "type": "address", "name": "_rewarder", "internalType": "contract IRewarder" }, + { "type": "bool", "name": "overwrite", "internalType": "bool" } + ] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [{ "type": "uint256", "name": "", "internalType": "uint256" }], + "name": "totalAllocPoint", + "inputs": [] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "transferOwnership", + "inputs": [{ "type": "address", "name": "newOwner", "internalType": "address" }] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "updatePool", + "inputs": [{ "type": "uint256", "name": "pid", "internalType": "uint256" }] + }, + { + "type": "function", + "stateMutability": "view", + "outputs": [ + { "type": "uint256", "name": "amount", "internalType": "uint256" }, + { "type": "uint256", "name": "rewardDebt", "internalType": "uint256" } + ], + "name": "userInfo", + "inputs": [ + { "type": "uint256", "name": "", "internalType": "uint256" }, + { "type": "address", "name": "", "internalType": "address" } + ] + }, + { + "type": "function", + "stateMutability": "nonpayable", + "outputs": [], + "name": "withdraw", + "inputs": [ + { "type": "uint256", "name": "pid", "internalType": "uint256" }, + { "type": "uint256", "name": "amount", "internalType": "uint256" } + ] + } +] diff --git a/src/apps/trader-joe/contracts/abis/trader-joe-stable-staking.json b/src/apps/trader-joe/contracts/abis/trader-joe-stable-staking.json new file mode 100644 index 000000000..85614aac8 --- /dev/null +++ b/src/apps/trader-joe/contracts/abis/trader-joe-stable-staking.json @@ -0,0 +1,240 @@ +[ + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "rewardToken", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "ClaimReward", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256", "name": "newFee", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "oldFee", "type": "uint256" } + ], + "name": "DepositFeeChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { "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": false, "internalType": "address", "name": "token", "type": "address" }], + "name": "RewardTokenAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "token", "type": "address" }], + "name": "RewardTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "ACC_REWARD_PER_SHARE_PRECISION", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEPOSIT_FEE_PERCENT_PRECISION", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "contract IERC20Upgradeable", "name": "", "type": "address" }], + "name": "accRewardPerShare", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "contract IERC20Upgradeable", "name": "_rewardToken", "type": "address" }], + "name": "addRewardToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_amount", "type": "uint256" }], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "depositFeePercent", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "emergencyWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "feeCollector", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_user", "type": "address" }, + { "internalType": "contract IERC20Upgradeable", "name": "_rewardToken", "type": "address" } + ], + "name": "getUserInfo", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "contract IERC20Upgradeable", "name": "_rewardToken", "type": "address" }, + { "internalType": "contract IERC20Upgradeable", "name": "_joe", "type": "address" }, + { "internalType": "address", "name": "_feeCollector", "type": "address" }, + { "internalType": "uint256", "name": "_depositFeePercent", "type": "uint256" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "internalJoeBalance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "contract IERC20Upgradeable", "name": "", "type": "address" }], + "name": "isRewardToken", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "joe", + "outputs": [{ "internalType": "contract IERC20Upgradeable", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "contract IERC20Upgradeable", "name": "", "type": "address" }], + "name": "lastRewardBalance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_user", "type": "address" }, + { "internalType": "contract IERC20Upgradeable", "name": "_token", "type": "address" } + ], + "name": "pendingReward", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "contract IERC20Upgradeable", "name": "_rewardToken", "type": "address" }], + "name": "removeRewardToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "name": "rewardTokens", + "outputs": [{ "internalType": "contract IERC20Upgradeable", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardTokensLength", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_depositFeePercent", "type": "uint256" }], + "name": "setDepositFeePercent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "contract IERC20Upgradeable", "name": "_token", "type": "address" }], + "name": "updateReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_amount", "type": "uint256" }], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/trader-joe/contracts/abis/trader-joe-ve-joe-staking.json b/src/apps/trader-joe/contracts/abis/trader-joe-ve-joe-staking.json new file mode 100644 index 000000000..b9c6266a9 --- /dev/null +++ b/src/apps/trader-joe/contracts/abis/trader-joe-ve-joe-staking.json @@ -0,0 +1,252 @@ +[ + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "Claim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "Deposit", + "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": false, "internalType": "uint256", "name": "maxCapPct", "type": "uint256" } + ], + "name": "UpdateMaxCapPct", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256", "name": "lastRewardTimestamp", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "accVeJoePerShare", "type": "uint256" } + ], + "name": "UpdateRewardVars", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "speedUpThreshold", "type": "uint256" } + ], + "name": "UpdateSpeedUpThreshold", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "veJoePerSharePerSec", "type": "uint256" } + ], + "name": "UpdateVeJoePerSharePerSec", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "withdrawAmount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "burnAmount", "type": "uint256" } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "ACC_VEJOE_PER_SHARE_PRECISION", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VEJOE_PER_SHARE_PER_SEC_PRECISION", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "accVeJoePerShare", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "claim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "uint256", "name": "_amount", "type": "uint256" }], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "_user", "type": "address" }], + "name": "getPendingVeJoe", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "contract IERC20Upgradeable", "name": "_joe", "type": "address" }, + { "internalType": "contract VeJoeToken", "name": "_veJoe", "type": "address" }, + { "internalType": "uint256", "name": "_veJoePerSharePerSec", "type": "uint256" }, + { "internalType": "uint256", "name": "_speedUpVeJoePerSharePerSec", "type": "uint256" }, + { "internalType": "uint256", "name": "_speedUpThreshold", "type": "uint256" }, + { "internalType": "uint256", "name": "_speedUpDuration", "type": "uint256" }, + { "internalType": "uint256", "name": "_maxCapPct", "type": "uint256" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "joe", + "outputs": [{ "internalType": "contract IERC20Upgradeable", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastRewardTimestamp", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxCapPct", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "uint256", "name": "_maxCapPct", "type": "uint256" }], + "name": "setMaxCapPct", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_speedUpThreshold", "type": "uint256" }], + "name": "setSpeedUpThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_veJoePerSharePerSec", "type": "uint256" }], + "name": "setVeJoePerSharePerSec", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "speedUpDuration", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "speedUpThreshold", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "speedUpVeJoePerSharePerSec", + "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": [], "name": "updateRewardVars", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "upperLimitMaxCapPct", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "upperLimitVeJoePerSharePerSec", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "", "type": "address" }], + "name": "userInfos", + "outputs": [ + { "internalType": "uint256", "name": "balance", "type": "uint256" }, + { "internalType": "uint256", "name": "rewardDebt", "type": "uint256" }, + { "internalType": "uint256", "name": "lastClaimTimestamp", "type": "uint256" }, + { "internalType": "uint256", "name": "speedUpEndTimestamp", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "veJoe", + "outputs": [{ "internalType": "contract VeJoeToken", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "veJoePerSharePerSec", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_amount", "type": "uint256" }], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/trader-joe/contracts/ethers/TraderJoeChefBoosted.ts b/src/apps/trader-joe/contracts/ethers/TraderJoeChefBoosted.ts new file mode 100644 index 000000000..7e73c30fe --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/TraderJoeChefBoosted.ts @@ -0,0 +1,896 @@ +/* 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 TraderJoeChefBoostedInterface extends utils.Interface { + functions: { + 'JOE()': FunctionFragment; + 'MASTER_CHEF_V2()': FunctionFragment; + 'MASTER_PID()': FunctionFragment; + 'VEJOE()': FunctionFragment; + 'add(uint96,uint32,address,address)': FunctionFragment; + 'claimableJoe(uint256,address)': FunctionFragment; + 'deposit(uint256,uint256)': FunctionFragment; + 'emergencyWithdraw(uint256)': FunctionFragment; + 'harvestFromMasterChef()': FunctionFragment; + 'init(address)': FunctionFragment; + 'initialize(address,address,address,uint256)': FunctionFragment; + 'joePerSec()': FunctionFragment; + 'massUpdatePools()': FunctionFragment; + 'owner()': FunctionFragment; + 'pendingTokens(uint256,address)': FunctionFragment; + 'poolInfo(uint256)': FunctionFragment; + 'poolLength()': FunctionFragment; + 'renounceOwnership()': FunctionFragment; + 'set(uint256,uint96,uint32,address,bool)': FunctionFragment; + 'totalAllocPoint()': FunctionFragment; + 'transferOwnership(address)': FunctionFragment; + 'updateFactor(address,uint256)': FunctionFragment; + 'updatePool(uint256)': FunctionFragment; + 'userInfo(uint256,address)': FunctionFragment; + 'withdraw(uint256,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'JOE' + | 'MASTER_CHEF_V2' + | 'MASTER_PID' + | 'VEJOE' + | 'add' + | 'claimableJoe' + | 'deposit' + | 'emergencyWithdraw' + | 'harvestFromMasterChef' + | 'init' + | 'initialize' + | 'joePerSec' + | 'massUpdatePools' + | 'owner' + | 'pendingTokens' + | 'poolInfo' + | 'poolLength' + | 'renounceOwnership' + | 'set' + | 'totalAllocPoint' + | 'transferOwnership' + | 'updateFactor' + | 'updatePool' + | 'userInfo' + | 'withdraw', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'JOE', values?: undefined): string; + encodeFunctionData(functionFragment: 'MASTER_CHEF_V2', values?: undefined): string; + encodeFunctionData(functionFragment: 'MASTER_PID', values?: undefined): string; + encodeFunctionData(functionFragment: 'VEJOE', values?: undefined): string; + encodeFunctionData(functionFragment: 'add', values: [BigNumberish, BigNumberish, string, string]): string; + encodeFunctionData(functionFragment: 'claimableJoe', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'deposit', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'emergencyWithdraw', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'harvestFromMasterChef', values?: undefined): string; + encodeFunctionData(functionFragment: 'init', values: [string]): string; + encodeFunctionData(functionFragment: 'initialize', values: [string, string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'joePerSec', values?: undefined): string; + encodeFunctionData(functionFragment: 'massUpdatePools', values?: undefined): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingTokens', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'poolInfo', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'poolLength', values?: undefined): string; + encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string; + encodeFunctionData( + functionFragment: 'set', + values: [BigNumberish, BigNumberish, BigNumberish, string, boolean], + ): string; + encodeFunctionData(functionFragment: 'totalAllocPoint', values?: undefined): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string]): string; + encodeFunctionData(functionFragment: 'updateFactor', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'updatePool', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'userInfo', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'withdraw', values: [BigNumberish, BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'JOE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MASTER_CHEF_V2', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MASTER_PID', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'VEJOE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'add', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'claimableJoe', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'emergencyWithdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'harvestFromMasterChef', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'init', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'joePerSec', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'massUpdatePools', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingTokens', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'poolInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'poolLength', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'set', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalAllocPoint', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updateFactor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updatePool', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + + events: { + 'Add(uint256,uint256,uint256,address,address)': EventFragment; + 'Deposit(address,uint256,uint256)': EventFragment; + 'EmergencyWithdraw(address,uint256,uint256)': EventFragment; + 'Harvest(address,uint256,uint256)': EventFragment; + 'Init(uint256)': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'Set(uint256,uint256,uint256,address,bool)': EventFragment; + 'UpdatePool(uint256,uint256,uint256,uint256,uint256)': EventFragment; + 'Withdraw(address,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Add'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'EmergencyWithdraw'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Harvest'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Init'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Set'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'UpdatePool'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdraw'): EventFragment; +} + +export interface AddEventObject { + pid: BigNumber; + allocPoint: BigNumber; + veJoeShareBp: BigNumber; + lpToken: string; + rewarder: string; +} +export type AddEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, string, string], AddEventObject>; + +export type AddEventFilter = TypedEventFilter; + +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 HarvestEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; +} +export type HarvestEvent = TypedEvent<[string, BigNumber, BigNumber], HarvestEventObject>; + +export type HarvestEventFilter = TypedEventFilter; + +export interface InitEventObject { + amount: BigNumber; +} +export type InitEvent = TypedEvent<[BigNumber], InitEventObject>; + +export type InitEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface SetEventObject { + pid: BigNumber; + allocPoint: BigNumber; + veJoeShareBp: BigNumber; + rewarder: string; + overwrite: boolean; +} +export type SetEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, string, boolean], SetEventObject>; + +export type SetEventFilter = TypedEventFilter; + +export interface UpdatePoolEventObject { + pid: BigNumber; + lastRewardTimestamp: BigNumber; + lpSupply: BigNumber; + accJoePerShare: BigNumber; + accJoePerFactorPerShare: BigNumber; +} +export type UpdatePoolEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber], + UpdatePoolEventObject +>; + +export type UpdatePoolEventFilter = TypedEventFilter; + +export interface WithdrawEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; +} +export type WithdrawEvent = TypedEvent<[string, BigNumber, BigNumber], WithdrawEventObject>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface TraderJoeChefBoosted extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TraderJoeChefBoostedInterface; + + 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: { + JOE(overrides?: CallOverrides): Promise<[string]>; + + MASTER_CHEF_V2(overrides?: CallOverrides): Promise<[string]>; + + MASTER_PID(overrides?: CallOverrides): Promise<[BigNumber]>; + + VEJOE(overrides?: CallOverrides): Promise<[string]>; + + add( + _allocPoint: BigNumberish, + _veJoeShareBp: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claimableJoe(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestFromMasterChef(overrides?: Overrides & { from?: string | Promise }): Promise; + + init( + _dummyToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + initialize( + _MASTER_CHEF_V2: string, + _joe: string, + _veJoe: string, + _MASTER_PID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + joePerSec(overrides?: CallOverrides): Promise<[BigNumber] & { amount: BigNumber }>; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pendingTokens( + _pid: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, string, string, BigNumber] & { + pendingJoe: BigNumber; + bonusTokenAddress: string; + bonusTokenSymbol: string; + pendingBonusToken: BigNumber; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, BigNumber, string, number, BigNumber, BigNumber] & { + lpToken: string; + allocPoint: BigNumber; + accJoePerShare: BigNumber; + accJoePerFactorPerShare: BigNumber; + lastRewardTimestamp: BigNumber; + rewarder: string; + veJoeShareBp: number; + totalFactor: BigNumber; + totalLpSupply: BigNumber; + } + >; + + poolLength(overrides?: CallOverrides): Promise<[BigNumber] & { pools: BigNumber }>; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _veJoeShareBp: BigNumberish, + _rewarder: string, + _overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise<[BigNumber]>; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateFactor( + _user: string, + _newVeJoeBalance: BigNumberish, + 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, BigNumber] & { + amount: BigNumber; + rewardDebt: BigNumber; + factor: BigNumber; + } + >; + + withdraw( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + JOE(overrides?: CallOverrides): Promise; + + MASTER_CHEF_V2(overrides?: CallOverrides): Promise; + + MASTER_PID(overrides?: CallOverrides): Promise; + + VEJOE(overrides?: CallOverrides): Promise; + + add( + _allocPoint: BigNumberish, + _veJoeShareBp: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claimableJoe(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestFromMasterChef(overrides?: Overrides & { from?: string | Promise }): Promise; + + init(_dummyToken: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + initialize( + _MASTER_CHEF_V2: string, + _joe: string, + _veJoe: string, + _MASTER_PID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens( + _pid: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, string, string, BigNumber] & { + pendingJoe: BigNumber; + bonusTokenAddress: string; + bonusTokenSymbol: string; + pendingBonusToken: BigNumber; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, BigNumber, string, number, BigNumber, BigNumber] & { + lpToken: string; + allocPoint: BigNumber; + accJoePerShare: BigNumber; + accJoePerFactorPerShare: BigNumber; + lastRewardTimestamp: BigNumber; + rewarder: string; + veJoeShareBp: number; + totalFactor: BigNumber; + totalLpSupply: BigNumber; + } + >; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _veJoeShareBp: BigNumberish, + _rewarder: string, + _overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateFactor( + _user: string, + _newVeJoeBalance: BigNumberish, + 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, BigNumber] & { + amount: BigNumber; + rewardDebt: BigNumber; + factor: BigNumber; + } + >; + + withdraw( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + JOE(overrides?: CallOverrides): Promise; + + MASTER_CHEF_V2(overrides?: CallOverrides): Promise; + + MASTER_PID(overrides?: CallOverrides): Promise; + + VEJOE(overrides?: CallOverrides): Promise; + + add( + _allocPoint: BigNumberish, + _veJoeShareBp: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: CallOverrides, + ): Promise; + + claimableJoe(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise; + + deposit(_pid: BigNumberish, _amount: BigNumberish, overrides?: CallOverrides): Promise; + + emergencyWithdraw(_pid: BigNumberish, overrides?: CallOverrides): Promise; + + harvestFromMasterChef(overrides?: CallOverrides): Promise; + + init(_dummyToken: string, overrides?: CallOverrides): Promise; + + initialize( + _MASTER_CHEF_V2: string, + _joe: string, + _veJoe: string, + _MASTER_PID: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens( + _pid: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, string, string, BigNumber] & { + pendingJoe: BigNumber; + bonusTokenAddress: string; + bonusTokenSymbol: string; + pendingBonusToken: BigNumber; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, BigNumber, string, number, BigNumber, BigNumber] & { + lpToken: string; + allocPoint: BigNumber; + accJoePerShare: BigNumber; + accJoePerFactorPerShare: BigNumber; + lastRewardTimestamp: BigNumber; + rewarder: string; + veJoeShareBp: number; + totalFactor: BigNumber; + totalLpSupply: BigNumber; + } + >; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _veJoeShareBp: BigNumberish, + _rewarder: string, + _overwrite: boolean, + overrides?: CallOverrides, + ): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, overrides?: CallOverrides): Promise; + + updateFactor(_user: string, _newVeJoeBalance: BigNumberish, overrides?: CallOverrides): Promise; + + updatePool(_pid: BigNumberish, overrides?: CallOverrides): Promise; + + userInfo( + arg0: BigNumberish, + arg1: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + amount: BigNumber; + rewardDebt: BigNumber; + factor: BigNumber; + } + >; + + withdraw(_pid: BigNumberish, _amount: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + 'Add(uint256,uint256,uint256,address,address)'( + pid?: BigNumberish | null, + allocPoint?: null, + veJoeShareBp?: null, + lpToken?: string | null, + rewarder?: string | null, + ): AddEventFilter; + Add( + pid?: BigNumberish | null, + allocPoint?: null, + veJoeShareBp?: null, + lpToken?: string | null, + rewarder?: string | null, + ): AddEventFilter; + + '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; + + 'Harvest(address,uint256,uint256)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + ): HarvestEventFilter; + Harvest(user?: string | null, pid?: BigNumberish | null, amount?: null): HarvestEventFilter; + + 'Init(uint256)'(amount?: null): InitEventFilter; + Init(amount?: null): InitEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'Set(uint256,uint256,uint256,address,bool)'( + pid?: BigNumberish | null, + allocPoint?: null, + veJoeShareBp?: null, + rewarder?: string | null, + overwrite?: null, + ): SetEventFilter; + Set( + pid?: BigNumberish | null, + allocPoint?: null, + veJoeShareBp?: null, + rewarder?: string | null, + overwrite?: null, + ): SetEventFilter; + + 'UpdatePool(uint256,uint256,uint256,uint256,uint256)'( + pid?: BigNumberish | null, + lastRewardTimestamp?: null, + lpSupply?: null, + accJoePerShare?: null, + accJoePerFactorPerShare?: null, + ): UpdatePoolEventFilter; + UpdatePool( + pid?: BigNumberish | null, + lastRewardTimestamp?: null, + lpSupply?: null, + accJoePerShare?: null, + accJoePerFactorPerShare?: null, + ): UpdatePoolEventFilter; + + 'Withdraw(address,uint256,uint256)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + ): WithdrawEventFilter; + Withdraw(user?: string | null, pid?: BigNumberish | null, amount?: null): WithdrawEventFilter; + }; + + estimateGas: { + JOE(overrides?: CallOverrides): Promise; + + MASTER_CHEF_V2(overrides?: CallOverrides): Promise; + + MASTER_PID(overrides?: CallOverrides): Promise; + + VEJOE(overrides?: CallOverrides): Promise; + + add( + _allocPoint: BigNumberish, + _veJoeShareBp: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claimableJoe(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestFromMasterChef(overrides?: Overrides & { from?: string | Promise }): Promise; + + init(_dummyToken: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + initialize( + _MASTER_CHEF_V2: string, + _joe: string, + _veJoe: string, + _MASTER_PID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _veJoeShareBp: BigNumberish, + _rewarder: string, + _overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateFactor( + _user: string, + _newVeJoeBalance: BigNumberish, + 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: { + JOE(overrides?: CallOverrides): Promise; + + MASTER_CHEF_V2(overrides?: CallOverrides): Promise; + + MASTER_PID(overrides?: CallOverrides): Promise; + + VEJOE(overrides?: CallOverrides): Promise; + + add( + _allocPoint: BigNumberish, + _veJoeShareBp: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claimableJoe(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestFromMasterChef(overrides?: Overrides & { from?: string | Promise }): Promise; + + init( + _dummyToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + initialize( + _MASTER_CHEF_V2: string, + _joe: string, + _veJoe: string, + _MASTER_PID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _veJoeShareBp: BigNumberish, + _rewarder: string, + _overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateFactor( + _user: string, + _newVeJoeBalance: BigNumberish, + 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/trader-joe/contracts/ethers/TraderJoeChefV2.ts b/src/apps/trader-joe/contracts/ethers/TraderJoeChefV2.ts new file mode 100644 index 000000000..0b73c4982 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/TraderJoeChefV2.ts @@ -0,0 +1,972 @@ +/* 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 TraderJoeChefV2Interface extends utils.Interface { + functions: { + 'add(uint256,address,address)': FunctionFragment; + 'deposit(uint256,uint256)': FunctionFragment; + 'dev(address)': FunctionFragment; + 'devAddr()': FunctionFragment; + 'devPercent()': FunctionFragment; + 'emergencyWithdraw(uint256)': FunctionFragment; + 'investorAddr()': FunctionFragment; + 'investorPercent()': FunctionFragment; + 'joe()': FunctionFragment; + 'joePerSec()': FunctionFragment; + 'massUpdatePools()': FunctionFragment; + 'owner()': FunctionFragment; + 'pendingTokens(uint256,address)': FunctionFragment; + 'poolInfo(uint256)': FunctionFragment; + 'poolLength()': FunctionFragment; + 'renounceOwnership()': FunctionFragment; + 'rewarderBonusTokenInfo(uint256)': FunctionFragment; + 'set(uint256,uint256,address,bool)': FunctionFragment; + 'setDevPercent(uint256)': FunctionFragment; + 'setInvestorAddr(address)': FunctionFragment; + 'setInvestorPercent(uint256)': FunctionFragment; + 'setTreasuryAddr(address)': FunctionFragment; + 'setTreasuryPercent(uint256)': FunctionFragment; + 'startTimestamp()': FunctionFragment; + 'totalAllocPoint()': FunctionFragment; + 'transferOwnership(address)': FunctionFragment; + 'treasuryAddr()': FunctionFragment; + 'treasuryPercent()': FunctionFragment; + 'updateEmissionRate(uint256)': FunctionFragment; + 'updatePool(uint256)': FunctionFragment; + 'userInfo(uint256,address)': FunctionFragment; + 'withdraw(uint256,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'add' + | 'deposit' + | 'dev' + | 'devAddr' + | 'devPercent' + | 'emergencyWithdraw' + | 'investorAddr' + | 'investorPercent' + | 'joe' + | 'joePerSec' + | 'massUpdatePools' + | 'owner' + | 'pendingTokens' + | 'poolInfo' + | 'poolLength' + | 'renounceOwnership' + | 'rewarderBonusTokenInfo' + | 'set' + | 'setDevPercent' + | 'setInvestorAddr' + | 'setInvestorPercent' + | 'setTreasuryAddr' + | 'setTreasuryPercent' + | 'startTimestamp' + | 'totalAllocPoint' + | 'transferOwnership' + | 'treasuryAddr' + | 'treasuryPercent' + | 'updateEmissionRate' + | 'updatePool' + | 'userInfo' + | 'withdraw', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'add', values: [BigNumberish, string, string]): string; + encodeFunctionData(functionFragment: 'deposit', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'dev', values: [string]): string; + encodeFunctionData(functionFragment: 'devAddr', values?: undefined): string; + encodeFunctionData(functionFragment: 'devPercent', values?: undefined): string; + encodeFunctionData(functionFragment: 'emergencyWithdraw', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'investorAddr', values?: undefined): string; + encodeFunctionData(functionFragment: 'investorPercent', values?: undefined): string; + encodeFunctionData(functionFragment: 'joe', values?: undefined): string; + encodeFunctionData(functionFragment: 'joePerSec', values?: undefined): string; + encodeFunctionData(functionFragment: 'massUpdatePools', values?: undefined): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingTokens', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'poolInfo', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'poolLength', values?: undefined): string; + encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewarderBonusTokenInfo', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'set', values: [BigNumberish, BigNumberish, string, boolean]): string; + encodeFunctionData(functionFragment: 'setDevPercent', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setInvestorAddr', values: [string]): string; + encodeFunctionData(functionFragment: 'setInvestorPercent', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setTreasuryAddr', values: [string]): string; + encodeFunctionData(functionFragment: 'setTreasuryPercent', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'startTimestamp', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalAllocPoint', values?: undefined): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string]): string; + encodeFunctionData(functionFragment: 'treasuryAddr', values?: undefined): string; + encodeFunctionData(functionFragment: 'treasuryPercent', values?: undefined): string; + encodeFunctionData(functionFragment: 'updateEmissionRate', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'updatePool', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'userInfo', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'withdraw', values: [BigNumberish, BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'add', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'dev', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'devAddr', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'devPercent', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'emergencyWithdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'investorAddr', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'investorPercent', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'joe', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'joePerSec', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'massUpdatePools', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingTokens', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'poolInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'poolLength', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewarderBonusTokenInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'set', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setDevPercent', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setInvestorAddr', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setInvestorPercent', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setTreasuryAddr', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setTreasuryPercent', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'startTimestamp', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalAllocPoint', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'treasuryAddr', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'treasuryPercent', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updateEmissionRate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updatePool', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + + events: { + 'Add(uint256,uint256,address,address)': EventFragment; + 'Deposit(address,uint256,uint256)': EventFragment; + 'EmergencyWithdraw(address,uint256,uint256)': EventFragment; + 'Harvest(address,uint256,uint256)': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'Set(uint256,uint256,address,bool)': EventFragment; + 'SetDevAddress(address,address)': EventFragment; + 'UpdateEmissionRate(address,uint256)': EventFragment; + 'UpdatePool(uint256,uint256,uint256,uint256)': EventFragment; + 'Withdraw(address,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Add'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'EmergencyWithdraw'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Harvest'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Set'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'SetDevAddress'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'UpdateEmissionRate'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'UpdatePool'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdraw'): EventFragment; +} + +export interface AddEventObject { + pid: BigNumber; + allocPoint: BigNumber; + lpToken: string; + rewarder: string; +} +export type AddEvent = TypedEvent<[BigNumber, BigNumber, string, string], AddEventObject>; + +export type AddEventFilter = TypedEventFilter; + +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 HarvestEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; +} +export type HarvestEvent = TypedEvent<[string, BigNumber, BigNumber], HarvestEventObject>; + +export type HarvestEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface SetEventObject { + pid: BigNumber; + allocPoint: BigNumber; + rewarder: string; + overwrite: boolean; +} +export type SetEvent = TypedEvent<[BigNumber, BigNumber, string, boolean], SetEventObject>; + +export type SetEventFilter = TypedEventFilter; + +export interface SetDevAddressEventObject { + oldAddress: string; + newAddress: string; +} +export type SetDevAddressEvent = TypedEvent<[string, string], SetDevAddressEventObject>; + +export type SetDevAddressEventFilter = TypedEventFilter; + +export interface UpdateEmissionRateEventObject { + user: string; + _joePerSec: BigNumber; +} +export type UpdateEmissionRateEvent = TypedEvent<[string, BigNumber], UpdateEmissionRateEventObject>; + +export type UpdateEmissionRateEventFilter = TypedEventFilter; + +export interface UpdatePoolEventObject { + pid: BigNumber; + lastRewardTimestamp: BigNumber; + lpSupply: BigNumber; + accJoePerShare: BigNumber; +} +export type UpdatePoolEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, BigNumber], UpdatePoolEventObject>; + +export type UpdatePoolEventFilter = TypedEventFilter; + +export interface WithdrawEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; +} +export type WithdrawEvent = TypedEvent<[string, BigNumber, BigNumber], WithdrawEventObject>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface TraderJoeChefV2 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TraderJoeChefV2Interface; + + 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: { + add( + _allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dev(_devAddr: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + devAddr(overrides?: CallOverrides): Promise<[string]>; + + devPercent(overrides?: CallOverrides): Promise<[BigNumber]>; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + investorAddr(overrides?: CallOverrides): Promise<[string]>; + + investorPercent(overrides?: CallOverrides): Promise<[BigNumber]>; + + joe(overrides?: CallOverrides): Promise<[string]>; + + joePerSec(overrides?: CallOverrides): Promise<[BigNumber]>; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pendingTokens( + _pid: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, string, string, BigNumber] & { + pendingJoe: BigNumber; + bonusTokenAddress: string; + bonusTokenSymbol: string; + pendingBonusToken: BigNumber; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, string] & { + lpToken: string; + allocPoint: BigNumber; + lastRewardTimestamp: BigNumber; + accJoePerShare: BigNumber; + rewarder: string; + } + >; + + poolLength(overrides?: CallOverrides): Promise<[BigNumber]>; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewarderBonusTokenInfo( + _pid: BigNumberish, + overrides?: CallOverrides, + ): Promise<[string, string] & { bonusTokenAddress: string; bonusTokenSymbol: string }>; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setDevPercent( + _newDevPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setInvestorAddr( + _investorAddr: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setInvestorPercent( + _newInvestorPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTreasuryAddr( + _treasuryAddr: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTreasuryPercent( + _newTreasuryPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startTimestamp(overrides?: CallOverrides): Promise<[BigNumber]>; + + totalAllocPoint(overrides?: CallOverrides): Promise<[BigNumber]>; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + treasuryAddr(overrides?: CallOverrides): Promise<[string]>; + + treasuryPercent(overrides?: CallOverrides): Promise<[BigNumber]>; + + updateEmissionRate( + _joePerSec: BigNumberish, + 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; + }; + + add( + _allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dev(_devAddr: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + devAddr(overrides?: CallOverrides): Promise; + + devPercent(overrides?: CallOverrides): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + investorAddr(overrides?: CallOverrides): Promise; + + investorPercent(overrides?: CallOverrides): Promise; + + joe(overrides?: CallOverrides): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens( + _pid: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, string, string, BigNumber] & { + pendingJoe: BigNumber; + bonusTokenAddress: string; + bonusTokenSymbol: string; + pendingBonusToken: BigNumber; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, string] & { + lpToken: string; + allocPoint: BigNumber; + lastRewardTimestamp: BigNumber; + accJoePerShare: BigNumber; + rewarder: string; + } + >; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewarderBonusTokenInfo( + _pid: BigNumberish, + overrides?: CallOverrides, + ): Promise<[string, string] & { bonusTokenAddress: string; bonusTokenSymbol: string }>; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setDevPercent( + _newDevPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setInvestorAddr( + _investorAddr: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setInvestorPercent( + _newInvestorPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTreasuryAddr( + _treasuryAddr: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTreasuryPercent( + _newTreasuryPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startTimestamp(overrides?: CallOverrides): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + treasuryAddr(overrides?: CallOverrides): Promise; + + treasuryPercent(overrides?: CallOverrides): Promise; + + updateEmissionRate( + _joePerSec: BigNumberish, + 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: { + add(_allocPoint: BigNumberish, _lpToken: string, _rewarder: string, overrides?: CallOverrides): Promise; + + deposit(_pid: BigNumberish, _amount: BigNumberish, overrides?: CallOverrides): Promise; + + dev(_devAddr: string, overrides?: CallOverrides): Promise; + + devAddr(overrides?: CallOverrides): Promise; + + devPercent(overrides?: CallOverrides): Promise; + + emergencyWithdraw(_pid: BigNumberish, overrides?: CallOverrides): Promise; + + investorAddr(overrides?: CallOverrides): Promise; + + investorPercent(overrides?: CallOverrides): Promise; + + joe(overrides?: CallOverrides): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens( + _pid: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, string, string, BigNumber] & { + pendingJoe: BigNumber; + bonusTokenAddress: string; + bonusTokenSymbol: string; + pendingBonusToken: BigNumber; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, string] & { + lpToken: string; + allocPoint: BigNumber; + lastRewardTimestamp: BigNumber; + accJoePerShare: BigNumber; + rewarder: string; + } + >; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + rewarderBonusTokenInfo( + _pid: BigNumberish, + overrides?: CallOverrides, + ): Promise<[string, string] & { bonusTokenAddress: string; bonusTokenSymbol: string }>; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + overwrite: boolean, + overrides?: CallOverrides, + ): Promise; + + setDevPercent(_newDevPercent: BigNumberish, overrides?: CallOverrides): Promise; + + setInvestorAddr(_investorAddr: string, overrides?: CallOverrides): Promise; + + setInvestorPercent(_newInvestorPercent: BigNumberish, overrides?: CallOverrides): Promise; + + setTreasuryAddr(_treasuryAddr: string, overrides?: CallOverrides): Promise; + + setTreasuryPercent(_newTreasuryPercent: BigNumberish, overrides?: CallOverrides): Promise; + + startTimestamp(overrides?: CallOverrides): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, overrides?: CallOverrides): Promise; + + treasuryAddr(overrides?: CallOverrides): Promise; + + treasuryPercent(overrides?: CallOverrides): Promise; + + updateEmissionRate(_joePerSec: BigNumberish, 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: { + 'Add(uint256,uint256,address,address)'( + pid?: BigNumberish | null, + allocPoint?: null, + lpToken?: string | null, + rewarder?: string | null, + ): AddEventFilter; + Add( + pid?: BigNumberish | null, + allocPoint?: null, + lpToken?: string | null, + rewarder?: string | null, + ): AddEventFilter; + + '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; + + 'Harvest(address,uint256,uint256)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + ): HarvestEventFilter; + Harvest(user?: string | null, pid?: BigNumberish | null, amount?: null): HarvestEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'Set(uint256,uint256,address,bool)'( + pid?: BigNumberish | null, + allocPoint?: null, + rewarder?: string | null, + overwrite?: null, + ): SetEventFilter; + Set(pid?: BigNumberish | null, allocPoint?: null, rewarder?: string | null, overwrite?: null): SetEventFilter; + + 'SetDevAddress(address,address)'(oldAddress?: string | null, newAddress?: string | null): SetDevAddressEventFilter; + SetDevAddress(oldAddress?: string | null, newAddress?: string | null): SetDevAddressEventFilter; + + 'UpdateEmissionRate(address,uint256)'(user?: string | null, _joePerSec?: null): UpdateEmissionRateEventFilter; + UpdateEmissionRate(user?: string | null, _joePerSec?: null): UpdateEmissionRateEventFilter; + + 'UpdatePool(uint256,uint256,uint256,uint256)'( + pid?: BigNumberish | null, + lastRewardTimestamp?: null, + lpSupply?: null, + accJoePerShare?: null, + ): UpdatePoolEventFilter; + UpdatePool( + pid?: BigNumberish | null, + lastRewardTimestamp?: null, + lpSupply?: null, + accJoePerShare?: null, + ): UpdatePoolEventFilter; + + 'Withdraw(address,uint256,uint256)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + ): WithdrawEventFilter; + Withdraw(user?: string | null, pid?: BigNumberish | null, amount?: null): WithdrawEventFilter; + }; + + estimateGas: { + add( + _allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dev(_devAddr: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + devAddr(overrides?: CallOverrides): Promise; + + devPercent(overrides?: CallOverrides): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + investorAddr(overrides?: CallOverrides): Promise; + + investorPercent(overrides?: CallOverrides): Promise; + + joe(overrides?: CallOverrides): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewarderBonusTokenInfo(_pid: BigNumberish, overrides?: CallOverrides): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setDevPercent( + _newDevPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setInvestorAddr( + _investorAddr: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setInvestorPercent( + _newInvestorPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTreasuryAddr( + _treasuryAddr: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTreasuryPercent( + _newTreasuryPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startTimestamp(overrides?: CallOverrides): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + treasuryAddr(overrides?: CallOverrides): Promise; + + treasuryPercent(overrides?: CallOverrides): Promise; + + updateEmissionRate( + _joePerSec: BigNumberish, + 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: { + add( + _allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + _pid: BigNumberish, + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dev(_devAddr: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + devAddr(overrides?: CallOverrides): Promise; + + devPercent(overrides?: CallOverrides): Promise; + + emergencyWithdraw( + _pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + investorAddr(overrides?: CallOverrides): Promise; + + investorPercent(overrides?: CallOverrides): Promise; + + joe(overrides?: CallOverrides): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools(overrides?: Overrides & { from?: string | Promise }): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewarderBonusTokenInfo(_pid: BigNumberish, overrides?: CallOverrides): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setDevPercent( + _newDevPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setInvestorAddr( + _investorAddr: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setInvestorPercent( + _newInvestorPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTreasuryAddr( + _treasuryAddr: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTreasuryPercent( + _newTreasuryPercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startTimestamp(overrides?: CallOverrides): Promise; + + totalAllocPoint(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + treasuryAddr(overrides?: CallOverrides): Promise; + + treasuryPercent(overrides?: CallOverrides): Promise; + + updateEmissionRate( + _joePerSec: BigNumberish, + 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/trader-joe/contracts/ethers/TraderJoeChefV2Rewarder.ts b/src/apps/trader-joe/contracts/ethers/TraderJoeChefV2Rewarder.ts new file mode 100644 index 000000000..e0fa67f58 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/TraderJoeChefV2Rewarder.ts @@ -0,0 +1,580 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + 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 RulerRewarder { + export type PoolInfoStruct = { + accSushiPerShare: BigNumberish; + lastRewardTime: BigNumberish; + }; + + export type PoolInfoStructOutput = [BigNumber, BigNumber] & { + accSushiPerShare: BigNumber; + lastRewardTime: BigNumber; + }; +} + +export interface TraderJoeChefV2RewarderInterface extends utils.Interface { + functions: { + 'MASTERCHEF_V2()': FunctionFragment; + 'claimOwnership()': FunctionFragment; + 'init(bytes)': FunctionFragment; + 'masterLpToken()': FunctionFragment; + 'onSushiReward(uint256,address,address,uint256,uint256)': FunctionFragment; + 'owner()': FunctionFragment; + 'pendingOwner()': FunctionFragment; + 'pendingToken(uint256,address)': FunctionFragment; + 'pendingTokens(uint256,address,uint256)': FunctionFragment; + 'poolInfo(uint256)': FunctionFragment; + 'rewardPerSecond()': FunctionFragment; + 'rewardToken()': FunctionFragment; + 'setRewardPerSecond(uint256)': FunctionFragment; + 'transferOwnership(address,bool,bool)': FunctionFragment; + 'updatePool(uint256)': FunctionFragment; + 'userInfo(uint256,address)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'MASTERCHEF_V2' + | 'claimOwnership' + | 'init' + | 'masterLpToken' + | 'onSushiReward' + | 'owner' + | 'pendingOwner' + | 'pendingToken' + | 'pendingTokens' + | 'poolInfo' + | 'rewardPerSecond' + | 'rewardToken' + | 'setRewardPerSecond' + | 'transferOwnership' + | 'updatePool' + | 'userInfo', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'MASTERCHEF_V2', values?: undefined): string; + encodeFunctionData(functionFragment: 'claimOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'init', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'masterLpToken', values?: undefined): string; + encodeFunctionData( + functionFragment: 'onSushiReward', + values: [BigNumberish, string, string, BigNumberish, BigNumberish], + ): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingOwner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingToken', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'pendingTokens', values: [BigNumberish, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'poolInfo', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'rewardPerSecond', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'setRewardPerSecond', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string, boolean, boolean]): string; + encodeFunctionData(functionFragment: 'updatePool', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'userInfo', values: [BigNumberish, string]): string; + + decodeFunctionResult(functionFragment: 'MASTERCHEF_V2', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'claimOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'init', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'masterLpToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'onSushiReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingOwner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingTokens', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'poolInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardPerSecond', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setRewardPerSecond', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updatePool', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userInfo', data: BytesLike): Result; + + events: { + 'LogInit()': EventFragment; + 'LogOnReward(address,uint256,uint256,address)': EventFragment; + 'LogPoolAddition(uint256,uint256)': EventFragment; + 'LogRewardPerSecond(uint256)': EventFragment; + 'LogSetPool(uint256,uint256)': EventFragment; + 'LogUpdatePool(uint256,uint64,uint256,uint256)': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'LogInit'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LogOnReward'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LogPoolAddition'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LogRewardPerSecond'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LogSetPool'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LogUpdatePool'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; +} + +export interface LogInitEventObject {} +export type LogInitEvent = TypedEvent<[], LogInitEventObject>; + +export type LogInitEventFilter = TypedEventFilter; + +export interface LogOnRewardEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; + to: string; +} +export type LogOnRewardEvent = TypedEvent<[string, BigNumber, BigNumber, string], LogOnRewardEventObject>; + +export type LogOnRewardEventFilter = TypedEventFilter; + +export interface LogPoolAdditionEventObject { + pid: BigNumber; + allocPoint: BigNumber; +} +export type LogPoolAdditionEvent = TypedEvent<[BigNumber, BigNumber], LogPoolAdditionEventObject>; + +export type LogPoolAdditionEventFilter = TypedEventFilter; + +export interface LogRewardPerSecondEventObject { + rewardPerSecond: BigNumber; +} +export type LogRewardPerSecondEvent = TypedEvent<[BigNumber], LogRewardPerSecondEventObject>; + +export type LogRewardPerSecondEventFilter = TypedEventFilter; + +export interface LogSetPoolEventObject { + pid: BigNumber; + allocPoint: BigNumber; +} +export type LogSetPoolEvent = TypedEvent<[BigNumber, BigNumber], LogSetPoolEventObject>; + +export type LogSetPoolEventFilter = TypedEventFilter; + +export interface LogUpdatePoolEventObject { + pid: BigNumber; + lastRewardTime: BigNumber; + lpSupply: BigNumber; + accSushiPerShare: BigNumber; +} +export type LogUpdatePoolEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, BigNumber], LogUpdatePoolEventObject>; + +export type LogUpdatePoolEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface TraderJoeChefV2Rewarder extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TraderJoeChefV2RewarderInterface; + + 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: { + MASTERCHEF_V2(overrides?: CallOverrides): Promise<[string]>; + + claimOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + init( + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + masterLpToken(overrides?: CallOverrides): Promise<[string]>; + + onSushiReward( + pid: BigNumberish, + _user: string, + to: string, + arg3: BigNumberish, + lpToken: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pendingOwner(overrides?: CallOverrides): Promise<[string]>; + + pendingToken( + _pid: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { pending: BigNumber }>; + + pendingTokens( + pid: BigNumberish, + user: string, + arg2: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string[], BigNumber[]] & { + rewardTokens: string[]; + rewardAmounts: BigNumber[]; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + accSushiPerShare: BigNumber; + lastRewardTime: BigNumber; + } + >; + + rewardPerSecond(overrides?: CallOverrides): Promise<[BigNumber]>; + + rewardToken(overrides?: CallOverrides): Promise<[string]>; + + setRewardPerSecond( + _rewardPerSecond: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + direct: boolean, + renounce: boolean, + 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 }>; + }; + + MASTERCHEF_V2(overrides?: CallOverrides): Promise; + + claimOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + init( + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + masterLpToken(overrides?: CallOverrides): Promise; + + onSushiReward( + pid: BigNumberish, + _user: string, + to: string, + arg3: BigNumberish, + lpToken: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + pendingToken(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + pendingTokens( + pid: BigNumberish, + user: string, + arg2: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string[], BigNumber[]] & { + rewardTokens: string[]; + rewardAmounts: BigNumber[]; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + accSushiPerShare: BigNumber; + lastRewardTime: BigNumber; + } + >; + + rewardPerSecond(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + setRewardPerSecond( + _rewardPerSecond: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + direct: boolean, + renounce: boolean, + 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 }>; + + callStatic: { + MASTERCHEF_V2(overrides?: CallOverrides): Promise; + + claimOwnership(overrides?: CallOverrides): Promise; + + init(data: BytesLike, overrides?: CallOverrides): Promise; + + masterLpToken(overrides?: CallOverrides): Promise; + + onSushiReward( + pid: BigNumberish, + _user: string, + to: string, + arg3: BigNumberish, + lpToken: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + pendingToken(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + pendingTokens( + pid: BigNumberish, + user: string, + arg2: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string[], BigNumber[]] & { + rewardTokens: string[]; + rewardAmounts: BigNumber[]; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber] & { + accSushiPerShare: BigNumber; + lastRewardTime: BigNumber; + } + >; + + rewardPerSecond(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + setRewardPerSecond(_rewardPerSecond: BigNumberish, overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, direct: boolean, renounce: boolean, overrides?: CallOverrides): Promise; + + updatePool(pid: BigNumberish, overrides?: CallOverrides): Promise; + + userInfo( + arg0: BigNumberish, + arg1: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { amount: BigNumber; rewardDebt: BigNumber }>; + }; + + filters: { + 'LogInit()'(): LogInitEventFilter; + LogInit(): LogInitEventFilter; + + 'LogOnReward(address,uint256,uint256,address)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + to?: string | null, + ): LogOnRewardEventFilter; + LogOnReward( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + to?: string | null, + ): LogOnRewardEventFilter; + + 'LogPoolAddition(uint256,uint256)'(pid?: BigNumberish | null, allocPoint?: null): LogPoolAdditionEventFilter; + LogPoolAddition(pid?: BigNumberish | null, allocPoint?: null): LogPoolAdditionEventFilter; + + 'LogRewardPerSecond(uint256)'(rewardPerSecond?: null): LogRewardPerSecondEventFilter; + LogRewardPerSecond(rewardPerSecond?: null): LogRewardPerSecondEventFilter; + + 'LogSetPool(uint256,uint256)'(pid?: BigNumberish | null, allocPoint?: null): LogSetPoolEventFilter; + LogSetPool(pid?: BigNumberish | null, allocPoint?: null): LogSetPoolEventFilter; + + 'LogUpdatePool(uint256,uint64,uint256,uint256)'( + pid?: BigNumberish | null, + lastRewardTime?: null, + lpSupply?: null, + accSushiPerShare?: null, + ): LogUpdatePoolEventFilter; + LogUpdatePool( + pid?: BigNumberish | null, + lastRewardTime?: null, + lpSupply?: null, + accSushiPerShare?: null, + ): LogUpdatePoolEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + }; + + estimateGas: { + MASTERCHEF_V2(overrides?: CallOverrides): Promise; + + claimOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + init(data: BytesLike, overrides?: PayableOverrides & { from?: string | Promise }): Promise; + + masterLpToken(overrides?: CallOverrides): Promise; + + onSushiReward( + pid: BigNumberish, + _user: string, + to: string, + arg3: BigNumberish, + lpToken: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + pendingToken(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + pendingTokens(pid: BigNumberish, user: string, arg2: BigNumberish, overrides?: CallOverrides): Promise; + + poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + rewardPerSecond(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + setRewardPerSecond( + _rewardPerSecond: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + direct: boolean, + renounce: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePool(pid: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + userInfo(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + MASTERCHEF_V2(overrides?: CallOverrides): Promise; + + claimOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + init( + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + masterLpToken(overrides?: CallOverrides): Promise; + + onSushiReward( + pid: BigNumberish, + _user: string, + to: string, + arg3: BigNumberish, + lpToken: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + pendingToken(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + pendingTokens( + pid: BigNumberish, + user: string, + arg2: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + rewardPerSecond(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + setRewardPerSecond( + _rewardPerSecond: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + direct: boolean, + renounce: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePool( + pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + userInfo(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/trader-joe/contracts/ethers/TraderJoeChefV3.ts b/src/apps/trader-joe/contracts/ethers/TraderJoeChefV3.ts new file mode 100644 index 000000000..6723083c7 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/TraderJoeChefV3.ts @@ -0,0 +1,736 @@ +/* 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 TraderJoeChefV3Interface extends utils.Interface { + functions: { + 'JOE()': FunctionFragment; + 'MASTER_CHEF_V2()': FunctionFragment; + 'MASTER_PID()': FunctionFragment; + 'add(uint256,address,address)': FunctionFragment; + 'deposit(uint256,uint256)': FunctionFragment; + 'emergencyWithdraw(uint256)': FunctionFragment; + 'harvestFromMasterChef()': FunctionFragment; + 'init(address)': FunctionFragment; + 'joePerSec()': FunctionFragment; + 'massUpdatePools(uint256[])': FunctionFragment; + 'owner()': FunctionFragment; + 'pendingTokens(uint256,address)': FunctionFragment; + 'poolInfo(uint256)': FunctionFragment; + 'poolLength()': FunctionFragment; + 'renounceOwnership()': FunctionFragment; + 'set(uint256,uint256,address,bool)': FunctionFragment; + 'totalAllocPoint()': FunctionFragment; + 'transferOwnership(address)': FunctionFragment; + 'updatePool(uint256)': FunctionFragment; + 'userInfo(uint256,address)': FunctionFragment; + 'withdraw(uint256,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'JOE' + | 'MASTER_CHEF_V2' + | 'MASTER_PID' + | 'add' + | 'deposit' + | 'emergencyWithdraw' + | 'harvestFromMasterChef' + | 'init' + | 'joePerSec' + | 'massUpdatePools' + | 'owner' + | 'pendingTokens' + | 'poolInfo' + | 'poolLength' + | 'renounceOwnership' + | 'set' + | 'totalAllocPoint' + | 'transferOwnership' + | 'updatePool' + | 'userInfo' + | 'withdraw', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'JOE', values?: undefined): string; + encodeFunctionData(functionFragment: 'MASTER_CHEF_V2', values?: undefined): string; + encodeFunctionData(functionFragment: 'MASTER_PID', values?: undefined): string; + encodeFunctionData(functionFragment: 'add', values: [BigNumberish, string, string]): string; + encodeFunctionData(functionFragment: 'deposit', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'emergencyWithdraw', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'harvestFromMasterChef', values?: undefined): string; + encodeFunctionData(functionFragment: 'init', values: [string]): string; + encodeFunctionData(functionFragment: 'joePerSec', values?: undefined): string; + encodeFunctionData(functionFragment: 'massUpdatePools', values: [BigNumberish[]]): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingTokens', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'poolInfo', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'poolLength', values?: undefined): string; + encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'set', values: [BigNumberish, BigNumberish, string, boolean]): 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: 'JOE', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MASTER_CHEF_V2', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MASTER_PID', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'add', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'emergencyWithdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'harvestFromMasterChef', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'init', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'joePerSec', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'massUpdatePools', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingTokens', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'poolInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'poolLength', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'set', 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: { + 'Add(uint256,uint256,address,address)': EventFragment; + 'Deposit(address,uint256,uint256)': EventFragment; + 'EmergencyWithdraw(address,uint256,uint256)': EventFragment; + 'Harvest(address,uint256,uint256)': EventFragment; + 'Init()': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'Set(uint256,uint256,address,bool)': EventFragment; + 'UpdatePool(uint256,uint256,uint256,uint256)': EventFragment; + 'Withdraw(address,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Add'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'EmergencyWithdraw'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Harvest'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Init'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Set'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'UpdatePool'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdraw'): EventFragment; +} + +export interface AddEventObject { + pid: BigNumber; + allocPoint: BigNumber; + lpToken: string; + rewarder: string; +} +export type AddEvent = TypedEvent<[BigNumber, BigNumber, string, string], AddEventObject>; + +export type AddEventFilter = TypedEventFilter; + +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 HarvestEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; +} +export type HarvestEvent = TypedEvent<[string, BigNumber, BigNumber], HarvestEventObject>; + +export type HarvestEventFilter = TypedEventFilter; + +export interface InitEventObject {} +export type InitEvent = TypedEvent<[], InitEventObject>; + +export type InitEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface SetEventObject { + pid: BigNumber; + allocPoint: BigNumber; + rewarder: string; + overwrite: boolean; +} +export type SetEvent = TypedEvent<[BigNumber, BigNumber, string, boolean], SetEventObject>; + +export type SetEventFilter = TypedEventFilter; + +export interface UpdatePoolEventObject { + pid: BigNumber; + lastRewardTimestamp: BigNumber; + lpSupply: BigNumber; + accJoePerShare: BigNumber; +} +export type UpdatePoolEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, BigNumber], UpdatePoolEventObject>; + +export type UpdatePoolEventFilter = TypedEventFilter; + +export interface WithdrawEventObject { + user: string; + pid: BigNumber; + amount: BigNumber; +} +export type WithdrawEvent = TypedEvent<[string, BigNumber, BigNumber], WithdrawEventObject>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface TraderJoeChefV3 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TraderJoeChefV3Interface; + + 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: { + JOE(overrides?: CallOverrides): Promise<[string]>; + + MASTER_CHEF_V2(overrides?: CallOverrides): Promise<[string]>; + + MASTER_PID(overrides?: CallOverrides): Promise<[BigNumber]>; + + add( + allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + pid: BigNumberish, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestFromMasterChef(overrides?: Overrides & { from?: string | Promise }): Promise; + + init(dummyToken: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + joePerSec(overrides?: CallOverrides): Promise<[BigNumber] & { amount: BigNumber }>; + + massUpdatePools( + pids: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pendingTokens( + _pid: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, string, string, BigNumber] & { + pendingJoe: BigNumber; + bonusTokenAddress: string; + bonusTokenSymbol: string; + pendingBonusToken: BigNumber; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, string] & { + lpToken: string; + accJoePerShare: BigNumber; + lastRewardTimestamp: BigNumber; + allocPoint: BigNumber; + rewarder: string; + } + >; + + poolLength(overrides?: CallOverrides): Promise<[BigNumber] & { pools: BigNumber }>; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 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; + }; + + JOE(overrides?: CallOverrides): Promise; + + MASTER_CHEF_V2(overrides?: CallOverrides): Promise; + + MASTER_PID(overrides?: CallOverrides): Promise; + + add( + allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + pid: BigNumberish, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestFromMasterChef(overrides?: Overrides & { from?: string | Promise }): Promise; + + init(dummyToken: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools( + pids: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens( + _pid: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, string, string, BigNumber] & { + pendingJoe: BigNumber; + bonusTokenAddress: string; + bonusTokenSymbol: string; + pendingBonusToken: BigNumber; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, string] & { + lpToken: string; + accJoePerShare: BigNumber; + lastRewardTimestamp: BigNumber; + allocPoint: BigNumber; + rewarder: string; + } + >; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): 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: { + JOE(overrides?: CallOverrides): Promise; + + MASTER_CHEF_V2(overrides?: CallOverrides): Promise; + + MASTER_PID(overrides?: CallOverrides): Promise; + + add(allocPoint: BigNumberish, _lpToken: string, _rewarder: string, overrides?: CallOverrides): Promise; + + deposit(pid: BigNumberish, amount: BigNumberish, overrides?: CallOverrides): Promise; + + emergencyWithdraw(pid: BigNumberish, overrides?: CallOverrides): Promise; + + harvestFromMasterChef(overrides?: CallOverrides): Promise; + + init(dummyToken: string, overrides?: CallOverrides): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools(pids: BigNumberish[], overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens( + _pid: BigNumberish, + _user: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, string, string, BigNumber] & { + pendingJoe: BigNumber; + bonusTokenAddress: string; + bonusTokenSymbol: string; + pendingBonusToken: BigNumber; + } + >; + + poolInfo( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [string, BigNumber, BigNumber, BigNumber, string] & { + lpToken: string; + accJoePerShare: BigNumber; + lastRewardTimestamp: BigNumber; + allocPoint: BigNumber; + rewarder: string; + } + >; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + overwrite: boolean, + 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: { + 'Add(uint256,uint256,address,address)'( + pid?: BigNumberish | null, + allocPoint?: null, + lpToken?: string | null, + rewarder?: string | null, + ): AddEventFilter; + Add( + pid?: BigNumberish | null, + allocPoint?: null, + lpToken?: string | null, + rewarder?: string | null, + ): AddEventFilter; + + '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; + + 'Harvest(address,uint256,uint256)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + ): HarvestEventFilter; + Harvest(user?: string | null, pid?: BigNumberish | null, amount?: null): HarvestEventFilter; + + 'Init()'(): InitEventFilter; + Init(): InitEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'Set(uint256,uint256,address,bool)'( + pid?: BigNumberish | null, + allocPoint?: null, + rewarder?: string | null, + overwrite?: null, + ): SetEventFilter; + Set(pid?: BigNumberish | null, allocPoint?: null, rewarder?: string | null, overwrite?: null): SetEventFilter; + + 'UpdatePool(uint256,uint256,uint256,uint256)'( + pid?: BigNumberish | null, + lastRewardTimestamp?: null, + lpSupply?: null, + accJoePerShare?: null, + ): UpdatePoolEventFilter; + UpdatePool( + pid?: BigNumberish | null, + lastRewardTimestamp?: null, + lpSupply?: null, + accJoePerShare?: null, + ): UpdatePoolEventFilter; + + 'Withdraw(address,uint256,uint256)'( + user?: string | null, + pid?: BigNumberish | null, + amount?: null, + ): WithdrawEventFilter; + Withdraw(user?: string | null, pid?: BigNumberish | null, amount?: null): WithdrawEventFilter; + }; + + estimateGas: { + JOE(overrides?: CallOverrides): Promise; + + MASTER_CHEF_V2(overrides?: CallOverrides): Promise; + + MASTER_PID(overrides?: CallOverrides): Promise; + + add( + allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + pid: BigNumberish, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestFromMasterChef(overrides?: Overrides & { from?: string | Promise }): Promise; + + init(dummyToken: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools( + pids: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): 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: { + JOE(overrides?: CallOverrides): Promise; + + MASTER_CHEF_V2(overrides?: CallOverrides): Promise; + + MASTER_PID(overrides?: CallOverrides): Promise; + + add( + allocPoint: BigNumberish, + _lpToken: string, + _rewarder: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + pid: BigNumberish, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + emergencyWithdraw( + pid: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestFromMasterChef(overrides?: Overrides & { from?: string | Promise }): Promise; + + init( + dummyToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + joePerSec(overrides?: CallOverrides): Promise; + + massUpdatePools( + pids: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingTokens(_pid: BigNumberish, _user: string, overrides?: CallOverrides): Promise; + + poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + poolLength(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + set( + _pid: BigNumberish, + _allocPoint: BigNumberish, + _rewarder: string, + overwrite: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): 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/trader-joe/contracts/ethers/TraderJoeChefV3Rewarder.ts b/src/apps/trader-joe/contracts/ethers/TraderJoeChefV3Rewarder.ts new file mode 100644 index 000000000..748a3b185 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/TraderJoeChefV3Rewarder.ts @@ -0,0 +1,430 @@ +/* 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 SimpleRewarderPerSec { + export type PoolInfoStruct = { + accTokenPerShare: BigNumberish; + lastRewardTimestamp: BigNumberish; + }; + + export type PoolInfoStructOutput = [BigNumber, BigNumber] & { + accTokenPerShare: BigNumber; + lastRewardTimestamp: BigNumber; + }; +} + +export interface TraderJoeChefV3RewarderInterface extends utils.Interface { + functions: { + 'MCJ()': FunctionFragment; + 'balance()': FunctionFragment; + 'claimOwnership()': FunctionFragment; + 'emergencyWithdraw()': FunctionFragment; + 'isNative()': FunctionFragment; + 'lpToken()': FunctionFragment; + 'onJoeReward(address,uint256)': FunctionFragment; + 'owner()': FunctionFragment; + 'pendingOwner()': FunctionFragment; + 'pendingTokens(address)': FunctionFragment; + 'poolInfo()': FunctionFragment; + 'rewardToken()': FunctionFragment; + 'setRewardRate(uint256)': FunctionFragment; + 'tokenPerSec()': FunctionFragment; + 'transferOwnership(address,bool,bool)': FunctionFragment; + 'updatePool()': FunctionFragment; + 'userInfo(address)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'MCJ' + | 'balance' + | 'claimOwnership' + | 'emergencyWithdraw' + | 'isNative' + | 'lpToken' + | 'onJoeReward' + | 'owner' + | 'pendingOwner' + | 'pendingTokens' + | 'poolInfo' + | 'rewardToken' + | 'setRewardRate' + | 'tokenPerSec' + | 'transferOwnership' + | 'updatePool' + | 'userInfo', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'MCJ', values?: undefined): string; + encodeFunctionData(functionFragment: 'balance', values?: undefined): string; + encodeFunctionData(functionFragment: 'claimOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'emergencyWithdraw', values?: undefined): string; + encodeFunctionData(functionFragment: 'isNative', values?: undefined): string; + encodeFunctionData(functionFragment: 'lpToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'onJoeReward', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingOwner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingTokens', values: [string]): string; + encodeFunctionData(functionFragment: 'poolInfo', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'setRewardRate', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokenPerSec', values?: undefined): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string, boolean, boolean]): string; + encodeFunctionData(functionFragment: 'updatePool', values?: undefined): string; + encodeFunctionData(functionFragment: 'userInfo', values: [string]): string; + + decodeFunctionResult(functionFragment: 'MCJ', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'claimOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'emergencyWithdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isNative', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lpToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'onJoeReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingOwner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingTokens', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'poolInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setRewardRate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenPerSec', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updatePool', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userInfo', data: BytesLike): Result; + + events: { + 'OnReward(address,uint256)': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'RewardRateUpdated(uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'OnReward'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardRateUpdated'): EventFragment; +} + +export interface OnRewardEventObject { + user: string; + amount: BigNumber; +} +export type OnRewardEvent = TypedEvent<[string, BigNumber], OnRewardEventObject>; + +export type OnRewardEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface RewardRateUpdatedEventObject { + oldRate: BigNumber; + newRate: BigNumber; +} +export type RewardRateUpdatedEvent = TypedEvent<[BigNumber, BigNumber], RewardRateUpdatedEventObject>; + +export type RewardRateUpdatedEventFilter = TypedEventFilter; + +export interface TraderJoeChefV3Rewarder extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TraderJoeChefV3RewarderInterface; + + 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: { + MCJ(overrides?: CallOverrides): Promise<[string]>; + + balance(overrides?: CallOverrides): Promise<[BigNumber]>; + + claimOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + isNative(overrides?: CallOverrides): Promise<[boolean]>; + + lpToken(overrides?: CallOverrides): Promise<[string]>; + + onJoeReward( + _user: string, + _lpAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pendingOwner(overrides?: CallOverrides): Promise<[string]>; + + pendingTokens(_user: string, overrides?: CallOverrides): Promise<[BigNumber] & { pending: BigNumber }>; + + poolInfo(overrides?: CallOverrides): Promise< + [BigNumber, BigNumber] & { + accTokenPerShare: BigNumber; + lastRewardTimestamp: BigNumber; + } + >; + + rewardToken(overrides?: CallOverrides): Promise<[string]>; + + setRewardRate( + _tokenPerSec: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokenPerSec(overrides?: CallOverrides): Promise<[BigNumber]>; + + transferOwnership( + newOwner: string, + direct: boolean, + renounce: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePool(overrides?: Overrides & { from?: string | Promise }): Promise; + + userInfo( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { amount: BigNumber; rewardDebt: BigNumber }>; + }; + + MCJ(overrides?: CallOverrides): Promise; + + balance(overrides?: CallOverrides): Promise; + + claimOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + isNative(overrides?: CallOverrides): Promise; + + lpToken(overrides?: CallOverrides): Promise; + + onJoeReward( + _user: string, + _lpAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + pendingTokens(_user: string, overrides?: CallOverrides): Promise; + + poolInfo(overrides?: CallOverrides): Promise< + [BigNumber, BigNumber] & { + accTokenPerShare: BigNumber; + lastRewardTimestamp: BigNumber; + } + >; + + rewardToken(overrides?: CallOverrides): Promise; + + setRewardRate( + _tokenPerSec: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokenPerSec(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + direct: boolean, + renounce: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePool(overrides?: Overrides & { from?: string | Promise }): Promise; + + userInfo( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { amount: BigNumber; rewardDebt: BigNumber }>; + + callStatic: { + MCJ(overrides?: CallOverrides): Promise; + + balance(overrides?: CallOverrides): Promise; + + claimOwnership(overrides?: CallOverrides): Promise; + + emergencyWithdraw(overrides?: CallOverrides): Promise; + + isNative(overrides?: CallOverrides): Promise; + + lpToken(overrides?: CallOverrides): Promise; + + onJoeReward(_user: string, _lpAmount: BigNumberish, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + pendingTokens(_user: string, overrides?: CallOverrides): Promise; + + poolInfo(overrides?: CallOverrides): Promise< + [BigNumber, BigNumber] & { + accTokenPerShare: BigNumber; + lastRewardTimestamp: BigNumber; + } + >; + + rewardToken(overrides?: CallOverrides): Promise; + + setRewardRate(_tokenPerSec: BigNumberish, overrides?: CallOverrides): Promise; + + tokenPerSec(overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, direct: boolean, renounce: boolean, overrides?: CallOverrides): Promise; + + updatePool(overrides?: CallOverrides): Promise; + + userInfo( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { amount: BigNumber; rewardDebt: BigNumber }>; + }; + + filters: { + 'OnReward(address,uint256)'(user?: string | null, amount?: null): OnRewardEventFilter; + OnReward(user?: string | null, amount?: null): OnRewardEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'RewardRateUpdated(uint256,uint256)'(oldRate?: null, newRate?: null): RewardRateUpdatedEventFilter; + RewardRateUpdated(oldRate?: null, newRate?: null): RewardRateUpdatedEventFilter; + }; + + estimateGas: { + MCJ(overrides?: CallOverrides): Promise; + + balance(overrides?: CallOverrides): Promise; + + claimOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + isNative(overrides?: CallOverrides): Promise; + + lpToken(overrides?: CallOverrides): Promise; + + onJoeReward( + _user: string, + _lpAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + pendingTokens(_user: string, overrides?: CallOverrides): Promise; + + poolInfo(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + setRewardRate( + _tokenPerSec: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokenPerSec(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + direct: boolean, + renounce: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePool(overrides?: Overrides & { from?: string | Promise }): Promise; + + userInfo(arg0: string, overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + MCJ(overrides?: CallOverrides): Promise; + + balance(overrides?: CallOverrides): Promise; + + claimOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + isNative(overrides?: CallOverrides): Promise; + + lpToken(overrides?: CallOverrides): Promise; + + onJoeReward( + _user: string, + _lpAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + pendingTokens(_user: string, overrides?: CallOverrides): Promise; + + poolInfo(overrides?: CallOverrides): Promise; + + rewardToken(overrides?: CallOverrides): Promise; + + setRewardRate( + _tokenPerSec: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokenPerSec(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + direct: boolean, + renounce: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePool(overrides?: Overrides & { from?: string | Promise }): Promise; + + userInfo(arg0: string, overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/trader-joe/contracts/ethers/TraderJoeStableStaking.ts b/src/apps/trader-joe/contracts/ethers/TraderJoeStableStaking.ts new file mode 100644 index 000000000..bec3ab138 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/TraderJoeStableStaking.ts @@ -0,0 +1,618 @@ +/* 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 TraderJoeStableStakingInterface extends utils.Interface { + functions: { + 'ACC_REWARD_PER_SHARE_PRECISION()': FunctionFragment; + 'DEPOSIT_FEE_PERCENT_PRECISION()': FunctionFragment; + 'accRewardPerShare(address)': FunctionFragment; + 'addRewardToken(address)': FunctionFragment; + 'deposit(uint256)': FunctionFragment; + 'depositFeePercent()': FunctionFragment; + 'emergencyWithdraw()': FunctionFragment; + 'feeCollector()': FunctionFragment; + 'getUserInfo(address,address)': FunctionFragment; + 'initialize(address,address,address,uint256)': FunctionFragment; + 'internalJoeBalance()': FunctionFragment; + 'isRewardToken(address)': FunctionFragment; + 'joe()': FunctionFragment; + 'lastRewardBalance(address)': FunctionFragment; + 'owner()': FunctionFragment; + 'pendingReward(address,address)': FunctionFragment; + 'removeRewardToken(address)': FunctionFragment; + 'renounceOwnership()': FunctionFragment; + 'rewardTokens(uint256)': FunctionFragment; + 'rewardTokensLength()': FunctionFragment; + 'setDepositFeePercent(uint256)': FunctionFragment; + 'transferOwnership(address)': FunctionFragment; + 'updateReward(address)': FunctionFragment; + 'withdraw(uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'ACC_REWARD_PER_SHARE_PRECISION' + | 'DEPOSIT_FEE_PERCENT_PRECISION' + | 'accRewardPerShare' + | 'addRewardToken' + | 'deposit' + | 'depositFeePercent' + | 'emergencyWithdraw' + | 'feeCollector' + | 'getUserInfo' + | 'initialize' + | 'internalJoeBalance' + | 'isRewardToken' + | 'joe' + | 'lastRewardBalance' + | 'owner' + | 'pendingReward' + | 'removeRewardToken' + | 'renounceOwnership' + | 'rewardTokens' + | 'rewardTokensLength' + | 'setDepositFeePercent' + | 'transferOwnership' + | 'updateReward' + | 'withdraw', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'ACC_REWARD_PER_SHARE_PRECISION', values?: undefined): string; + encodeFunctionData(functionFragment: 'DEPOSIT_FEE_PERCENT_PRECISION', values?: undefined): string; + encodeFunctionData(functionFragment: 'accRewardPerShare', values: [string]): string; + encodeFunctionData(functionFragment: 'addRewardToken', values: [string]): string; + encodeFunctionData(functionFragment: 'deposit', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'depositFeePercent', values?: undefined): string; + encodeFunctionData(functionFragment: 'emergencyWithdraw', values?: undefined): string; + encodeFunctionData(functionFragment: 'feeCollector', values?: undefined): string; + encodeFunctionData(functionFragment: 'getUserInfo', values: [string, string]): string; + encodeFunctionData(functionFragment: 'initialize', values: [string, string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'internalJoeBalance', values?: undefined): string; + encodeFunctionData(functionFragment: 'isRewardToken', values: [string]): string; + encodeFunctionData(functionFragment: 'joe', values?: undefined): string; + encodeFunctionData(functionFragment: 'lastRewardBalance', values: [string]): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingReward', values: [string, string]): string; + encodeFunctionData(functionFragment: 'removeRewardToken', values: [string]): string; + encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardTokens', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'rewardTokensLength', values?: undefined): string; + encodeFunctionData(functionFragment: 'setDepositFeePercent', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string]): string; + encodeFunctionData(functionFragment: 'updateReward', values: [string]): string; + encodeFunctionData(functionFragment: 'withdraw', values: [BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'ACC_REWARD_PER_SHARE_PRECISION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'DEPOSIT_FEE_PERCENT_PRECISION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'accRewardPerShare', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addRewardToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositFeePercent', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'emergencyWithdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'feeCollector', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getUserInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'internalJoeBalance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isRewardToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'joe', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastRewardBalance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'removeRewardToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardTokens', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardTokensLength', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setDepositFeePercent', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updateReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + + events: { + 'ClaimReward(address,address,uint256)': EventFragment; + 'Deposit(address,uint256,uint256)': EventFragment; + 'DepositFeeChanged(uint256,uint256)': EventFragment; + 'EmergencyWithdraw(address,uint256)': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'RewardTokenAdded(address)': EventFragment; + 'RewardTokenRemoved(address)': EventFragment; + 'Withdraw(address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'ClaimReward'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'DepositFeeChanged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'EmergencyWithdraw'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardTokenAdded'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardTokenRemoved'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdraw'): EventFragment; +} + +export interface ClaimRewardEventObject { + user: string; + rewardToken: string; + amount: BigNumber; +} +export type ClaimRewardEvent = TypedEvent<[string, string, BigNumber], ClaimRewardEventObject>; + +export type ClaimRewardEventFilter = TypedEventFilter; + +export interface DepositEventObject { + user: string; + amount: BigNumber; + fee: BigNumber; +} +export type DepositEvent = TypedEvent<[string, BigNumber, BigNumber], DepositEventObject>; + +export type DepositEventFilter = TypedEventFilter; + +export interface DepositFeeChangedEventObject { + newFee: BigNumber; + oldFee: BigNumber; +} +export type DepositFeeChangedEvent = TypedEvent<[BigNumber, BigNumber], DepositFeeChangedEventObject>; + +export type DepositFeeChangedEventFilter = TypedEventFilter; + +export interface EmergencyWithdrawEventObject { + user: string; + amount: BigNumber; +} +export type EmergencyWithdrawEvent = TypedEvent<[string, 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 RewardTokenAddedEventObject { + token: string; +} +export type RewardTokenAddedEvent = TypedEvent<[string], RewardTokenAddedEventObject>; + +export type RewardTokenAddedEventFilter = TypedEventFilter; + +export interface RewardTokenRemovedEventObject { + token: string; +} +export type RewardTokenRemovedEvent = TypedEvent<[string], RewardTokenRemovedEventObject>; + +export type RewardTokenRemovedEventFilter = TypedEventFilter; + +export interface WithdrawEventObject { + user: string; + amount: BigNumber; +} +export type WithdrawEvent = TypedEvent<[string, BigNumber], WithdrawEventObject>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface TraderJoeStableStaking extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TraderJoeStableStakingInterface; + + 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: { + ACC_REWARD_PER_SHARE_PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>; + + DEPOSIT_FEE_PERCENT_PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>; + + accRewardPerShare(arg0: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + addRewardToken( + _rewardToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositFeePercent(overrides?: CallOverrides): Promise<[BigNumber]>; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + feeCollector(overrides?: CallOverrides): Promise<[string]>; + + getUserInfo(_user: string, _rewardToken: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + initialize( + _rewardToken: string, + _joe: string, + _feeCollector: string, + _depositFeePercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + internalJoeBalance(overrides?: CallOverrides): Promise<[BigNumber]>; + + isRewardToken(arg0: string, overrides?: CallOverrides): Promise<[boolean]>; + + joe(overrides?: CallOverrides): Promise<[string]>; + + lastRewardBalance(arg0: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pendingReward(_user: string, _token: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + removeRewardToken( + _rewardToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + rewardTokensLength(overrides?: CallOverrides): Promise<[BigNumber]>; + + setDepositFeePercent( + _depositFeePercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateReward( + _token: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + ACC_REWARD_PER_SHARE_PRECISION(overrides?: CallOverrides): Promise; + + DEPOSIT_FEE_PERCENT_PRECISION(overrides?: CallOverrides): Promise; + + accRewardPerShare(arg0: string, overrides?: CallOverrides): Promise; + + addRewardToken( + _rewardToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositFeePercent(overrides?: CallOverrides): Promise; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + feeCollector(overrides?: CallOverrides): Promise; + + getUserInfo(_user: string, _rewardToken: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + initialize( + _rewardToken: string, + _joe: string, + _feeCollector: string, + _depositFeePercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + internalJoeBalance(overrides?: CallOverrides): Promise; + + isRewardToken(arg0: string, overrides?: CallOverrides): Promise; + + joe(overrides?: CallOverrides): Promise; + + lastRewardBalance(arg0: string, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingReward(_user: string, _token: string, overrides?: CallOverrides): Promise; + + removeRewardToken( + _rewardToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + rewardTokensLength(overrides?: CallOverrides): Promise; + + setDepositFeePercent( + _depositFeePercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateReward( + _token: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + ACC_REWARD_PER_SHARE_PRECISION(overrides?: CallOverrides): Promise; + + DEPOSIT_FEE_PERCENT_PRECISION(overrides?: CallOverrides): Promise; + + accRewardPerShare(arg0: string, overrides?: CallOverrides): Promise; + + addRewardToken(_rewardToken: string, overrides?: CallOverrides): Promise; + + deposit(_amount: BigNumberish, overrides?: CallOverrides): Promise; + + depositFeePercent(overrides?: CallOverrides): Promise; + + emergencyWithdraw(overrides?: CallOverrides): Promise; + + feeCollector(overrides?: CallOverrides): Promise; + + getUserInfo(_user: string, _rewardToken: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + initialize( + _rewardToken: string, + _joe: string, + _feeCollector: string, + _depositFeePercent: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + internalJoeBalance(overrides?: CallOverrides): Promise; + + isRewardToken(arg0: string, overrides?: CallOverrides): Promise; + + joe(overrides?: CallOverrides): Promise; + + lastRewardBalance(arg0: string, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingReward(_user: string, _token: string, overrides?: CallOverrides): Promise; + + removeRewardToken(_rewardToken: string, overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + rewardTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + rewardTokensLength(overrides?: CallOverrides): Promise; + + setDepositFeePercent(_depositFeePercent: BigNumberish, overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, overrides?: CallOverrides): Promise; + + updateReward(_token: string, overrides?: CallOverrides): Promise; + + withdraw(_amount: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + 'ClaimReward(address,address,uint256)'( + user?: string | null, + rewardToken?: string | null, + amount?: null, + ): ClaimRewardEventFilter; + ClaimReward(user?: string | null, rewardToken?: string | null, amount?: null): ClaimRewardEventFilter; + + 'Deposit(address,uint256,uint256)'(user?: string | null, amount?: null, fee?: null): DepositEventFilter; + Deposit(user?: string | null, amount?: null, fee?: null): DepositEventFilter; + + 'DepositFeeChanged(uint256,uint256)'(newFee?: null, oldFee?: null): DepositFeeChangedEventFilter; + DepositFeeChanged(newFee?: null, oldFee?: null): DepositFeeChangedEventFilter; + + 'EmergencyWithdraw(address,uint256)'(user?: string | null, amount?: null): EmergencyWithdrawEventFilter; + EmergencyWithdraw(user?: string | null, amount?: null): EmergencyWithdrawEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'RewardTokenAdded(address)'(token?: null): RewardTokenAddedEventFilter; + RewardTokenAdded(token?: null): RewardTokenAddedEventFilter; + + 'RewardTokenRemoved(address)'(token?: null): RewardTokenRemovedEventFilter; + RewardTokenRemoved(token?: null): RewardTokenRemovedEventFilter; + + 'Withdraw(address,uint256)'(user?: string | null, amount?: null): WithdrawEventFilter; + Withdraw(user?: string | null, amount?: null): WithdrawEventFilter; + }; + + estimateGas: { + ACC_REWARD_PER_SHARE_PRECISION(overrides?: CallOverrides): Promise; + + DEPOSIT_FEE_PERCENT_PRECISION(overrides?: CallOverrides): Promise; + + accRewardPerShare(arg0: string, overrides?: CallOverrides): Promise; + + addRewardToken( + _rewardToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit(_amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + depositFeePercent(overrides?: CallOverrides): Promise; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + feeCollector(overrides?: CallOverrides): Promise; + + getUserInfo(_user: string, _rewardToken: string, overrides?: CallOverrides): Promise; + + initialize( + _rewardToken: string, + _joe: string, + _feeCollector: string, + _depositFeePercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + internalJoeBalance(overrides?: CallOverrides): Promise; + + isRewardToken(arg0: string, overrides?: CallOverrides): Promise; + + joe(overrides?: CallOverrides): Promise; + + lastRewardBalance(arg0: string, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingReward(_user: string, _token: string, overrides?: CallOverrides): Promise; + + removeRewardToken( + _rewardToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + rewardTokensLength(overrides?: CallOverrides): Promise; + + setDepositFeePercent( + _depositFeePercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateReward(_token: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + withdraw(_amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + }; + + populateTransaction: { + ACC_REWARD_PER_SHARE_PRECISION(overrides?: CallOverrides): Promise; + + DEPOSIT_FEE_PERCENT_PRECISION(overrides?: CallOverrides): Promise; + + accRewardPerShare(arg0: string, overrides?: CallOverrides): Promise; + + addRewardToken( + _rewardToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositFeePercent(overrides?: CallOverrides): Promise; + + emergencyWithdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + feeCollector(overrides?: CallOverrides): Promise; + + getUserInfo(_user: string, _rewardToken: string, overrides?: CallOverrides): Promise; + + initialize( + _rewardToken: string, + _joe: string, + _feeCollector: string, + _depositFeePercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + internalJoeBalance(overrides?: CallOverrides): Promise; + + isRewardToken(arg0: string, overrides?: CallOverrides): Promise; + + joe(overrides?: CallOverrides): Promise; + + lastRewardBalance(arg0: string, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pendingReward(_user: string, _token: string, overrides?: CallOverrides): Promise; + + removeRewardToken( + _rewardToken: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + rewardTokensLength(overrides?: CallOverrides): Promise; + + setDepositFeePercent( + _depositFeePercent: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateReward( + _token: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; +} diff --git a/src/apps/trader-joe/contracts/ethers/TraderJoeVeJoeStaking.ts b/src/apps/trader-joe/contracts/ethers/TraderJoeVeJoeStaking.ts new file mode 100644 index 000000000..e2d95c719 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/TraderJoeVeJoeStaking.ts @@ -0,0 +1,695 @@ +/* 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 TraderJoeVeJoeStakingInterface extends utils.Interface { + functions: { + 'ACC_VEJOE_PER_SHARE_PRECISION()': FunctionFragment; + 'VEJOE_PER_SHARE_PER_SEC_PRECISION()': FunctionFragment; + 'accVeJoePerShare()': FunctionFragment; + 'claim()': FunctionFragment; + 'deposit(uint256)': FunctionFragment; + 'getPendingVeJoe(address)': FunctionFragment; + 'initialize(address,address,uint256,uint256,uint256,uint256,uint256)': FunctionFragment; + 'joe()': FunctionFragment; + 'lastRewardTimestamp()': FunctionFragment; + 'maxCapPct()': FunctionFragment; + 'owner()': FunctionFragment; + 'renounceOwnership()': FunctionFragment; + 'setMaxCapPct(uint256)': FunctionFragment; + 'setSpeedUpThreshold(uint256)': FunctionFragment; + 'setVeJoePerSharePerSec(uint256)': FunctionFragment; + 'speedUpDuration()': FunctionFragment; + 'speedUpThreshold()': FunctionFragment; + 'speedUpVeJoePerSharePerSec()': FunctionFragment; + 'transferOwnership(address)': FunctionFragment; + 'updateRewardVars()': FunctionFragment; + 'upperLimitMaxCapPct()': FunctionFragment; + 'upperLimitVeJoePerSharePerSec()': FunctionFragment; + 'userInfos(address)': FunctionFragment; + 'veJoe()': FunctionFragment; + 'veJoePerSharePerSec()': FunctionFragment; + 'withdraw(uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'ACC_VEJOE_PER_SHARE_PRECISION' + | 'VEJOE_PER_SHARE_PER_SEC_PRECISION' + | 'accVeJoePerShare' + | 'claim' + | 'deposit' + | 'getPendingVeJoe' + | 'initialize' + | 'joe' + | 'lastRewardTimestamp' + | 'maxCapPct' + | 'owner' + | 'renounceOwnership' + | 'setMaxCapPct' + | 'setSpeedUpThreshold' + | 'setVeJoePerSharePerSec' + | 'speedUpDuration' + | 'speedUpThreshold' + | 'speedUpVeJoePerSharePerSec' + | 'transferOwnership' + | 'updateRewardVars' + | 'upperLimitMaxCapPct' + | 'upperLimitVeJoePerSharePerSec' + | 'userInfos' + | 'veJoe' + | 'veJoePerSharePerSec' + | 'withdraw', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'ACC_VEJOE_PER_SHARE_PRECISION', values?: undefined): string; + encodeFunctionData(functionFragment: 'VEJOE_PER_SHARE_PER_SEC_PRECISION', values?: undefined): string; + encodeFunctionData(functionFragment: 'accVeJoePerShare', values?: undefined): string; + encodeFunctionData(functionFragment: 'claim', values?: undefined): string; + encodeFunctionData(functionFragment: 'deposit', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getPendingVeJoe', values: [string]): string; + encodeFunctionData( + functionFragment: 'initialize', + values: [string, string, BigNumberish, BigNumberish, BigNumberish, BigNumberish, BigNumberish], + ): string; + encodeFunctionData(functionFragment: 'joe', values?: undefined): string; + encodeFunctionData(functionFragment: 'lastRewardTimestamp', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxCapPct', values?: undefined): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'setMaxCapPct', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setSpeedUpThreshold', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setVeJoePerSharePerSec', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'speedUpDuration', values?: undefined): string; + encodeFunctionData(functionFragment: 'speedUpThreshold', values?: undefined): string; + encodeFunctionData(functionFragment: 'speedUpVeJoePerSharePerSec', values?: undefined): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string]): string; + encodeFunctionData(functionFragment: 'updateRewardVars', values?: undefined): string; + encodeFunctionData(functionFragment: 'upperLimitMaxCapPct', values?: undefined): string; + encodeFunctionData(functionFragment: 'upperLimitVeJoePerSharePerSec', values?: undefined): string; + encodeFunctionData(functionFragment: 'userInfos', values: [string]): string; + encodeFunctionData(functionFragment: 'veJoe', values?: undefined): string; + encodeFunctionData(functionFragment: 'veJoePerSharePerSec', values?: undefined): string; + encodeFunctionData(functionFragment: 'withdraw', values: [BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'ACC_VEJOE_PER_SHARE_PRECISION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'VEJOE_PER_SHARE_PER_SEC_PRECISION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'accVeJoePerShare', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'claim', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getPendingVeJoe', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'joe', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastRewardTimestamp', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxCapPct', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setMaxCapPct', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setSpeedUpThreshold', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setVeJoePerSharePerSec', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'speedUpDuration', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'speedUpThreshold', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'speedUpVeJoePerSharePerSec', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updateRewardVars', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'upperLimitMaxCapPct', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'upperLimitVeJoePerSharePerSec', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userInfos', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'veJoe', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'veJoePerSharePerSec', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + + events: { + 'Claim(address,uint256)': EventFragment; + 'Deposit(address,uint256)': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'UpdateMaxCapPct(address,uint256)': EventFragment; + 'UpdateRewardVars(uint256,uint256)': EventFragment; + 'UpdateSpeedUpThreshold(address,uint256)': EventFragment; + 'UpdateVeJoePerSharePerSec(address,uint256)': EventFragment; + 'Withdraw(address,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Claim'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'UpdateMaxCapPct'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'UpdateRewardVars'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'UpdateSpeedUpThreshold'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'UpdateVeJoePerSharePerSec'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdraw'): EventFragment; +} + +export interface ClaimEventObject { + user: string; + amount: BigNumber; +} +export type ClaimEvent = TypedEvent<[string, BigNumber], ClaimEventObject>; + +export type ClaimEventFilter = TypedEventFilter; + +export interface DepositEventObject { + user: string; + amount: BigNumber; +} +export type DepositEvent = TypedEvent<[string, BigNumber], DepositEventObject>; + +export type DepositEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface UpdateMaxCapPctEventObject { + user: string; + maxCapPct: BigNumber; +} +export type UpdateMaxCapPctEvent = TypedEvent<[string, BigNumber], UpdateMaxCapPctEventObject>; + +export type UpdateMaxCapPctEventFilter = TypedEventFilter; + +export interface UpdateRewardVarsEventObject { + lastRewardTimestamp: BigNumber; + accVeJoePerShare: BigNumber; +} +export type UpdateRewardVarsEvent = TypedEvent<[BigNumber, BigNumber], UpdateRewardVarsEventObject>; + +export type UpdateRewardVarsEventFilter = TypedEventFilter; + +export interface UpdateSpeedUpThresholdEventObject { + user: string; + speedUpThreshold: BigNumber; +} +export type UpdateSpeedUpThresholdEvent = TypedEvent<[string, BigNumber], UpdateSpeedUpThresholdEventObject>; + +export type UpdateSpeedUpThresholdEventFilter = TypedEventFilter; + +export interface UpdateVeJoePerSharePerSecEventObject { + user: string; + veJoePerSharePerSec: BigNumber; +} +export type UpdateVeJoePerSharePerSecEvent = TypedEvent<[string, BigNumber], UpdateVeJoePerSharePerSecEventObject>; + +export type UpdateVeJoePerSharePerSecEventFilter = TypedEventFilter; + +export interface WithdrawEventObject { + user: string; + withdrawAmount: BigNumber; + burnAmount: BigNumber; +} +export type WithdrawEvent = TypedEvent<[string, BigNumber, BigNumber], WithdrawEventObject>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface TraderJoeVeJoeStaking extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TraderJoeVeJoeStakingInterface; + + 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: { + ACC_VEJOE_PER_SHARE_PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>; + + VEJOE_PER_SHARE_PER_SEC_PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>; + + accVeJoePerShare(overrides?: CallOverrides): Promise<[BigNumber]>; + + claim(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getPendingVeJoe(_user: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + initialize( + _joe: string, + _veJoe: string, + _veJoePerSharePerSec: BigNumberish, + _speedUpVeJoePerSharePerSec: BigNumberish, + _speedUpThreshold: BigNumberish, + _speedUpDuration: BigNumberish, + _maxCapPct: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + joe(overrides?: CallOverrides): Promise<[string]>; + + lastRewardTimestamp(overrides?: CallOverrides): Promise<[BigNumber]>; + + maxCapPct(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + setMaxCapPct( + _maxCapPct: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setSpeedUpThreshold( + _speedUpThreshold: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setVeJoePerSharePerSec( + _veJoePerSharePerSec: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + speedUpDuration(overrides?: CallOverrides): Promise<[BigNumber]>; + + speedUpThreshold(overrides?: CallOverrides): Promise<[BigNumber]>; + + speedUpVeJoePerSharePerSec(overrides?: CallOverrides): Promise<[BigNumber]>; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateRewardVars(overrides?: Overrides & { from?: string | Promise }): Promise; + + upperLimitMaxCapPct(overrides?: CallOverrides): Promise<[BigNumber]>; + + upperLimitVeJoePerSharePerSec(overrides?: CallOverrides): Promise<[BigNumber]>; + + userInfos( + arg0: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + balance: BigNumber; + rewardDebt: BigNumber; + lastClaimTimestamp: BigNumber; + speedUpEndTimestamp: BigNumber; + } + >; + + veJoe(overrides?: CallOverrides): Promise<[string]>; + + veJoePerSharePerSec(overrides?: CallOverrides): Promise<[BigNumber]>; + + withdraw( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + ACC_VEJOE_PER_SHARE_PRECISION(overrides?: CallOverrides): Promise; + + VEJOE_PER_SHARE_PER_SEC_PRECISION(overrides?: CallOverrides): Promise; + + accVeJoePerShare(overrides?: CallOverrides): Promise; + + claim(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getPendingVeJoe(_user: string, overrides?: CallOverrides): Promise; + + initialize( + _joe: string, + _veJoe: string, + _veJoePerSharePerSec: BigNumberish, + _speedUpVeJoePerSharePerSec: BigNumberish, + _speedUpThreshold: BigNumberish, + _speedUpDuration: BigNumberish, + _maxCapPct: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + joe(overrides?: CallOverrides): Promise; + + lastRewardTimestamp(overrides?: CallOverrides): Promise; + + maxCapPct(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + setMaxCapPct( + _maxCapPct: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setSpeedUpThreshold( + _speedUpThreshold: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setVeJoePerSharePerSec( + _veJoePerSharePerSec: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + speedUpDuration(overrides?: CallOverrides): Promise; + + speedUpThreshold(overrides?: CallOverrides): Promise; + + speedUpVeJoePerSharePerSec(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateRewardVars(overrides?: Overrides & { from?: string | Promise }): Promise; + + upperLimitMaxCapPct(overrides?: CallOverrides): Promise; + + upperLimitVeJoePerSharePerSec(overrides?: CallOverrides): Promise; + + userInfos( + arg0: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + balance: BigNumber; + rewardDebt: BigNumber; + lastClaimTimestamp: BigNumber; + speedUpEndTimestamp: BigNumber; + } + >; + + veJoe(overrides?: CallOverrides): Promise; + + veJoePerSharePerSec(overrides?: CallOverrides): Promise; + + withdraw( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + ACC_VEJOE_PER_SHARE_PRECISION(overrides?: CallOverrides): Promise; + + VEJOE_PER_SHARE_PER_SEC_PRECISION(overrides?: CallOverrides): Promise; + + accVeJoePerShare(overrides?: CallOverrides): Promise; + + claim(overrides?: CallOverrides): Promise; + + deposit(_amount: BigNumberish, overrides?: CallOverrides): Promise; + + getPendingVeJoe(_user: string, overrides?: CallOverrides): Promise; + + initialize( + _joe: string, + _veJoe: string, + _veJoePerSharePerSec: BigNumberish, + _speedUpVeJoePerSharePerSec: BigNumberish, + _speedUpThreshold: BigNumberish, + _speedUpDuration: BigNumberish, + _maxCapPct: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + joe(overrides?: CallOverrides): Promise; + + lastRewardTimestamp(overrides?: CallOverrides): Promise; + + maxCapPct(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setMaxCapPct(_maxCapPct: BigNumberish, overrides?: CallOverrides): Promise; + + setSpeedUpThreshold(_speedUpThreshold: BigNumberish, overrides?: CallOverrides): Promise; + + setVeJoePerSharePerSec(_veJoePerSharePerSec: BigNumberish, overrides?: CallOverrides): Promise; + + speedUpDuration(overrides?: CallOverrides): Promise; + + speedUpThreshold(overrides?: CallOverrides): Promise; + + speedUpVeJoePerSharePerSec(overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, overrides?: CallOverrides): Promise; + + updateRewardVars(overrides?: CallOverrides): Promise; + + upperLimitMaxCapPct(overrides?: CallOverrides): Promise; + + upperLimitVeJoePerSharePerSec(overrides?: CallOverrides): Promise; + + userInfos( + arg0: string, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + balance: BigNumber; + rewardDebt: BigNumber; + lastClaimTimestamp: BigNumber; + speedUpEndTimestamp: BigNumber; + } + >; + + veJoe(overrides?: CallOverrides): Promise; + + veJoePerSharePerSec(overrides?: CallOverrides): Promise; + + withdraw(_amount: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + 'Claim(address,uint256)'(user?: string | null, amount?: null): ClaimEventFilter; + Claim(user?: string | null, amount?: null): ClaimEventFilter; + + 'Deposit(address,uint256)'(user?: string | null, amount?: null): DepositEventFilter; + Deposit(user?: string | null, amount?: null): DepositEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'UpdateMaxCapPct(address,uint256)'(user?: string | null, maxCapPct?: null): UpdateMaxCapPctEventFilter; + UpdateMaxCapPct(user?: string | null, maxCapPct?: null): UpdateMaxCapPctEventFilter; + + 'UpdateRewardVars(uint256,uint256)'( + lastRewardTimestamp?: null, + accVeJoePerShare?: null, + ): UpdateRewardVarsEventFilter; + UpdateRewardVars(lastRewardTimestamp?: null, accVeJoePerShare?: null): UpdateRewardVarsEventFilter; + + 'UpdateSpeedUpThreshold(address,uint256)'( + user?: string | null, + speedUpThreshold?: null, + ): UpdateSpeedUpThresholdEventFilter; + UpdateSpeedUpThreshold(user?: string | null, speedUpThreshold?: null): UpdateSpeedUpThresholdEventFilter; + + 'UpdateVeJoePerSharePerSec(address,uint256)'( + user?: string | null, + veJoePerSharePerSec?: null, + ): UpdateVeJoePerSharePerSecEventFilter; + UpdateVeJoePerSharePerSec(user?: string | null, veJoePerSharePerSec?: null): UpdateVeJoePerSharePerSecEventFilter; + + 'Withdraw(address,uint256,uint256)'( + user?: string | null, + withdrawAmount?: null, + burnAmount?: null, + ): WithdrawEventFilter; + Withdraw(user?: string | null, withdrawAmount?: null, burnAmount?: null): WithdrawEventFilter; + }; + + estimateGas: { + ACC_VEJOE_PER_SHARE_PRECISION(overrides?: CallOverrides): Promise; + + VEJOE_PER_SHARE_PER_SEC_PRECISION(overrides?: CallOverrides): Promise; + + accVeJoePerShare(overrides?: CallOverrides): Promise; + + claim(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit(_amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + getPendingVeJoe(_user: string, overrides?: CallOverrides): Promise; + + initialize( + _joe: string, + _veJoe: string, + _veJoePerSharePerSec: BigNumberish, + _speedUpVeJoePerSharePerSec: BigNumberish, + _speedUpThreshold: BigNumberish, + _speedUpDuration: BigNumberish, + _maxCapPct: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + joe(overrides?: CallOverrides): Promise; + + lastRewardTimestamp(overrides?: CallOverrides): Promise; + + maxCapPct(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + setMaxCapPct( + _maxCapPct: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setSpeedUpThreshold( + _speedUpThreshold: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setVeJoePerSharePerSec( + _veJoePerSharePerSec: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + speedUpDuration(overrides?: CallOverrides): Promise; + + speedUpThreshold(overrides?: CallOverrides): Promise; + + speedUpVeJoePerSharePerSec(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateRewardVars(overrides?: Overrides & { from?: string | Promise }): Promise; + + upperLimitMaxCapPct(overrides?: CallOverrides): Promise; + + upperLimitVeJoePerSharePerSec(overrides?: CallOverrides): Promise; + + userInfos(arg0: string, overrides?: CallOverrides): Promise; + + veJoe(overrides?: CallOverrides): Promise; + + veJoePerSharePerSec(overrides?: CallOverrides): Promise; + + withdraw(_amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + }; + + populateTransaction: { + ACC_VEJOE_PER_SHARE_PRECISION(overrides?: CallOverrides): Promise; + + VEJOE_PER_SHARE_PER_SEC_PRECISION(overrides?: CallOverrides): Promise; + + accVeJoePerShare(overrides?: CallOverrides): Promise; + + claim(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getPendingVeJoe(_user: string, overrides?: CallOverrides): Promise; + + initialize( + _joe: string, + _veJoe: string, + _veJoePerSharePerSec: BigNumberish, + _speedUpVeJoePerSharePerSec: BigNumberish, + _speedUpThreshold: BigNumberish, + _speedUpDuration: BigNumberish, + _maxCapPct: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + joe(overrides?: CallOverrides): Promise; + + lastRewardTimestamp(overrides?: CallOverrides): Promise; + + maxCapPct(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + setMaxCapPct( + _maxCapPct: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setSpeedUpThreshold( + _speedUpThreshold: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setVeJoePerSharePerSec( + _veJoePerSharePerSec: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + speedUpDuration(overrides?: CallOverrides): Promise; + + speedUpThreshold(overrides?: CallOverrides): Promise; + + speedUpVeJoePerSharePerSec(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateRewardVars(overrides?: Overrides & { from?: string | Promise }): Promise; + + upperLimitMaxCapPct(overrides?: CallOverrides): Promise; + + upperLimitVeJoePerSharePerSec(overrides?: CallOverrides): Promise; + + userInfos(arg0: string, overrides?: CallOverrides): Promise; + + veJoe(overrides?: CallOverrides): Promise; + + veJoePerSharePerSec(overrides?: CallOverrides): Promise; + + withdraw( + _amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; +} diff --git a/src/apps/trader-joe/contracts/ethers/common.ts b/src/apps/trader-joe/contracts/ethers/common.ts new file mode 100644 index 000000000..6cfb10425 --- /dev/null +++ b/src/apps/trader-joe/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/trader-joe/contracts/ethers/factories/TraderJoeChefBoosted__factory.ts b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefBoosted__factory.ts new file mode 100644 index 000000000..c59682754 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefBoosted__factory.ts @@ -0,0 +1,739 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { TraderJoeChefBoosted, TraderJoeChefBoostedInterface } from '../TraderJoeChefBoosted'; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'allocPoint', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'veJoeShareBp', + type: 'uint256', + }, + { + indexed: true, + internalType: 'contract IERC20', + name: 'lpToken', + type: 'address', + }, + { + indexed: true, + internalType: 'contract IRewarder', + name: 'rewarder', + type: 'address', + }, + ], + name: 'Add', + 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: '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: 'user', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Harvest', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Init', + 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: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'allocPoint', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'veJoeShareBp', + type: 'uint256', + }, + { + indexed: true, + internalType: 'contract IRewarder', + name: 'rewarder', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'overwrite', + type: 'bool', + }, + ], + name: 'Set', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'lastRewardTimestamp', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'lpSupply', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'accJoePerShare', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'accJoePerFactorPerShare', + type: 'uint256', + }, + ], + name: 'UpdatePool', + 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: 'JOE', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'MASTER_CHEF_V2', + outputs: [ + { + internalType: 'contract IMasterChefJoe', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'MASTER_PID', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'VEJOE', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint96', + name: '_allocPoint', + type: 'uint96', + }, + { + internalType: 'uint32', + name: '_veJoeShareBp', + type: 'uint32', + }, + { + 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: '', + type: 'uint256', + }, + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'claimableJoe', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + 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: 'harvestFromMasterChef', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IERC20', + name: '_dummyToken', + type: 'address', + }, + ], + name: 'init', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IMasterChefJoe', + name: '_MASTER_CHEF_V2', + type: 'address', + }, + { + internalType: 'contract IERC20', + name: '_joe', + type: 'address', + }, + { + internalType: 'contract IERC20', + name: '_veJoe', + type: 'address', + }, + { + internalType: 'uint256', + name: '_MASTER_PID', + type: 'uint256', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'joePerSec', + outputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + 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: 'pendingTokens', + outputs: [ + { + internalType: 'uint256', + name: 'pendingJoe', + type: 'uint256', + }, + { + internalType: 'address', + name: 'bonusTokenAddress', + type: 'address', + }, + { + internalType: 'string', + name: 'bonusTokenSymbol', + type: 'string', + }, + { + internalType: 'uint256', + name: 'pendingBonusToken', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'poolInfo', + outputs: [ + { + internalType: 'contract IERC20', + name: 'lpToken', + type: 'address', + }, + { + internalType: 'uint96', + name: 'allocPoint', + type: 'uint96', + }, + { + internalType: 'uint256', + name: 'accJoePerShare', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'accJoePerFactorPerShare', + type: 'uint256', + }, + { + internalType: 'uint64', + name: 'lastRewardTimestamp', + type: 'uint64', + }, + { + internalType: 'contract IRewarder', + name: 'rewarder', + type: 'address', + }, + { + internalType: 'uint32', + name: 'veJoeShareBp', + type: 'uint32', + }, + { + internalType: 'uint256', + name: 'totalFactor', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'totalLpSupply', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'poolLength', + outputs: [ + { + internalType: 'uint256', + name: 'pools', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'renounceOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_pid', + type: 'uint256', + }, + { + internalType: 'uint96', + name: '_allocPoint', + type: 'uint96', + }, + { + internalType: 'uint32', + name: '_veJoeShareBp', + type: 'uint32', + }, + { + internalType: 'contract IRewarder', + name: '_rewarder', + type: 'address', + }, + { + internalType: 'bool', + name: '_overwrite', + type: 'bool', + }, + ], + name: 'set', + outputs: [], + stateMutability: 'nonpayable', + 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: 'address', + name: '_user', + type: 'address', + }, + { + internalType: 'uint256', + name: '_newVeJoeBalance', + type: 'uint256', + }, + ], + name: 'updateFactor', + 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', + }, + { + internalType: 'uint256', + name: 'factor', + 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 TraderJoeChefBoosted__factory { + static readonly abi = _abi; + static createInterface(): TraderJoeChefBoostedInterface { + return new utils.Interface(_abi) as TraderJoeChefBoostedInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TraderJoeChefBoosted { + return new Contract(address, _abi, signerOrProvider) as TraderJoeChefBoosted; + } +} diff --git a/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV2Rewarder__factory.ts b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV2Rewarder__factory.ts new file mode 100644 index 000000000..91e118bc6 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV2Rewarder__factory.ts @@ -0,0 +1,478 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { TraderJoeChefV2Rewarder, TraderJoeChefV2RewarderInterface } from '../TraderJoeChefV2Rewarder'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: '_MASTERCHEF_V2', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [], + name: 'LogInit', + 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', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + ], + name: 'LogOnReward', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'allocPoint', + type: 'uint256', + }, + ], + name: 'LogPoolAddition', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'rewardPerSecond', + type: 'uint256', + }, + ], + name: 'LogRewardPerSecond', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'allocPoint', + type: 'uint256', + }, + ], + name: 'LogSetPool', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint64', + name: 'lastRewardTime', + type: 'uint64', + }, + { + indexed: false, + internalType: 'uint256', + name: 'lpSupply', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'accSushiPerShare', + type: 'uint256', + }, + ], + name: 'LogUpdatePool', + 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', + }, + { + inputs: [], + name: 'MASTERCHEF_V2', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'claimOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'data', + type: 'bytes', + }, + ], + name: 'init', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [], + name: 'masterLpToken', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + internalType: 'address', + name: '_user', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'lpToken', + type: 'uint256', + }, + ], + name: 'onSushiReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'owner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pendingOwner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_pid', + type: 'uint256', + }, + { + internalType: 'address', + name: '_user', + type: 'address', + }, + ], + name: 'pendingToken', + outputs: [ + { + internalType: 'uint256', + name: 'pending', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + { + internalType: 'address', + name: 'user', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'pendingTokens', + outputs: [ + { + internalType: 'contract IERC20[]', + name: 'rewardTokens', + type: 'address[]', + }, + { + internalType: 'uint256[]', + name: 'rewardAmounts', + type: 'uint256[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'poolInfo', + outputs: [ + { + internalType: 'uint128', + name: 'accSushiPerShare', + type: 'uint128', + }, + { + internalType: 'uint64', + name: 'lastRewardTime', + type: 'uint64', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardPerSecond', + 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: 'uint256', + name: '_rewardPerSecond', + type: 'uint256', + }, + ], + name: 'setRewardPerSecond', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + { + internalType: 'bool', + name: 'direct', + type: 'bool', + }, + { + internalType: 'bool', + name: 'renounce', + type: 'bool', + }, + ], + name: 'transferOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'pid', + type: 'uint256', + }, + ], + name: 'updatePool', + outputs: [ + { + components: [ + { + internalType: 'uint128', + name: 'accSushiPerShare', + type: 'uint128', + }, + { + internalType: 'uint64', + name: 'lastRewardTime', + type: 'uint64', + }, + ], + internalType: 'struct RulerRewarder.PoolInfo', + name: 'pool', + type: 'tuple', + }, + ], + 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', + }, +]; + +export class TraderJoeChefV2Rewarder__factory { + static readonly abi = _abi; + static createInterface(): TraderJoeChefV2RewarderInterface { + return new utils.Interface(_abi) as TraderJoeChefV2RewarderInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TraderJoeChefV2Rewarder { + return new Contract(address, _abi, signerOrProvider) as TraderJoeChefV2Rewarder; + } +} diff --git a/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV2__factory.ts b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV2__factory.ts new file mode 100644 index 000000000..db4af2a24 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV2__factory.ts @@ -0,0 +1,839 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { TraderJoeChefV2, TraderJoeChefV2Interface } from '../TraderJoeChefV2'; + +const _abi = [ + { + type: 'constructor', + stateMutability: 'nonpayable', + inputs: [ + { + type: 'address', + name: '_joe', + internalType: 'contract JoeToken', + }, + { + type: 'address', + name: '_devAddr', + internalType: 'address', + }, + { + type: 'address', + name: '_treasuryAddr', + internalType: 'address', + }, + { + type: 'address', + name: '_investorAddr', + internalType: 'address', + }, + { + type: 'uint256', + name: '_joePerSec', + internalType: 'uint256', + }, + { + type: 'uint256', + name: '_startTimestamp', + internalType: 'uint256', + }, + { + type: 'uint256', + name: '_devPercent', + internalType: 'uint256', + }, + { + type: 'uint256', + name: '_treasuryPercent', + internalType: 'uint256', + }, + { + type: 'uint256', + name: '_investorPercent', + internalType: 'uint256', + }, + ], + }, + { + type: 'event', + name: 'Add', + inputs: [ + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'allocPoint', + internalType: 'uint256', + indexed: false, + }, + { + type: 'address', + name: 'lpToken', + internalType: 'contract IERC20', + indexed: true, + }, + { + type: 'address', + name: 'rewarder', + internalType: 'contract IRewarder', + indexed: true, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'Deposit', + inputs: [ + { + type: 'address', + name: 'user', + internalType: 'address', + indexed: true, + }, + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'EmergencyWithdraw', + inputs: [ + { + type: 'address', + name: 'user', + internalType: 'address', + indexed: true, + }, + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'Harvest', + inputs: [ + { + type: 'address', + name: 'user', + internalType: 'address', + indexed: true, + }, + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'OwnershipTransferred', + inputs: [ + { + type: 'address', + name: 'previousOwner', + internalType: 'address', + indexed: true, + }, + { + type: 'address', + name: 'newOwner', + internalType: 'address', + indexed: true, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'Set', + inputs: [ + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'allocPoint', + internalType: 'uint256', + indexed: false, + }, + { + type: 'address', + name: 'rewarder', + internalType: 'contract IRewarder', + indexed: true, + }, + { + type: 'bool', + name: 'overwrite', + internalType: 'bool', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'SetDevAddress', + inputs: [ + { + type: 'address', + name: 'oldAddress', + internalType: 'address', + indexed: true, + }, + { + type: 'address', + name: 'newAddress', + internalType: 'address', + indexed: true, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'UpdateEmissionRate', + inputs: [ + { + type: 'address', + name: 'user', + internalType: 'address', + indexed: true, + }, + { + type: 'uint256', + name: '_joePerSec', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'UpdatePool', + inputs: [ + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'lastRewardTimestamp', + internalType: 'uint256', + indexed: false, + }, + { + type: 'uint256', + name: 'lpSupply', + internalType: 'uint256', + indexed: false, + }, + { + type: 'uint256', + name: 'accJoePerShare', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'Withdraw', + inputs: [ + { + type: 'address', + name: 'user', + internalType: 'address', + indexed: true, + }, + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'add', + inputs: [ + { + type: 'uint256', + name: '_allocPoint', + internalType: 'uint256', + }, + { + type: 'address', + name: '_lpToken', + internalType: 'contract IERC20', + }, + { + type: 'address', + name: '_rewarder', + internalType: 'contract IRewarder', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'deposit', + inputs: [ + { + type: 'uint256', + name: '_pid', + internalType: 'uint256', + }, + { + type: 'uint256', + name: '_amount', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'dev', + inputs: [ + { + type: 'address', + name: '_devAddr', + internalType: 'address', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'address', + }, + ], + name: 'devAddr', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'devPercent', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'emergencyWithdraw', + inputs: [ + { + type: 'uint256', + name: '_pid', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'address', + }, + ], + name: 'investorAddr', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'investorPercent', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'contract JoeToken', + }, + ], + name: 'joe', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'joePerSec', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'massUpdatePools', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'address', + }, + ], + name: 'owner', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: 'pendingJoe', + internalType: 'uint256', + }, + { + type: 'address', + name: 'bonusTokenAddress', + internalType: 'address', + }, + { + type: 'string', + name: 'bonusTokenSymbol', + internalType: 'string', + }, + { + type: 'uint256', + name: 'pendingBonusToken', + internalType: 'uint256', + }, + ], + name: 'pendingTokens', + inputs: [ + { + type: 'uint256', + name: '_pid', + internalType: 'uint256', + }, + { + type: 'address', + name: '_user', + internalType: 'address', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: 'lpToken', + internalType: 'contract IERC20', + }, + { + type: 'uint256', + name: 'allocPoint', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'lastRewardTimestamp', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'accJoePerShare', + internalType: 'uint256', + }, + { + type: 'address', + name: 'rewarder', + internalType: 'contract IRewarder', + }, + ], + name: 'poolInfo', + inputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'poolLength', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'renounceOwnership', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: 'bonusTokenAddress', + internalType: 'address', + }, + { + type: 'string', + name: 'bonusTokenSymbol', + internalType: 'string', + }, + ], + name: 'rewarderBonusTokenInfo', + inputs: [ + { + type: 'uint256', + name: '_pid', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'set', + inputs: [ + { + type: 'uint256', + name: '_pid', + internalType: 'uint256', + }, + { + type: 'uint256', + name: '_allocPoint', + internalType: 'uint256', + }, + { + type: 'address', + name: '_rewarder', + internalType: 'contract IRewarder', + }, + { + type: 'bool', + name: 'overwrite', + internalType: 'bool', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'setDevPercent', + inputs: [ + { + type: 'uint256', + name: '_newDevPercent', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'setInvestorAddr', + inputs: [ + { + type: 'address', + name: '_investorAddr', + internalType: 'address', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'setInvestorPercent', + inputs: [ + { + type: 'uint256', + name: '_newInvestorPercent', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'setTreasuryAddr', + inputs: [ + { + type: 'address', + name: '_treasuryAddr', + internalType: 'address', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'setTreasuryPercent', + inputs: [ + { + type: 'uint256', + name: '_newTreasuryPercent', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'startTimestamp', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'totalAllocPoint', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'transferOwnership', + inputs: [ + { + type: 'address', + name: 'newOwner', + internalType: 'address', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'address', + }, + ], + name: 'treasuryAddr', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'treasuryPercent', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'updateEmissionRate', + inputs: [ + { + type: 'uint256', + name: '_joePerSec', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'updatePool', + inputs: [ + { + type: 'uint256', + name: '_pid', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'rewardDebt', + internalType: 'uint256', + }, + ], + name: 'userInfo', + inputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + { + type: 'address', + name: '', + internalType: 'address', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'withdraw', + inputs: [ + { + type: 'uint256', + name: '_pid', + internalType: 'uint256', + }, + { + type: 'uint256', + name: '_amount', + internalType: 'uint256', + }, + ], + }, +]; + +export class TraderJoeChefV2__factory { + static readonly abi = _abi; + static createInterface(): TraderJoeChefV2Interface { + return new utils.Interface(_abi) as TraderJoeChefV2Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TraderJoeChefV2 { + return new Contract(address, _abi, signerOrProvider) as TraderJoeChefV2; + } +} diff --git a/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV3Rewarder__factory.ts b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV3Rewarder__factory.ts new file mode 100644 index 000000000..6c5649fa9 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV3Rewarder__factory.ts @@ -0,0 +1,370 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { TraderJoeChefV3Rewarder, TraderJoeChefV3RewarderInterface } from '../TraderJoeChefV3Rewarder'; + +const _abi = [ + { + type: 'constructor', + stateMutability: 'nonpayable', + inputs: [ + { + type: 'address', + name: '_rewardToken', + internalType: 'contract IERC20', + }, + { + type: 'address', + name: '_lpToken', + internalType: 'contract IERC20', + }, + { + type: 'uint256', + name: '_tokenPerSec', + internalType: 'uint256', + }, + { + type: 'address', + name: '_MCJ', + internalType: 'contract IMasterChefJoe', + }, + { + type: 'bool', + name: '_isNative', + internalType: 'bool', + }, + ], + }, + { + type: 'event', + name: 'OnReward', + inputs: [ + { + type: 'address', + name: 'user', + internalType: 'address', + indexed: true, + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'OwnershipTransferred', + inputs: [ + { + type: 'address', + name: 'previousOwner', + internalType: 'address', + indexed: true, + }, + { + type: 'address', + name: 'newOwner', + internalType: 'address', + indexed: true, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'RewardRateUpdated', + inputs: [ + { + type: 'uint256', + name: 'oldRate', + internalType: 'uint256', + indexed: false, + }, + { + type: 'uint256', + name: 'newRate', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'contract IMasterChefJoe', + }, + ], + name: 'MCJ', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'balance', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'claimOwnership', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'emergencyWithdraw', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'bool', + name: '', + internalType: 'bool', + }, + ], + name: 'isNative', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'contract IERC20', + }, + ], + name: 'lpToken', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'onJoeReward', + inputs: [ + { + type: 'address', + name: '_user', + internalType: 'address', + }, + { + type: 'uint256', + name: '_lpAmount', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'address', + }, + ], + name: 'owner', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'address', + }, + ], + name: 'pendingOwner', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: 'pending', + internalType: 'uint256', + }, + ], + name: 'pendingTokens', + inputs: [ + { + type: 'address', + name: '_user', + internalType: 'address', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: 'accTokenPerShare', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'lastRewardTimestamp', + internalType: 'uint256', + }, + ], + name: 'poolInfo', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'contract IERC20', + }, + ], + name: 'rewardToken', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'setRewardRate', + inputs: [ + { + type: 'uint256', + name: '_tokenPerSec', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'tokenPerSec', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'transferOwnership', + inputs: [ + { + type: 'address', + name: 'newOwner', + internalType: 'address', + }, + { + type: 'bool', + name: 'direct', + internalType: 'bool', + }, + { + type: 'bool', + name: 'renounce', + internalType: 'bool', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [ + { + type: 'tuple', + name: 'pool', + internalType: 'struct SimpleRewarderPerSec.PoolInfo', + components: [ + { + type: 'uint256', + name: 'accTokenPerShare', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'lastRewardTimestamp', + internalType: 'uint256', + }, + ], + }, + ], + name: 'updatePool', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'rewardDebt', + internalType: 'uint256', + }, + ], + name: 'userInfo', + inputs: [ + { + type: 'address', + name: '', + internalType: 'address', + }, + ], + }, + { + type: 'receive', + stateMutability: 'payable', + }, +]; + +export class TraderJoeChefV3Rewarder__factory { + static readonly abi = _abi; + static createInterface(): TraderJoeChefV3RewarderInterface { + return new utils.Interface(_abi) as TraderJoeChefV3RewarderInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TraderJoeChefV3Rewarder { + return new Contract(address, _abi, signerOrProvider) as TraderJoeChefV3Rewarder; + } +} diff --git a/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV3__factory.ts b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV3__factory.ts new file mode 100644 index 000000000..1014499e5 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeChefV3__factory.ts @@ -0,0 +1,623 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { TraderJoeChefV3, TraderJoeChefV3Interface } from '../TraderJoeChefV3'; + +const _abi = [ + { + type: 'constructor', + stateMutability: 'nonpayable', + inputs: [ + { + type: 'address', + name: '_MASTER_CHEF_V2', + internalType: 'contract IMasterChef', + }, + { + type: 'address', + name: '_joe', + internalType: 'contract IERC20', + }, + { + type: 'uint256', + name: '_MASTER_PID', + internalType: 'uint256', + }, + ], + }, + { + type: 'event', + name: 'Add', + inputs: [ + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'allocPoint', + internalType: 'uint256', + indexed: false, + }, + { + type: 'address', + name: 'lpToken', + internalType: 'contract IERC20', + indexed: true, + }, + { + type: 'address', + name: 'rewarder', + internalType: 'contract IRewarder', + indexed: true, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'Deposit', + inputs: [ + { + type: 'address', + name: 'user', + internalType: 'address', + indexed: true, + }, + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'EmergencyWithdraw', + inputs: [ + { + type: 'address', + name: 'user', + internalType: 'address', + indexed: true, + }, + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'Harvest', + inputs: [ + { + type: 'address', + name: 'user', + internalType: 'address', + indexed: true, + }, + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'Init', + inputs: [], + anonymous: false, + }, + { + type: 'event', + name: 'OwnershipTransferred', + inputs: [ + { + type: 'address', + name: 'previousOwner', + internalType: 'address', + indexed: true, + }, + { + type: 'address', + name: 'newOwner', + internalType: 'address', + indexed: true, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'Set', + inputs: [ + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'allocPoint', + internalType: 'uint256', + indexed: false, + }, + { + type: 'address', + name: 'rewarder', + internalType: 'contract IRewarder', + indexed: true, + }, + { + type: 'bool', + name: 'overwrite', + internalType: 'bool', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'UpdatePool', + inputs: [ + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'lastRewardTimestamp', + internalType: 'uint256', + indexed: false, + }, + { + type: 'uint256', + name: 'lpSupply', + internalType: 'uint256', + indexed: false, + }, + { + type: 'uint256', + name: 'accJoePerShare', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'event', + name: 'Withdraw', + inputs: [ + { + type: 'address', + name: 'user', + internalType: 'address', + indexed: true, + }, + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + indexed: true, + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + indexed: false, + }, + ], + anonymous: false, + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'contract IERC20', + }, + ], + name: 'JOE', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'contract IMasterChef', + }, + ], + name: 'MASTER_CHEF_V2', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'MASTER_PID', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'add', + inputs: [ + { + type: 'uint256', + name: 'allocPoint', + internalType: 'uint256', + }, + { + type: 'address', + name: '_lpToken', + internalType: 'contract IERC20', + }, + { + type: 'address', + name: '_rewarder', + internalType: 'contract IRewarder', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'deposit', + inputs: [ + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'emergencyWithdraw', + inputs: [ + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'harvestFromMasterChef', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'init', + inputs: [ + { + type: 'address', + name: 'dummyToken', + internalType: 'contract IERC20', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + }, + ], + name: 'joePerSec', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'massUpdatePools', + inputs: [ + { + type: 'uint256[]', + name: 'pids', + internalType: 'uint256[]', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: '', + internalType: 'address', + }, + ], + name: 'owner', + inputs: [], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: 'pendingJoe', + internalType: 'uint256', + }, + { + type: 'address', + name: 'bonusTokenAddress', + internalType: 'address', + }, + { + type: 'string', + name: 'bonusTokenSymbol', + internalType: 'string', + }, + { + type: 'uint256', + name: 'pendingBonusToken', + internalType: 'uint256', + }, + ], + name: 'pendingTokens', + inputs: [ + { + type: 'uint256', + name: '_pid', + internalType: 'uint256', + }, + { + type: 'address', + name: '_user', + internalType: 'address', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'address', + name: 'lpToken', + internalType: 'contract IERC20', + }, + { + type: 'uint256', + name: 'accJoePerShare', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'lastRewardTimestamp', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'allocPoint', + internalType: 'uint256', + }, + { + type: 'address', + name: 'rewarder', + internalType: 'contract IRewarder', + }, + ], + name: 'poolInfo', + inputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: 'pools', + internalType: 'uint256', + }, + ], + name: 'poolLength', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'renounceOwnership', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'set', + inputs: [ + { + type: 'uint256', + name: '_pid', + internalType: 'uint256', + }, + { + type: 'uint256', + name: '_allocPoint', + internalType: 'uint256', + }, + { + type: 'address', + name: '_rewarder', + internalType: 'contract IRewarder', + }, + { + type: 'bool', + name: 'overwrite', + internalType: 'bool', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + ], + name: 'totalAllocPoint', + inputs: [], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'transferOwnership', + inputs: [ + { + type: 'address', + name: 'newOwner', + internalType: 'address', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'updatePool', + inputs: [ + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + }, + ], + }, + { + type: 'function', + stateMutability: 'view', + outputs: [ + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'rewardDebt', + internalType: 'uint256', + }, + ], + name: 'userInfo', + inputs: [ + { + type: 'uint256', + name: '', + internalType: 'uint256', + }, + { + type: 'address', + name: '', + internalType: 'address', + }, + ], + }, + { + type: 'function', + stateMutability: 'nonpayable', + outputs: [], + name: 'withdraw', + inputs: [ + { + type: 'uint256', + name: 'pid', + internalType: 'uint256', + }, + { + type: 'uint256', + name: 'amount', + internalType: 'uint256', + }, + ], + }, +]; + +export class TraderJoeChefV3__factory { + static readonly abi = _abi; + static createInterface(): TraderJoeChefV3Interface { + return new utils.Interface(_abi) as TraderJoeChefV3Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TraderJoeChefV3 { + return new Contract(address, _abi, signerOrProvider) as TraderJoeChefV3; + } +} diff --git a/src/apps/trader-joe/contracts/ethers/factories/TraderJoeStableStaking__factory.ts b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeStableStaking__factory.ts new file mode 100644 index 000000000..32217433d --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeStableStaking__factory.ts @@ -0,0 +1,538 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { TraderJoeStableStaking, TraderJoeStableStakingInterface } from '../TraderJoeStableStaking'; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'rewardToken', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'ClaimReward', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'fee', + type: 'uint256', + }, + ], + name: 'Deposit', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'newFee', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'oldFee', + type: 'uint256', + }, + ], + name: 'DepositFeeChanged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + 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: false, + internalType: 'address', + name: 'token', + type: 'address', + }, + ], + name: 'RewardTokenAdded', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'token', + type: 'address', + }, + ], + name: 'RewardTokenRemoved', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Withdraw', + type: 'event', + }, + { + inputs: [], + name: 'ACC_REWARD_PER_SHARE_PRECISION', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'DEPOSIT_FEE_PERCENT_PRECISION', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '', + type: 'address', + }, + ], + name: 'accRewardPerShare', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '_rewardToken', + type: 'address', + }, + ], + name: 'addRewardToken', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'deposit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'depositFeePercent', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'emergencyWithdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'feeCollector', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_user', + type: 'address', + }, + { + internalType: 'contract IERC20Upgradeable', + name: '_rewardToken', + type: 'address', + }, + ], + name: 'getUserInfo', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '_rewardToken', + type: 'address', + }, + { + internalType: 'contract IERC20Upgradeable', + name: '_joe', + type: 'address', + }, + { + internalType: 'address', + name: '_feeCollector', + type: 'address', + }, + { + internalType: 'uint256', + name: '_depositFeePercent', + type: 'uint256', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'internalJoeBalance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '', + type: 'address', + }, + ], + name: 'isRewardToken', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'joe', + outputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '', + type: 'address', + }, + ], + name: 'lastRewardBalance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'owner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_user', + type: 'address', + }, + { + internalType: 'contract IERC20Upgradeable', + name: '_token', + type: 'address', + }, + ], + name: 'pendingReward', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '_rewardToken', + type: 'address', + }, + ], + name: 'removeRewardToken', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'renounceOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'rewardTokens', + outputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardTokensLength', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_depositFeePercent', + type: 'uint256', + }, + ], + name: 'setDepositFeePercent', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'transferOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '_token', + type: 'address', + }, + ], + name: 'updateReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class TraderJoeStableStaking__factory { + static readonly abi = _abi; + static createInterface(): TraderJoeStableStakingInterface { + return new utils.Interface(_abi) as TraderJoeStableStakingInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TraderJoeStableStaking { + return new Contract(address, _abi, signerOrProvider) as TraderJoeStableStaking; + } +} diff --git a/src/apps/trader-joe/contracts/ethers/factories/TraderJoeVeJoeStaking__factory.ts b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeVeJoeStaking__factory.ts new file mode 100644 index 000000000..cff2288ca --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/factories/TraderJoeVeJoeStaking__factory.ts @@ -0,0 +1,555 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { TraderJoeVeJoeStaking, TraderJoeVeJoeStakingInterface } from '../TraderJoeVeJoeStaking'; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Claim', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Deposit', + 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: false, + internalType: 'uint256', + name: 'maxCapPct', + type: 'uint256', + }, + ], + name: 'UpdateMaxCapPct', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'lastRewardTimestamp', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'accVeJoePerShare', + type: 'uint256', + }, + ], + name: 'UpdateRewardVars', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'speedUpThreshold', + type: 'uint256', + }, + ], + name: 'UpdateSpeedUpThreshold', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'veJoePerSharePerSec', + type: 'uint256', + }, + ], + name: 'UpdateVeJoePerSharePerSec', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'withdrawAmount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'burnAmount', + type: 'uint256', + }, + ], + name: 'Withdraw', + type: 'event', + }, + { + inputs: [], + name: 'ACC_VEJOE_PER_SHARE_PRECISION', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'VEJOE_PER_SHARE_PER_SEC_PRECISION', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'accVeJoePerShare', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'claim', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'deposit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_user', + type: 'address', + }, + ], + name: 'getPendingVeJoe', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '_joe', + type: 'address', + }, + { + internalType: 'contract VeJoeToken', + name: '_veJoe', + type: 'address', + }, + { + internalType: 'uint256', + name: '_veJoePerSharePerSec', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_speedUpVeJoePerSharePerSec', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_speedUpThreshold', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_speedUpDuration', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_maxCapPct', + type: 'uint256', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'joe', + outputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lastRewardTimestamp', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'maxCapPct', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'owner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'renounceOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_maxCapPct', + type: 'uint256', + }, + ], + name: 'setMaxCapPct', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_speedUpThreshold', + type: 'uint256', + }, + ], + name: 'setSpeedUpThreshold', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_veJoePerSharePerSec', + type: 'uint256', + }, + ], + name: 'setVeJoePerSharePerSec', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'speedUpDuration', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'speedUpThreshold', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'speedUpVeJoePerSharePerSec', + 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: [], + name: 'updateRewardVars', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'upperLimitMaxCapPct', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'upperLimitVeJoePerSharePerSec', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'userInfos', + outputs: [ + { + internalType: 'uint256', + name: 'balance', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'rewardDebt', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'lastClaimTimestamp', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'speedUpEndTimestamp', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'veJoe', + outputs: [ + { + internalType: 'contract VeJoeToken', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'veJoePerSharePerSec', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '_amount', + type: 'uint256', + }, + ], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class TraderJoeVeJoeStaking__factory { + static readonly abi = _abi; + static createInterface(): TraderJoeVeJoeStakingInterface { + return new utils.Interface(_abi) as TraderJoeVeJoeStakingInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TraderJoeVeJoeStaking { + return new Contract(address, _abi, signerOrProvider) as TraderJoeVeJoeStaking; + } +} diff --git a/src/apps/trader-joe/contracts/ethers/factories/index.ts b/src/apps/trader-joe/contracts/ethers/factories/index.ts new file mode 100644 index 000000000..e2bade968 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/factories/index.ts @@ -0,0 +1,10 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { TraderJoeChefBoosted__factory } from './TraderJoeChefBoosted__factory'; +export { TraderJoeChefV2__factory } from './TraderJoeChefV2__factory'; +export { TraderJoeChefV2Rewarder__factory } from './TraderJoeChefV2Rewarder__factory'; +export { TraderJoeChefV3__factory } from './TraderJoeChefV3__factory'; +export { TraderJoeChefV3Rewarder__factory } from './TraderJoeChefV3Rewarder__factory'; +export { TraderJoeStableStaking__factory } from './TraderJoeStableStaking__factory'; +export { TraderJoeVeJoeStaking__factory } from './TraderJoeVeJoeStaking__factory'; diff --git a/src/apps/trader-joe/contracts/ethers/index.ts b/src/apps/trader-joe/contracts/ethers/index.ts new file mode 100644 index 000000000..8026613b9 --- /dev/null +++ b/src/apps/trader-joe/contracts/ethers/index.ts @@ -0,0 +1,18 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { TraderJoeChefBoosted } from './TraderJoeChefBoosted'; +export type { TraderJoeChefV2 } from './TraderJoeChefV2'; +export type { TraderJoeChefV2Rewarder } from './TraderJoeChefV2Rewarder'; +export type { TraderJoeChefV3 } from './TraderJoeChefV3'; +export type { TraderJoeChefV3Rewarder } from './TraderJoeChefV3Rewarder'; +export type { TraderJoeStableStaking } from './TraderJoeStableStaking'; +export type { TraderJoeVeJoeStaking } from './TraderJoeVeJoeStaking'; +export * as factories from './factories'; +export { TraderJoeChefBoosted__factory } from './factories/TraderJoeChefBoosted__factory'; +export { TraderJoeChefV2Rewarder__factory } from './factories/TraderJoeChefV2Rewarder__factory'; +export { TraderJoeChefV2__factory } from './factories/TraderJoeChefV2__factory'; +export { TraderJoeChefV3Rewarder__factory } from './factories/TraderJoeChefV3Rewarder__factory'; +export { TraderJoeChefV3__factory } from './factories/TraderJoeChefV3__factory'; +export { TraderJoeStableStaking__factory } from './factories/TraderJoeStableStaking__factory'; +export { TraderJoeVeJoeStaking__factory } from './factories/TraderJoeVeJoeStaking__factory'; diff --git a/src/apps/trader-joe/contracts/index.ts b/src/apps/trader-joe/contracts/index.ts new file mode 100644 index 000000000..860136567 --- /dev/null +++ b/src/apps/trader-joe/contracts/index.ts @@ -0,0 +1,53 @@ +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 { TraderJoeChefBoosted__factory } from './ethers'; +import { TraderJoeChefV2__factory } from './ethers'; +import { TraderJoeChefV2Rewarder__factory } from './ethers'; +import { TraderJoeChefV3__factory } from './ethers'; +import { TraderJoeChefV3Rewarder__factory } from './ethers'; +import { TraderJoeStableStaking__factory } from './ethers'; +import { TraderJoeVeJoeStaking__factory } from './ethers'; + +// eslint-disable-next-line +type ContractOpts = { address: string; network: Network }; + +@Injectable() +export class TraderJoeContractFactory extends ContractFactory { + constructor(@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit) { + super((network: Network) => appToolkit.getNetworkProvider(network)); + } + + traderJoeChefBoosted({ address, network }: ContractOpts) { + return TraderJoeChefBoosted__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + traderJoeChefV2({ address, network }: ContractOpts) { + return TraderJoeChefV2__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + traderJoeChefV2Rewarder({ address, network }: ContractOpts) { + return TraderJoeChefV2Rewarder__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + traderJoeChefV3({ address, network }: ContractOpts) { + return TraderJoeChefV3__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + traderJoeChefV3Rewarder({ address, network }: ContractOpts) { + return TraderJoeChefV3Rewarder__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + traderJoeStableStaking({ address, network }: ContractOpts) { + return TraderJoeStableStaking__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + traderJoeVeJoeStaking({ address, network }: ContractOpts) { + return TraderJoeVeJoeStaking__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } +} + +export type { TraderJoeChefBoosted } from './ethers'; +export type { TraderJoeChefV2 } from './ethers'; +export type { TraderJoeChefV2Rewarder } from './ethers'; +export type { TraderJoeChefV3 } from './ethers'; +export type { TraderJoeChefV3Rewarder } from './ethers'; +export type { TraderJoeStableStaking } from './ethers'; +export type { TraderJoeVeJoeStaking } from './ethers'; diff --git a/src/apps/trader-joe/trader-joe.definition.ts b/src/apps/trader-joe/trader-joe.definition.ts new file mode 100644 index 000000000..c00ad48f0 --- /dev/null +++ b/src/apps/trader-joe/trader-joe.definition.ts @@ -0,0 +1,35 @@ +import { Register } from '~app-toolkit/decorators'; +import { AppDefinition } from '~app/app.definition'; +import { GroupType } from '~app/app.interface'; +import { ProtocolTag, ProtocolAction } from '~app/app.interface'; +import { Network } from '~types/network.interface'; + +export const TRADER_JOE_DEFINITION = { + id: 'trader-joe', + name: 'Trader Joe', + description: `Trader Joe is your one-stop decentralized trading platform on the Avalanche network.`, + groups: { + pool: { id: 'pool', type: GroupType.TOKEN }, + xJoe: { id: 'x-joe', type: GroupType.TOKEN }, + sJoe: { id: 's-joe', type: GroupType.POSITION }, + veJoeFarm: { id: 've-joe-farm', type: GroupType.POSITION }, + chefV2Farm: { id: 'chef-v2-farm', type: GroupType.POSITION }, + chefV3Farm: { id: 'chef-v3-farm', type: GroupType.POSITION }, + chefBoostedFarm: { id: 'chef-boosted-farm', type: GroupType.POSITION }, + }, + url: 'https://traderjoexyz.com/', + tags: [ProtocolTag.LIQUIDITY_POOL], + supportedNetworks: { [Network.AVALANCHE_MAINNET]: [ProtocolAction.VIEW] }, + primaryColor: '#ee6662', + token: { + address: '0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd', + network: Network.AVALANCHE_MAINNET, + }, +}; + +@Register.AppDefinition(TRADER_JOE_DEFINITION.id) +export class TraderJoeAppDefinition extends AppDefinition { + constructor() { + super(TRADER_JOE_DEFINITION); + } +} diff --git a/src/apps/trader-joe/trader-joe.module.ts b/src/apps/trader-joe/trader-joe.module.ts new file mode 100644 index 000000000..0cfd498b0 --- /dev/null +++ b/src/apps/trader-joe/trader-joe.module.ts @@ -0,0 +1,36 @@ +import { Module } from '@nestjs/common'; + +import { AppToolkitModule } from '~app-toolkit/app-toolkit.module'; +import { AbstractApp, ExternalAppImport } from '~app/app.dynamic-module'; +import { UniswapV2AppModule } from '~apps/uniswap-v2'; +import { PositionModule } from '~position/position.module'; + +import { AvalancheTraderJoeBalanceFetcher } from './avalanche/trader-joe.balance-fetcher'; +import { AvalancheTraderJoeChefBoostedFarmContractPositionFetcher } from './avalanche/trader-joe.chef-boosted-farm.contract-position-fetcher'; +import { AvalancheTraderJoeChefV2FarmContractPositionFetcher } from './avalanche/trader-joe.chef-v2-farm.contract-position-fetcher'; +import { AvalancheTraderJoeChefV3FarmContractPositionFetcher } from './avalanche/trader-joe.chef-v3-farm.contract-position-fetcher'; +import { AvalancheTraderJoePoolTokenFetcher } from './avalanche/trader-joe.pool.token-fetcher'; +import { AvalancheTraderJoeSJoeContractPositionFetcher } from './avalanche/trader-joe.s-joe.contract-position-fetcher'; +import { AvalancheTraderJoeTvlFetcher } from './avalanche/trader-joe.tvl-fetcher'; +import { AvalancheTraderJoeVeJoeFarmContractPositionFetcher } from './avalanche/trader-joe.ve-joe-farm.contract-position-fetcher'; +import { AvalancheTraderJoeXJoeTokenFetcher } from './avalanche/trader-joe.x-joe.token-fetcher'; +import { TraderJoeContractFactory } from './contracts'; +import { TraderJoeAppDefinition } from './trader-joe.definition'; + +@Module({ + imports: [PositionModule, AppToolkitModule, ...ExternalAppImport(UniswapV2AppModule)], + providers: [ + TraderJoeAppDefinition, + TraderJoeContractFactory, + AvalancheTraderJoeTvlFetcher, + AvalancheTraderJoeBalanceFetcher, + AvalancheTraderJoeChefV2FarmContractPositionFetcher, + AvalancheTraderJoeChefV3FarmContractPositionFetcher, + AvalancheTraderJoeChefBoostedFarmContractPositionFetcher, + AvalancheTraderJoePoolTokenFetcher, + AvalancheTraderJoeXJoeTokenFetcher, + AvalancheTraderJoeSJoeContractPositionFetcher, + AvalancheTraderJoeVeJoeFarmContractPositionFetcher, + ], +}) +export class TraderJoeAppModule extends AbstractApp() {}