From 45b17ed934c6c77a63160262b84126765abd9767 Mon Sep 17 00:00:00 2001 From: Nima Date: Fri, 24 Jun 2022 14:42:38 -0500 Subject: [PATCH 1/2] aurora-plus --- .../aurora-plus/aurora-plus.definition.ts | 39 + src/apps/aurora-plus/aurora-plus.module.ts | 18 + .../aurora/aurora-plus.balance-fetcher.ts | 28 + ...ra-plus.stake.contract-position-fetcher.ts | 63 + .../aurora/helpers/getStakingBalance.ts | 53 + .../aurora-plus/contracts/abis/staking.json | 1668 ++++++++++ .../aurora-plus/contracts/ethers/Staking.ts | 2832 +++++++++++++++++ .../aurora-plus/contracts/ethers/common.ts | 44 + .../ethers/factories/Staking__factory.ts | 1689 ++++++++++ .../contracts/ethers/factories/index.ts | 4 + .../aurora-plus/contracts/ethers/index.ts | 6 + src/apps/aurora-plus/contracts/index.ts | 25 + src/apps/aurora-plus/index.ts | 3 + 13 files changed, 6472 insertions(+) create mode 100644 src/apps/aurora-plus/aurora-plus.definition.ts create mode 100644 src/apps/aurora-plus/aurora-plus.module.ts create mode 100644 src/apps/aurora-plus/aurora/aurora-plus.balance-fetcher.ts create mode 100644 src/apps/aurora-plus/aurora/aurora-plus.stake.contract-position-fetcher.ts create mode 100644 src/apps/aurora-plus/aurora/helpers/getStakingBalance.ts create mode 100644 src/apps/aurora-plus/contracts/abis/staking.json create mode 100644 src/apps/aurora-plus/contracts/ethers/Staking.ts create mode 100644 src/apps/aurora-plus/contracts/ethers/common.ts create mode 100644 src/apps/aurora-plus/contracts/ethers/factories/Staking__factory.ts create mode 100644 src/apps/aurora-plus/contracts/ethers/factories/index.ts create mode 100644 src/apps/aurora-plus/contracts/ethers/index.ts create mode 100644 src/apps/aurora-plus/contracts/index.ts create mode 100644 src/apps/aurora-plus/index.ts diff --git a/src/apps/aurora-plus/aurora-plus.definition.ts b/src/apps/aurora-plus/aurora-plus.definition.ts new file mode 100644 index 000000000..11e99065c --- /dev/null +++ b/src/apps/aurora-plus/aurora-plus.definition.ts @@ -0,0 +1,39 @@ +import { Register } from '~app-toolkit/decorators'; +import { appDefinition, AppDefinition } from '~app/app.definition'; +import { AppAction, AppTag, GroupType } from '~app/app.interface'; +import { Network } from '~types/network.interface'; + +export const AURORA_PLUS_DEFINITION = appDefinition({ + id: 'aurora-plus', + name: 'Aurora+', + description: + 'Aurora+ is a membership program for users of Aurora that provides a suite of incredible benefits, including free transactions and staking rewards.', + url: 'https://aurora.plus/', + + groups: { + stake: { + id: 'stake', + type: GroupType.POSITION, + label: 'Staked Aurora', + }, + }, + + tags: [AppTag.STAKING], + keywords: [], + links: {}, + + supportedNetworks: { + [Network.AURORA_MAINNET]: [AppAction.VIEW], + }, + + primaryColor: '#fff', +}); + +@Register.AppDefinition(AURORA_PLUS_DEFINITION.id) +export class AuroraPlusAppDefinition extends AppDefinition { + constructor() { + super(AURORA_PLUS_DEFINITION); + } +} + +export default AURORA_PLUS_DEFINITION; diff --git a/src/apps/aurora-plus/aurora-plus.module.ts b/src/apps/aurora-plus/aurora-plus.module.ts new file mode 100644 index 000000000..b9106adc5 --- /dev/null +++ b/src/apps/aurora-plus/aurora-plus.module.ts @@ -0,0 +1,18 @@ +import { Register } from '~app-toolkit/decorators'; +import { AbstractApp } from '~app/app.dynamic-module'; + +import { AuroraPlusAppDefinition, AURORA_PLUS_DEFINITION } from './aurora-plus.definition'; +import { AuroraAuroraPlusBalanceFetcher } from './aurora/aurora-plus.balance-fetcher'; +import { AuroraAuroraPlusStakeContractPositionFetcher } from './aurora/aurora-plus.stake.contract-position-fetcher'; +import { AuroraPlusContractFactory } from './contracts'; + +@Register.AppModule({ + appId: AURORA_PLUS_DEFINITION.id, + providers: [ + AuroraAuroraPlusBalanceFetcher, + AuroraAuroraPlusStakeContractPositionFetcher, + AuroraPlusAppDefinition, + AuroraPlusContractFactory, + ], +}) +export class AuroraPlusAppModule extends AbstractApp() { } diff --git a/src/apps/aurora-plus/aurora/aurora-plus.balance-fetcher.ts b/src/apps/aurora-plus/aurora/aurora-plus.balance-fetcher.ts new file mode 100644 index 000000000..cdfbfeac8 --- /dev/null +++ b/src/apps/aurora-plus/aurora/aurora-plus.balance-fetcher.ts @@ -0,0 +1,28 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present'; +import { BalanceFetcher } from '~balance/balance-fetcher.interface'; +import { Network } from '~types/network.interface'; + +import { AURORA_PLUS_DEFINITION } from '../aurora-plus.definition'; +import { AuroraPlusContractFactory } from '../contracts'; + +import getStakingBalance from './helpers/getStakingBalance'; + +const network = Network.AURORA_MAINNET; + +@Register.BalanceFetcher(AURORA_PLUS_DEFINITION.id, network) +export class AuroraAuroraPlusBalanceFetcher implements BalanceFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(AuroraPlusContractFactory) private readonly auroraPlusContractFactory: AuroraPlusContractFactory) { } + + async getBalances(address: string) { + const tokenBalances = await getStakingBalance(address, this.appToolkit, this.auroraPlusContractFactory); + return presentBalanceFetcherResponse([ + { label: 'Staked Aurora', assets: tokenBalances }, + ]); + } +} diff --git a/src/apps/aurora-plus/aurora/aurora-plus.stake.contract-position-fetcher.ts b/src/apps/aurora-plus/aurora/aurora-plus.stake.contract-position-fetcher.ts new file mode 100644 index 000000000..d83940e06 --- /dev/null +++ b/src/apps/aurora-plus/aurora/aurora-plus.stake.contract-position-fetcher.ts @@ -0,0 +1,63 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { getImagesFromToken } from '~app-toolkit/helpers/presentation/image.present'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { ContractType } from '~position/contract.interface'; +import { claimable, supplied } from '~position/position.utils'; +import { Network } from '~types/network.interface'; + +import { AURORA_PLUS_DEFINITION } from '../aurora-plus.definition'; +import { AuroraPlusContractFactory } from '../contracts'; + +const appId = AURORA_PLUS_DEFINITION.id; +const groupId = AURORA_PLUS_DEFINITION.groups.stake.id; +const network = Network.AURORA_MAINNET; + +const AURORA_ADDRESS = "0x8bec47865ade3b172a928df8f990bc7f2a3b9f79".toLowerCase(); +const AURORA_STAKING_ADDRESS = "0xccc2b1ad21666a5847a804a73a41f904c4a4a0ec".toLowerCase(); +const BASTION_ADDRESS = "0x9f1f933c660a1dc856f0e0fe058435879c5ccef0".toLowerCase(); +const AURIGAMI_ADDRESS = "0x09c9d464b58d96837f8d8b6f4d9fe4ad408d3a4f".toLowerCase(); +const USN_ADDRESS = "0x5183e1b1091804bc2602586919e6880ac1cf2896".toLowerCase(); +const TRISOLARIS_ADDRESS = "0xfa94348467f64d5a457f75f8bc40495d33c65abb".toLowerCase(); + + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class AuroraAuroraPlusStakeContractPositionFetcher implements PositionFetcher +{ + constructor( + @Inject(APP_TOOLKIT) + private readonly appToolkit: IAppToolkit, + @Inject(AuroraPlusContractFactory) + private readonly auroraPlusContractFactory: AuroraPlusContractFactory, + ) { } + + async getPositions() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const aurora = baseTokens.find(t => t.address === AURORA_ADDRESS)!; + const bastion = baseTokens.find(t => t.address === BASTION_ADDRESS)!; + const aurigami = baseTokens.find(t => t.address === AURIGAMI_ADDRESS)!; + const usn = baseTokens.find(t => t.address === USN_ADDRESS)!; + const trisolaris = baseTokens.find(t => t.address === TRISOLARIS_ADDRESS)!; + + // console.log(aurora, bastion, aurigami, usn, trisolaris); + if (!aurora) return []; + + const position: ContractPosition = { + type: ContractType.POSITION, + address: AURORA_STAKING_ADDRESS, + appId, + groupId, + network, + tokens: [supplied(aurora), claimable(aurora), claimable(bastion), claimable(aurigami), claimable(usn), claimable(trisolaris)], + dataProps: {}, + displayProps: { + label: `Staked Aurora`, + images: getImagesFromToken(aurora), + }, + }; + return [position]; + } +} diff --git a/src/apps/aurora-plus/aurora/helpers/getStakingBalance.ts b/src/apps/aurora-plus/aurora/helpers/getStakingBalance.ts new file mode 100644 index 000000000..6eb8f5f59 --- /dev/null +++ b/src/apps/aurora-plus/aurora/helpers/getStakingBalance.ts @@ -0,0 +1,53 @@ +import { ethers } from 'ethers'; +import { range } from 'lodash'; + +import { drillBalance } from '~app-toolkit'; +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { MetaType } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { AuroraPlusContractFactory } from '../../contracts'; +import AURORA_DEFINITION from '../../aurora-plus.definition'; + +const BN = ethers.BigNumber; + +const AURORA_STAKING_ADDRESS = "0xccc2b1ad21666a5847a804a73a41f904c4a4a0ec".toLowerCase(); + +export default async function getStakingBalance( + address: string, + appToolkit: IAppToolkit, + auroraContractFactory: AuroraPlusContractFactory, +) { + const network = Network.AURORA_MAINNET; + return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ + address, + appId: AURORA_DEFINITION.id, + groupId: AURORA_DEFINITION.groups.stake.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find(t => t.metaType === MetaType.SUPPLIED)!; + const stakingRewards = auroraContractFactory.staking({ address: AURORA_STAKING_ADDRESS, network }); + const PLY_Rewards = contractPosition.tokens[1]; + const BSTN_Rewards = contractPosition.tokens[3]; + const USN_Rewards = contractPosition.tokens[4]; + const TRI_Rewards = contractPosition.tokens[2]; + + const mct = multicall.wrap(stakingRewards); + const balance = await mct.getStreamsCount(); + const indices = range(0, balance.toNumber()); + const rewardTokens = await Promise.all(indices.map((i: number) => mct.getStream(i).then(r => r.rewardToken))); + const rewardTokenValues = await Promise.all(indices.map((i: number) => mct.getPending(i, address))); + + const userTotalDeposit = (await mct.getUserTotalDeposit(address)).toString(); + + return [ + drillBalance(stakedToken, userTotalDeposit), + drillBalance(PLY_Rewards, rewardTokenValues[1].toString()), + drillBalance(BSTN_Rewards, rewardTokenValues[3].toString()), + drillBalance(USN_Rewards, rewardTokenValues[4].toString()), + drillBalance(TRI_Rewards, rewardTokenValues[2].toString()), + ]; + }, + }); +} diff --git a/src/apps/aurora-plus/contracts/abis/staking.json b/src/apps/aurora-plus/contracts/abis/staking.json new file mode 100644 index 000000000..f2edfac7a --- /dev/null +++ b/src/apps/aurora-plus/contracts/abis/staking.json @@ -0,0 +1,1668 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Pending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Released", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "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": "shares", + "type": "uint256" + } + ], + "name": "Staked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auroraAmount", + "type": "uint256" + } + ], + "name": "StreamCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "StreamOwnerRewardReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "StreamProposalCancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxDepositAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auroraDepositAmount", + "type": "uint256" + } + ], + "name": "StreamProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "StreamRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Unstaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "AIRDROP_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CLAIM_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FOUR_YEARS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ONE_MONTH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSE_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "STREAM_MANAGER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "adminDelegatecall", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "flags", + "type": "uint256" + } + ], + "name": "adminPause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "adminSstore", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "mask", + "type": "uint256" + } + ], + "name": "adminSstoreWithMask", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "auroraToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "streamIds", + "type": "uint256[]" + } + ], + "name": "batchClaimOnBehalfOfAnotherUser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "streamIds", + "type": "uint256[]" + } + ], + "name": "batchClaimOnBehalfOfOtherUsers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "streamIds", + "type": "uint256[]" + } + ], + "name": "batchMoveRewardsToPending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "streamIds", + "type": "uint256[]" + } + ], + "name": "batchWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + } + ], + "name": "cancelStreamProposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "claimAllOnBehalfOfAnotherUser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + } + ], + "name": "claimAllOnBehalfOfOtherUsers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + } + ], + "name": "claimOnBehalfOfAnotherUser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardTokenAmount", + "type": "uint256" + } + ], + "name": "createStream", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAmountOfShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + } + ], + "name": "getLatestRewardPerShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getReleaseTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + } + ], + "name": "getRewardPerShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getRewardPerShareForUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdate", + "type": "uint256" + } + ], + "name": "getRewardsAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + } + ], + "name": "getStream", + "outputs": [ + { + "internalType": "address", + "name": "streamOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "auroraDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "auroraClaimedAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardClaimedAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastTimeOwnerClaimed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rps", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tau", + "type": "uint256" + }, + { + "internalType": "enum JetStakingV1.StreamStatus", + "name": "status", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getStreamClaimableAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + } + ], + "name": "getStreamOwnerClaimableAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + } + ], + "name": "getStreamSchedule", + "outputs": [ + { + "internalType": "uint256[]", + "name": "scheduleTimes", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "scheduleRewards", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStreamsCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalAmountOfStakedAurora", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getTreasuryBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getUserShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getUserTotalDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "aurora", + "type": "address" + }, + { + "internalType": "address", + "name": "streamOwner", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "scheduleTimes", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "scheduleRewards", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "tauAuroraStream", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_flags", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_treasury", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_maxWeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minWeight", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "maxWeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minWeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "moveAllRewardsToPending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + } + ], + "name": "moveRewardsToPending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "streamOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "auroraDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "scheduleTimes", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "scheduleRewards", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "tau", + "type": "uint256" + } + ], + "name": "proposeStream", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + } + ], + "name": "releaseAuroraRewardsToStreamOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "streamFundReceiver", + "type": "address" + } + ], + "name": "removeStream", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "start", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "end", + "type": "uint256" + } + ], + "name": "rewardsSchedule", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "stakeOnBehalfOfAnotherUser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "batchAmount", + "type": "uint256" + } + ], + "name": "stakeOnBehalfOfOtherUsers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "start", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "end", + "type": "uint256" + } + ], + "name": "startEndScheduleIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "startIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endIndex", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalAmountOfStakedAurora", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalAuroraShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalStreamShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "touchedAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasury", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "unstake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unstakeAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_treasury", + "type": "address" + } + ], + "name": "updateTreasury", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "users", + "outputs": [ + { + "internalType": "uint256", + "name": "deposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "auroraShares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "streamShares", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "streamId", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/src/apps/aurora-plus/contracts/ethers/Staking.ts b/src/apps/aurora-plus/contracts/ethers/Staking.ts new file mode 100644 index 000000000..006c713e5 --- /dev/null +++ b/src/apps/aurora-plus/contracts/ethers/Staking.ts @@ -0,0 +1,2832 @@ +/* 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 interface StakingInterface extends utils.Interface { + functions: { + "AIRDROP_ROLE()": FunctionFragment; + "CLAIM_ROLE()": FunctionFragment; + "DEFAULT_ADMIN_ROLE()": FunctionFragment; + "FOUR_YEARS()": FunctionFragment; + "ONE_MONTH()": FunctionFragment; + "PAUSE_ROLE()": FunctionFragment; + "STREAM_MANAGER_ROLE()": FunctionFragment; + "adminDelegatecall(address,bytes)": FunctionFragment; + "adminPause(uint256)": FunctionFragment; + "adminSstore(uint256,uint256)": FunctionFragment; + "adminSstoreWithMask(uint256,uint256,uint256)": FunctionFragment; + "auroraToken()": FunctionFragment; + "batchClaimOnBehalfOfAnotherUser(address,uint256[])": FunctionFragment; + "batchClaimOnBehalfOfOtherUsers(address[],uint256[])": FunctionFragment; + "batchMoveRewardsToPending(uint256[])": FunctionFragment; + "batchWithdraw(uint256[])": FunctionFragment; + "cancelStreamProposal(uint256)": FunctionFragment; + "claimAllOnBehalfOfAnotherUser(address)": FunctionFragment; + "claimAllOnBehalfOfOtherUsers(address[])": FunctionFragment; + "claimOnBehalfOfAnotherUser(address,uint256)": FunctionFragment; + "createStream(uint256,uint256)": FunctionFragment; + "getAmountOfShares(uint256,address)": FunctionFragment; + "getLatestRewardPerShare(uint256)": FunctionFragment; + "getPending(uint256,address)": FunctionFragment; + "getReleaseTime(uint256,address)": FunctionFragment; + "getRewardPerShare(uint256)": FunctionFragment; + "getRewardPerShareForUser(uint256,address)": FunctionFragment; + "getRewardsAmount(uint256,uint256)": FunctionFragment; + "getRoleAdmin(bytes32)": FunctionFragment; + "getStream(uint256)": FunctionFragment; + "getStreamClaimableAmount(uint256,address)": FunctionFragment; + "getStreamOwnerClaimableAmount(uint256)": FunctionFragment; + "getStreamSchedule(uint256)": FunctionFragment; + "getStreamsCount()": FunctionFragment; + "getTotalAmountOfStakedAurora()": FunctionFragment; + "getTreasuryBalance(address)": FunctionFragment; + "getUserShares(address)": FunctionFragment; + "getUserTotalDeposit(address)": FunctionFragment; + "grantRole(bytes32,address)": FunctionFragment; + "hasRole(bytes32,address)": FunctionFragment; + "initialize(address,address,uint256[],uint256[],uint256,uint256,address,uint256,uint256)": FunctionFragment; + "maxWeight()": FunctionFragment; + "minWeight()": FunctionFragment; + "moveAllRewardsToPending()": FunctionFragment; + "moveRewardsToPending(uint256)": FunctionFragment; + "paused()": FunctionFragment; + "proposeStream(address,address,uint256,uint256,uint256,uint256[],uint256[],uint256)": FunctionFragment; + "releaseAuroraRewardsToStreamOwner(uint256)": FunctionFragment; + "removeStream(uint256,address)": FunctionFragment; + "renounceRole(bytes32,address)": FunctionFragment; + "revokeRole(bytes32,address)": FunctionFragment; + "rewardsSchedule(uint256,uint256,uint256)": FunctionFragment; + "stake(uint256)": FunctionFragment; + "stakeOnBehalfOfAnotherUser(address,uint256)": FunctionFragment; + "stakeOnBehalfOfOtherUsers(address[],uint256[],uint256)": FunctionFragment; + "startEndScheduleIndex(uint256,uint256,uint256)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "totalAmountOfStakedAurora()": FunctionFragment; + "totalAuroraShares()": FunctionFragment; + "totalStreamShares()": FunctionFragment; + "touchedAt()": FunctionFragment; + "treasury()": FunctionFragment; + "unstake(uint256)": FunctionFragment; + "unstakeAll()": FunctionFragment; + "updateTreasury(address)": FunctionFragment; + "upgradeTo(address)": FunctionFragment; + "upgradeToAndCall(address,bytes)": FunctionFragment; + "users(address)": FunctionFragment; + "withdraw(uint256)": FunctionFragment; + "withdrawAll()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "AIRDROP_ROLE" + | "CLAIM_ROLE" + | "DEFAULT_ADMIN_ROLE" + | "FOUR_YEARS" + | "ONE_MONTH" + | "PAUSE_ROLE" + | "STREAM_MANAGER_ROLE" + | "adminDelegatecall" + | "adminPause" + | "adminSstore" + | "adminSstoreWithMask" + | "auroraToken" + | "batchClaimOnBehalfOfAnotherUser" + | "batchClaimOnBehalfOfOtherUsers" + | "batchMoveRewardsToPending" + | "batchWithdraw" + | "cancelStreamProposal" + | "claimAllOnBehalfOfAnotherUser" + | "claimAllOnBehalfOfOtherUsers" + | "claimOnBehalfOfAnotherUser" + | "createStream" + | "getAmountOfShares" + | "getLatestRewardPerShare" + | "getPending" + | "getReleaseTime" + | "getRewardPerShare" + | "getRewardPerShareForUser" + | "getRewardsAmount" + | "getRoleAdmin" + | "getStream" + | "getStreamClaimableAmount" + | "getStreamOwnerClaimableAmount" + | "getStreamSchedule" + | "getStreamsCount" + | "getTotalAmountOfStakedAurora" + | "getTreasuryBalance" + | "getUserShares" + | "getUserTotalDeposit" + | "grantRole" + | "hasRole" + | "initialize" + | "maxWeight" + | "minWeight" + | "moveAllRewardsToPending" + | "moveRewardsToPending" + | "paused" + | "proposeStream" + | "releaseAuroraRewardsToStreamOwner" + | "removeStream" + | "renounceRole" + | "revokeRole" + | "rewardsSchedule" + | "stake" + | "stakeOnBehalfOfAnotherUser" + | "stakeOnBehalfOfOtherUsers" + | "startEndScheduleIndex" + | "supportsInterface" + | "totalAmountOfStakedAurora" + | "totalAuroraShares" + | "totalStreamShares" + | "touchedAt" + | "treasury" + | "unstake" + | "unstakeAll" + | "updateTreasury" + | "upgradeTo" + | "upgradeToAndCall" + | "users" + | "withdraw" + | "withdrawAll" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "AIRDROP_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "CLAIM_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "FOUR_YEARS", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "ONE_MONTH", values?: undefined): string; + encodeFunctionData( + functionFragment: "PAUSE_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "STREAM_MANAGER_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "adminDelegatecall", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "adminPause", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "adminSstore", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "adminSstoreWithMask", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "auroraToken", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "batchClaimOnBehalfOfAnotherUser", + values: [string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "batchClaimOnBehalfOfOtherUsers", + values: [string[], BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "batchMoveRewardsToPending", + values: [BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "batchWithdraw", + values: [BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "cancelStreamProposal", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "claimAllOnBehalfOfAnotherUser", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "claimAllOnBehalfOfOtherUsers", + values: [string[]] + ): string; + encodeFunctionData( + functionFragment: "claimOnBehalfOfAnotherUser", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "createStream", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getAmountOfShares", + values: [BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "getLatestRewardPerShare", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getPending", + values: [BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "getReleaseTime", + values: [BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "getRewardPerShare", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getRewardPerShareForUser", + values: [BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "getRewardsAmount", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getStream", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getStreamClaimableAmount", + values: [BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "getStreamOwnerClaimableAmount", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getStreamSchedule", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getStreamsCount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getTotalAmountOfStakedAurora", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getTreasuryBalance", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "getUserShares", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "getUserTotalDeposit", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [ + string, + string, + BigNumberish[], + BigNumberish[], + BigNumberish, + BigNumberish, + string, + BigNumberish, + BigNumberish + ] + ): string; + encodeFunctionData(functionFragment: "maxWeight", values?: undefined): string; + encodeFunctionData(functionFragment: "minWeight", values?: undefined): string; + encodeFunctionData( + functionFragment: "moveAllRewardsToPending", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "moveRewardsToPending", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + encodeFunctionData( + functionFragment: "proposeStream", + values: [ + string, + string, + BigNumberish, + BigNumberish, + BigNumberish, + BigNumberish[], + BigNumberish[], + BigNumberish + ] + ): string; + encodeFunctionData( + functionFragment: "releaseAuroraRewardsToStreamOwner", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "removeStream", + values: [BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "rewardsSchedule", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "stake", values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: "stakeOnBehalfOfAnotherUser", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "stakeOnBehalfOfOtherUsers", + values: [string[], BigNumberish[], BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "startEndScheduleIndex", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "totalAmountOfStakedAurora", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "totalAuroraShares", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "totalStreamShares", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "touchedAt", values?: undefined): string; + encodeFunctionData(functionFragment: "treasury", values?: undefined): string; + encodeFunctionData( + functionFragment: "unstake", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "unstakeAll", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "updateTreasury", + values: [string] + ): string; + encodeFunctionData(functionFragment: "upgradeTo", values: [string]): string; + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [string, BytesLike] + ): string; + encodeFunctionData(functionFragment: "users", values: [string]): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdrawAll", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "AIRDROP_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "CLAIM_ROLE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "FOUR_YEARS", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ONE_MONTH", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "PAUSE_ROLE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "STREAM_MANAGER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "adminDelegatecall", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "adminPause", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "adminSstore", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "adminSstoreWithMask", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "auroraToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "batchClaimOnBehalfOfAnotherUser", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "batchClaimOnBehalfOfOtherUsers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "batchMoveRewardsToPending", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "batchWithdraw", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "cancelStreamProposal", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "claimAllOnBehalfOfAnotherUser", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "claimAllOnBehalfOfOtherUsers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "claimOnBehalfOfAnotherUser", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createStream", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAmountOfShares", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getLatestRewardPerShare", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getPending", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getReleaseTime", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRewardPerShare", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRewardPerShareForUser", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRewardsAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getStream", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getStreamClaimableAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getStreamOwnerClaimableAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getStreamSchedule", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getStreamsCount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTotalAmountOfStakedAurora", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTreasuryBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getUserShares", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getUserTotalDeposit", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "maxWeight", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "minWeight", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "moveAllRewardsToPending", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "moveRewardsToPending", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "proposeStream", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "releaseAuroraRewardsToStreamOwner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removeStream", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "rewardsSchedule", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "stake", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "stakeOnBehalfOfAnotherUser", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stakeOnBehalfOfOtherUsers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startEndScheduleIndex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalAmountOfStakedAurora", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalAuroraShares", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalStreamShares", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "touchedAt", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "treasury", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unstake", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unstakeAll", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "updateTreasury", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "users", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawAll", + data: BytesLike + ): Result; + + events: { + "AdminChanged(address,address)": EventFragment; + "BeaconUpgraded(address)": EventFragment; + "Pending(uint256,address,uint256)": EventFragment; + "Released(uint256,address,uint256)": EventFragment; + "RoleAdminChanged(bytes32,bytes32,bytes32)": EventFragment; + "RoleGranted(bytes32,address,address)": EventFragment; + "RoleRevoked(bytes32,address,address)": EventFragment; + "Staked(address,uint256,uint256)": EventFragment; + "StreamCreated(uint256,address,address,uint256,uint256)": EventFragment; + "StreamOwnerRewardReleased(uint256,address,uint256)": EventFragment; + "StreamProposalCancelled(uint256,address,address)": EventFragment; + "StreamProposed(uint256,address,address,uint256,uint256)": EventFragment; + "StreamRemoved(uint256,address,address)": EventFragment; + "Unstaked(address,uint256)": EventFragment; + "Upgraded(address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; + getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Pending"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Released"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RoleAdminChanged"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RoleGranted"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RoleRevoked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Staked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StreamCreated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StreamOwnerRewardReleased"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StreamProposalCancelled"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StreamProposed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StreamRemoved"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Unstaked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; +} + +export interface AdminChangedEventObject { + previousAdmin: string; + newAdmin: string; +} +export type AdminChangedEvent = TypedEvent< + [string, string], + AdminChangedEventObject +>; + +export type AdminChangedEventFilter = TypedEventFilter; + +export interface BeaconUpgradedEventObject { + beacon: string; +} +export type BeaconUpgradedEvent = TypedEvent< + [string], + BeaconUpgradedEventObject +>; + +export type BeaconUpgradedEventFilter = TypedEventFilter; + +export interface PendingEventObject { + streamId: BigNumber; + user: string; + amount: BigNumber; +} +export type PendingEvent = TypedEvent< + [BigNumber, string, BigNumber], + PendingEventObject +>; + +export type PendingEventFilter = TypedEventFilter; + +export interface ReleasedEventObject { + streamId: BigNumber; + user: string; + amount: BigNumber; +} +export type ReleasedEvent = TypedEvent< + [BigNumber, string, BigNumber], + ReleasedEventObject +>; + +export type ReleasedEventFilter = TypedEventFilter; + +export interface RoleAdminChangedEventObject { + role: string; + previousAdminRole: string; + newAdminRole: string; +} +export type RoleAdminChangedEvent = TypedEvent< + [string, string, string], + RoleAdminChangedEventObject +>; + +export type RoleAdminChangedEventFilter = + TypedEventFilter; + +export interface RoleGrantedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleGrantedEvent = TypedEvent< + [string, string, string], + RoleGrantedEventObject +>; + +export type RoleGrantedEventFilter = TypedEventFilter; + +export interface RoleRevokedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleRevokedEvent = TypedEvent< + [string, string, string], + RoleRevokedEventObject +>; + +export type RoleRevokedEventFilter = TypedEventFilter; + +export interface StakedEventObject { + user: string; + amount: BigNumber; + shares: BigNumber; +} +export type StakedEvent = TypedEvent< + [string, BigNumber, BigNumber], + StakedEventObject +>; + +export type StakedEventFilter = TypedEventFilter; + +export interface StreamCreatedEventObject { + streamId: BigNumber; + owner: string; + token: string; + tokenAmount: BigNumber; + auroraAmount: BigNumber; +} +export type StreamCreatedEvent = TypedEvent< + [BigNumber, string, string, BigNumber, BigNumber], + StreamCreatedEventObject +>; + +export type StreamCreatedEventFilter = TypedEventFilter; + +export interface StreamOwnerRewardReleasedEventObject { + streamId: BigNumber; + owner: string; + amount: BigNumber; +} +export type StreamOwnerRewardReleasedEvent = TypedEvent< + [BigNumber, string, BigNumber], + StreamOwnerRewardReleasedEventObject +>; + +export type StreamOwnerRewardReleasedEventFilter = + TypedEventFilter; + +export interface StreamProposalCancelledEventObject { + streamId: BigNumber; + owner: string; + token: string; +} +export type StreamProposalCancelledEvent = TypedEvent< + [BigNumber, string, string], + StreamProposalCancelledEventObject +>; + +export type StreamProposalCancelledEventFilter = + TypedEventFilter; + +export interface StreamProposedEventObject { + streamId: BigNumber; + owner: string; + token: string; + maxDepositAmount: BigNumber; + auroraDepositAmount: BigNumber; +} +export type StreamProposedEvent = TypedEvent< + [BigNumber, string, string, BigNumber, BigNumber], + StreamProposedEventObject +>; + +export type StreamProposedEventFilter = TypedEventFilter; + +export interface StreamRemovedEventObject { + streamId: BigNumber; + owner: string; + token: string; +} +export type StreamRemovedEvent = TypedEvent< + [BigNumber, string, string], + StreamRemovedEventObject +>; + +export type StreamRemovedEventFilter = TypedEventFilter; + +export interface UnstakedEventObject { + user: string; + amount: BigNumber; +} +export type UnstakedEvent = TypedEvent< + [string, BigNumber], + UnstakedEventObject +>; + +export type UnstakedEventFilter = TypedEventFilter; + +export interface UpgradedEventObject { + implementation: string; +} +export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; + +export type UpgradedEventFilter = TypedEventFilter; + +export interface Staking extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: StakingInterface; + + 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: { + AIRDROP_ROLE(overrides?: CallOverrides): Promise<[string]>; + + CLAIM_ROLE(overrides?: CallOverrides): Promise<[string]>; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>; + + FOUR_YEARS(overrides?: CallOverrides): Promise<[BigNumber]>; + + ONE_MONTH(overrides?: CallOverrides): Promise<[BigNumber]>; + + PAUSE_ROLE(overrides?: CallOverrides): Promise<[string]>; + + STREAM_MANAGER_ROLE(overrides?: CallOverrides): Promise<[string]>; + + adminDelegatecall( + target: string, + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise } + ): Promise; + + adminPause( + flags: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + adminSstore( + key: BigNumberish, + value: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + adminSstoreWithMask( + key: BigNumberish, + value: BigNumberish, + mask: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + auroraToken(overrides?: CallOverrides): Promise<[string]>; + + batchClaimOnBehalfOfAnotherUser( + account: string, + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchClaimOnBehalfOfOtherUsers( + accounts: string[], + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchMoveRewardsToPending( + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchWithdraw( + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + cancelStreamProposal( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimAllOnBehalfOfAnotherUser( + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimAllOnBehalfOfOtherUsers( + accounts: string[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimOnBehalfOfAnotherUser( + account: string, + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createStream( + streamId: BigNumberish, + rewardTokenAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + getAmountOfShares( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getLatestRewardPerShare( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getPending( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getReleaseTime( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getRewardPerShare( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getRewardPerShareForUser( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getRewardsAmount( + streamId: BigNumberish, + lastUpdate: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise<[string]>; + + getStream( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [ + string, + string, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + number + ] & { + streamOwner: string; + rewardToken: string; + auroraDepositAmount: BigNumber; + auroraClaimedAmount: BigNumber; + rewardDepositAmount: BigNumber; + rewardClaimedAmount: BigNumber; + maxDepositAmount: BigNumber; + lastTimeOwnerClaimed: BigNumber; + rps: BigNumber; + tau: BigNumber; + status: number; + } + >; + + getStreamClaimableAmount( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getStreamOwnerClaimableAmount( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getStreamSchedule( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [BigNumber[], BigNumber[]] & { + scheduleTimes: BigNumber[]; + scheduleRewards: BigNumber[]; + } + >; + + getStreamsCount(overrides?: CallOverrides): Promise<[BigNumber]>; + + getTotalAmountOfStakedAurora( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getTreasuryBalance( + token: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getUserShares( + account: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getUserTotalDeposit( + account: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + grantRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + hasRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + initialize( + aurora: string, + streamOwner: string, + scheduleTimes: BigNumberish[], + scheduleRewards: BigNumberish[], + tauAuroraStream: BigNumberish, + _flags: BigNumberish, + _treasury: string, + _maxWeight: BigNumberish, + _minWeight: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + maxWeight(overrides?: CallOverrides): Promise<[BigNumber]>; + + minWeight(overrides?: CallOverrides): Promise<[BigNumber]>; + + moveAllRewardsToPending( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + moveRewardsToPending( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise<[BigNumber]>; + + proposeStream( + streamOwner: string, + rewardToken: string, + auroraDepositAmount: BigNumberish, + maxDepositAmount: BigNumberish, + minDepositAmount: BigNumberish, + scheduleTimes: BigNumberish[], + scheduleRewards: BigNumberish[], + tau: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + releaseAuroraRewardsToStreamOwner( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + removeStream( + streamId: BigNumberish, + streamFundReceiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + renounceRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + revokeRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + rewardsSchedule( + streamId: BigNumberish, + start: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + stake( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stakeOnBehalfOfAnotherUser( + account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stakeOnBehalfOfOtherUsers( + accounts: string[], + amounts: BigNumberish[], + batchAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + startEndScheduleIndex( + streamId: BigNumberish, + start: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { startIndex: BigNumber; endIndex: BigNumber } + >; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + totalAmountOfStakedAurora(overrides?: CallOverrides): Promise<[BigNumber]>; + + totalAuroraShares(overrides?: CallOverrides): Promise<[BigNumber]>; + + totalStreamShares(overrides?: CallOverrides): Promise<[BigNumber]>; + + touchedAt(overrides?: CallOverrides): Promise<[BigNumber]>; + + treasury(overrides?: CallOverrides): Promise<[string]>; + + unstake( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + unstakeAll( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + updateTreasury( + _treasury: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeTo( + newImplementation: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeToAndCall( + newImplementation: string, + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise } + ): Promise; + + users( + arg0: string, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + deposit: BigNumber; + auroraShares: BigNumber; + streamShares: BigNumber; + } + >; + + withdraw( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + withdrawAll( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + AIRDROP_ROLE(overrides?: CallOverrides): Promise; + + CLAIM_ROLE(overrides?: CallOverrides): Promise; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + FOUR_YEARS(overrides?: CallOverrides): Promise; + + ONE_MONTH(overrides?: CallOverrides): Promise; + + PAUSE_ROLE(overrides?: CallOverrides): Promise; + + STREAM_MANAGER_ROLE(overrides?: CallOverrides): Promise; + + adminDelegatecall( + target: string, + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise } + ): Promise; + + adminPause( + flags: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + adminSstore( + key: BigNumberish, + value: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + adminSstoreWithMask( + key: BigNumberish, + value: BigNumberish, + mask: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + auroraToken(overrides?: CallOverrides): Promise; + + batchClaimOnBehalfOfAnotherUser( + account: string, + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchClaimOnBehalfOfOtherUsers( + accounts: string[], + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchMoveRewardsToPending( + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchWithdraw( + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + cancelStreamProposal( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimAllOnBehalfOfAnotherUser( + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimAllOnBehalfOfOtherUsers( + accounts: string[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimOnBehalfOfAnotherUser( + account: string, + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createStream( + streamId: BigNumberish, + rewardTokenAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + getAmountOfShares( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getLatestRewardPerShare( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getPending( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getReleaseTime( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getRewardPerShare( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRewardPerShareForUser( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getRewardsAmount( + streamId: BigNumberish, + lastUpdate: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise; + + getStream( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [ + string, + string, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + number + ] & { + streamOwner: string; + rewardToken: string; + auroraDepositAmount: BigNumber; + auroraClaimedAmount: BigNumber; + rewardDepositAmount: BigNumber; + rewardClaimedAmount: BigNumber; + maxDepositAmount: BigNumber; + lastTimeOwnerClaimed: BigNumber; + rps: BigNumber; + tau: BigNumber; + status: number; + } + >; + + getStreamClaimableAmount( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getStreamOwnerClaimableAmount( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getStreamSchedule( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [BigNumber[], BigNumber[]] & { + scheduleTimes: BigNumber[]; + scheduleRewards: BigNumber[]; + } + >; + + getStreamsCount(overrides?: CallOverrides): Promise; + + getTotalAmountOfStakedAurora(overrides?: CallOverrides): Promise; + + getTreasuryBalance( + token: string, + overrides?: CallOverrides + ): Promise; + + getUserShares(account: string, overrides?: CallOverrides): Promise; + + getUserTotalDeposit( + account: string, + overrides?: CallOverrides + ): Promise; + + grantRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + hasRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + initialize( + aurora: string, + streamOwner: string, + scheduleTimes: BigNumberish[], + scheduleRewards: BigNumberish[], + tauAuroraStream: BigNumberish, + _flags: BigNumberish, + _treasury: string, + _maxWeight: BigNumberish, + _minWeight: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + maxWeight(overrides?: CallOverrides): Promise; + + minWeight(overrides?: CallOverrides): Promise; + + moveAllRewardsToPending( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + moveRewardsToPending( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + proposeStream( + streamOwner: string, + rewardToken: string, + auroraDepositAmount: BigNumberish, + maxDepositAmount: BigNumberish, + minDepositAmount: BigNumberish, + scheduleTimes: BigNumberish[], + scheduleRewards: BigNumberish[], + tau: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + releaseAuroraRewardsToStreamOwner( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + removeStream( + streamId: BigNumberish, + streamFundReceiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + renounceRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + revokeRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + rewardsSchedule( + streamId: BigNumberish, + start: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides + ): Promise; + + stake( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stakeOnBehalfOfAnotherUser( + account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stakeOnBehalfOfOtherUsers( + accounts: string[], + amounts: BigNumberish[], + batchAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + startEndScheduleIndex( + streamId: BigNumberish, + start: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { startIndex: BigNumber; endIndex: BigNumber } + >; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + totalAmountOfStakedAurora(overrides?: CallOverrides): Promise; + + totalAuroraShares(overrides?: CallOverrides): Promise; + + totalStreamShares(overrides?: CallOverrides): Promise; + + touchedAt(overrides?: CallOverrides): Promise; + + treasury(overrides?: CallOverrides): Promise; + + unstake( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + unstakeAll( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + updateTreasury( + _treasury: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeTo( + newImplementation: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeToAndCall( + newImplementation: string, + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise } + ): Promise; + + users( + arg0: string, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + deposit: BigNumber; + auroraShares: BigNumber; + streamShares: BigNumber; + } + >; + + withdraw( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + withdrawAll( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + AIRDROP_ROLE(overrides?: CallOverrides): Promise; + + CLAIM_ROLE(overrides?: CallOverrides): Promise; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + FOUR_YEARS(overrides?: CallOverrides): Promise; + + ONE_MONTH(overrides?: CallOverrides): Promise; + + PAUSE_ROLE(overrides?: CallOverrides): Promise; + + STREAM_MANAGER_ROLE(overrides?: CallOverrides): Promise; + + adminDelegatecall( + target: string, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + adminPause(flags: BigNumberish, overrides?: CallOverrides): Promise; + + adminSstore( + key: BigNumberish, + value: BigNumberish, + overrides?: CallOverrides + ): Promise; + + adminSstoreWithMask( + key: BigNumberish, + value: BigNumberish, + mask: BigNumberish, + overrides?: CallOverrides + ): Promise; + + auroraToken(overrides?: CallOverrides): Promise; + + batchClaimOnBehalfOfAnotherUser( + account: string, + streamIds: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + batchClaimOnBehalfOfOtherUsers( + accounts: string[], + streamIds: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + batchMoveRewardsToPending( + streamIds: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + batchWithdraw( + streamIds: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + cancelStreamProposal( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + claimAllOnBehalfOfAnotherUser( + account: string, + overrides?: CallOverrides + ): Promise; + + claimAllOnBehalfOfOtherUsers( + accounts: string[], + overrides?: CallOverrides + ): Promise; + + claimOnBehalfOfAnotherUser( + account: string, + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + createStream( + streamId: BigNumberish, + rewardTokenAmount: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getAmountOfShares( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getLatestRewardPerShare( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getPending( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getReleaseTime( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getRewardPerShare( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRewardPerShareForUser( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getRewardsAmount( + streamId: BigNumberish, + lastUpdate: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise; + + getStream( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [ + string, + string, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + number + ] & { + streamOwner: string; + rewardToken: string; + auroraDepositAmount: BigNumber; + auroraClaimedAmount: BigNumber; + rewardDepositAmount: BigNumber; + rewardClaimedAmount: BigNumber; + maxDepositAmount: BigNumber; + lastTimeOwnerClaimed: BigNumber; + rps: BigNumber; + tau: BigNumber; + status: number; + } + >; + + getStreamClaimableAmount( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getStreamOwnerClaimableAmount( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getStreamSchedule( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise< + [BigNumber[], BigNumber[]] & { + scheduleTimes: BigNumber[]; + scheduleRewards: BigNumber[]; + } + >; + + getStreamsCount(overrides?: CallOverrides): Promise; + + getTotalAmountOfStakedAurora(overrides?: CallOverrides): Promise; + + getTreasuryBalance( + token: string, + overrides?: CallOverrides + ): Promise; + + getUserShares( + account: string, + overrides?: CallOverrides + ): Promise; + + getUserTotalDeposit( + account: string, + overrides?: CallOverrides + ): Promise; + + grantRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + hasRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + initialize( + aurora: string, + streamOwner: string, + scheduleTimes: BigNumberish[], + scheduleRewards: BigNumberish[], + tauAuroraStream: BigNumberish, + _flags: BigNumberish, + _treasury: string, + _maxWeight: BigNumberish, + _minWeight: BigNumberish, + overrides?: CallOverrides + ): Promise; + + maxWeight(overrides?: CallOverrides): Promise; + + minWeight(overrides?: CallOverrides): Promise; + + moveAllRewardsToPending(overrides?: CallOverrides): Promise; + + moveRewardsToPending( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + proposeStream( + streamOwner: string, + rewardToken: string, + auroraDepositAmount: BigNumberish, + maxDepositAmount: BigNumberish, + minDepositAmount: BigNumberish, + scheduleTimes: BigNumberish[], + scheduleRewards: BigNumberish[], + tau: BigNumberish, + overrides?: CallOverrides + ): Promise; + + releaseAuroraRewardsToStreamOwner( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + removeStream( + streamId: BigNumberish, + streamFundReceiver: string, + overrides?: CallOverrides + ): Promise; + + renounceRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + revokeRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + rewardsSchedule( + streamId: BigNumberish, + start: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides + ): Promise; + + stake(amount: BigNumberish, overrides?: CallOverrides): Promise; + + stakeOnBehalfOfAnotherUser( + account: string, + amount: BigNumberish, + overrides?: CallOverrides + ): Promise; + + stakeOnBehalfOfOtherUsers( + accounts: string[], + amounts: BigNumberish[], + batchAmount: BigNumberish, + overrides?: CallOverrides + ): Promise; + + startEndScheduleIndex( + streamId: BigNumberish, + start: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { startIndex: BigNumber; endIndex: BigNumber } + >; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + totalAmountOfStakedAurora(overrides?: CallOverrides): Promise; + + totalAuroraShares(overrides?: CallOverrides): Promise; + + totalStreamShares(overrides?: CallOverrides): Promise; + + touchedAt(overrides?: CallOverrides): Promise; + + treasury(overrides?: CallOverrides): Promise; + + unstake(amount: BigNumberish, overrides?: CallOverrides): Promise; + + unstakeAll(overrides?: CallOverrides): Promise; + + updateTreasury(_treasury: string, overrides?: CallOverrides): Promise; + + upgradeTo( + newImplementation: string, + overrides?: CallOverrides + ): Promise; + + upgradeToAndCall( + newImplementation: string, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + users( + arg0: string, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + deposit: BigNumber; + auroraShares: BigNumber; + streamShares: BigNumber; + } + >; + + withdraw(streamId: BigNumberish, overrides?: CallOverrides): Promise; + + withdrawAll(overrides?: CallOverrides): Promise; + }; + + filters: { + "AdminChanged(address,address)"( + previousAdmin?: null, + newAdmin?: null + ): AdminChangedEventFilter; + AdminChanged( + previousAdmin?: null, + newAdmin?: null + ): AdminChangedEventFilter; + + "BeaconUpgraded(address)"( + beacon?: string | null + ): BeaconUpgradedEventFilter; + BeaconUpgraded(beacon?: string | null): BeaconUpgradedEventFilter; + + "Pending(uint256,address,uint256)"( + streamId?: BigNumberish | null, + user?: string | null, + amount?: null + ): PendingEventFilter; + Pending( + streamId?: BigNumberish | null, + user?: string | null, + amount?: null + ): PendingEventFilter; + + "Released(uint256,address,uint256)"( + streamId?: BigNumberish | null, + user?: string | null, + amount?: null + ): ReleasedEventFilter; + Released( + streamId?: BigNumberish | null, + user?: string | null, + amount?: null + ): ReleasedEventFilter; + + "RoleAdminChanged(bytes32,bytes32,bytes32)"( + role?: BytesLike | null, + previousAdminRole?: BytesLike | null, + newAdminRole?: BytesLike | null + ): RoleAdminChangedEventFilter; + RoleAdminChanged( + role?: BytesLike | null, + previousAdminRole?: BytesLike | null, + newAdminRole?: BytesLike | null + ): RoleAdminChangedEventFilter; + + "RoleGranted(bytes32,address,address)"( + role?: BytesLike | null, + account?: string | null, + sender?: string | null + ): RoleGrantedEventFilter; + RoleGranted( + role?: BytesLike | null, + account?: string | null, + sender?: string | null + ): RoleGrantedEventFilter; + + "RoleRevoked(bytes32,address,address)"( + role?: BytesLike | null, + account?: string | null, + sender?: string | null + ): RoleRevokedEventFilter; + RoleRevoked( + role?: BytesLike | null, + account?: string | null, + sender?: string | null + ): RoleRevokedEventFilter; + + "Staked(address,uint256,uint256)"( + user?: string | null, + amount?: null, + shares?: null + ): StakedEventFilter; + Staked( + user?: string | null, + amount?: null, + shares?: null + ): StakedEventFilter; + + "StreamCreated(uint256,address,address,uint256,uint256)"( + streamId?: BigNumberish | null, + owner?: string | null, + token?: string | null, + tokenAmount?: null, + auroraAmount?: null + ): StreamCreatedEventFilter; + StreamCreated( + streamId?: BigNumberish | null, + owner?: string | null, + token?: string | null, + tokenAmount?: null, + auroraAmount?: null + ): StreamCreatedEventFilter; + + "StreamOwnerRewardReleased(uint256,address,uint256)"( + streamId?: BigNumberish | null, + owner?: string | null, + amount?: null + ): StreamOwnerRewardReleasedEventFilter; + StreamOwnerRewardReleased( + streamId?: BigNumberish | null, + owner?: string | null, + amount?: null + ): StreamOwnerRewardReleasedEventFilter; + + "StreamProposalCancelled(uint256,address,address)"( + streamId?: BigNumberish | null, + owner?: string | null, + token?: string | null + ): StreamProposalCancelledEventFilter; + StreamProposalCancelled( + streamId?: BigNumberish | null, + owner?: string | null, + token?: string | null + ): StreamProposalCancelledEventFilter; + + "StreamProposed(uint256,address,address,uint256,uint256)"( + streamId?: BigNumberish | null, + owner?: string | null, + token?: string | null, + maxDepositAmount?: null, + auroraDepositAmount?: null + ): StreamProposedEventFilter; + StreamProposed( + streamId?: BigNumberish | null, + owner?: string | null, + token?: string | null, + maxDepositAmount?: null, + auroraDepositAmount?: null + ): StreamProposedEventFilter; + + "StreamRemoved(uint256,address,address)"( + streamId?: BigNumberish | null, + owner?: string | null, + token?: string | null + ): StreamRemovedEventFilter; + StreamRemoved( + streamId?: BigNumberish | null, + owner?: string | null, + token?: string | null + ): StreamRemovedEventFilter; + + "Unstaked(address,uint256)"( + user?: string | null, + amount?: null + ): UnstakedEventFilter; + Unstaked(user?: string | null, amount?: null): UnstakedEventFilter; + + "Upgraded(address)"(implementation?: string | null): UpgradedEventFilter; + Upgraded(implementation?: string | null): UpgradedEventFilter; + }; + + estimateGas: { + AIRDROP_ROLE(overrides?: CallOverrides): Promise; + + CLAIM_ROLE(overrides?: CallOverrides): Promise; + + DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise; + + FOUR_YEARS(overrides?: CallOverrides): Promise; + + ONE_MONTH(overrides?: CallOverrides): Promise; + + PAUSE_ROLE(overrides?: CallOverrides): Promise; + + STREAM_MANAGER_ROLE(overrides?: CallOverrides): Promise; + + adminDelegatecall( + target: string, + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise } + ): Promise; + + adminPause( + flags: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + adminSstore( + key: BigNumberish, + value: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + adminSstoreWithMask( + key: BigNumberish, + value: BigNumberish, + mask: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + auroraToken(overrides?: CallOverrides): Promise; + + batchClaimOnBehalfOfAnotherUser( + account: string, + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchClaimOnBehalfOfOtherUsers( + accounts: string[], + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchMoveRewardsToPending( + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchWithdraw( + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + cancelStreamProposal( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimAllOnBehalfOfAnotherUser( + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimAllOnBehalfOfOtherUsers( + accounts: string[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimOnBehalfOfAnotherUser( + account: string, + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createStream( + streamId: BigNumberish, + rewardTokenAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + getAmountOfShares( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getLatestRewardPerShare( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getPending( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getReleaseTime( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getRewardPerShare( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRewardPerShareForUser( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getRewardsAmount( + streamId: BigNumberish, + lastUpdate: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + getStream( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getStreamClaimableAmount( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getStreamOwnerClaimableAmount( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getStreamSchedule( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getStreamsCount(overrides?: CallOverrides): Promise; + + getTotalAmountOfStakedAurora(overrides?: CallOverrides): Promise; + + getTreasuryBalance( + token: string, + overrides?: CallOverrides + ): Promise; + + getUserShares( + account: string, + overrides?: CallOverrides + ): Promise; + + getUserTotalDeposit( + account: string, + overrides?: CallOverrides + ): Promise; + + grantRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + hasRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + initialize( + aurora: string, + streamOwner: string, + scheduleTimes: BigNumberish[], + scheduleRewards: BigNumberish[], + tauAuroraStream: BigNumberish, + _flags: BigNumberish, + _treasury: string, + _maxWeight: BigNumberish, + _minWeight: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + maxWeight(overrides?: CallOverrides): Promise; + + minWeight(overrides?: CallOverrides): Promise; + + moveAllRewardsToPending( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + moveRewardsToPending( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + proposeStream( + streamOwner: string, + rewardToken: string, + auroraDepositAmount: BigNumberish, + maxDepositAmount: BigNumberish, + minDepositAmount: BigNumberish, + scheduleTimes: BigNumberish[], + scheduleRewards: BigNumberish[], + tau: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + releaseAuroraRewardsToStreamOwner( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + removeStream( + streamId: BigNumberish, + streamFundReceiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + renounceRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + revokeRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + rewardsSchedule( + streamId: BigNumberish, + start: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides + ): Promise; + + stake( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stakeOnBehalfOfAnotherUser( + account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stakeOnBehalfOfOtherUsers( + accounts: string[], + amounts: BigNumberish[], + batchAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + startEndScheduleIndex( + streamId: BigNumberish, + start: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + totalAmountOfStakedAurora(overrides?: CallOverrides): Promise; + + totalAuroraShares(overrides?: CallOverrides): Promise; + + totalStreamShares(overrides?: CallOverrides): Promise; + + touchedAt(overrides?: CallOverrides): Promise; + + treasury(overrides?: CallOverrides): Promise; + + unstake( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + unstakeAll( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + updateTreasury( + _treasury: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeTo( + newImplementation: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeToAndCall( + newImplementation: string, + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise } + ): Promise; + + users(arg0: string, overrides?: CallOverrides): Promise; + + withdraw( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + withdrawAll( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + AIRDROP_ROLE(overrides?: CallOverrides): Promise; + + CLAIM_ROLE(overrides?: CallOverrides): Promise; + + DEFAULT_ADMIN_ROLE( + overrides?: CallOverrides + ): Promise; + + FOUR_YEARS(overrides?: CallOverrides): Promise; + + ONE_MONTH(overrides?: CallOverrides): Promise; + + PAUSE_ROLE(overrides?: CallOverrides): Promise; + + STREAM_MANAGER_ROLE( + overrides?: CallOverrides + ): Promise; + + adminDelegatecall( + target: string, + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise } + ): Promise; + + adminPause( + flags: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + adminSstore( + key: BigNumberish, + value: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + adminSstoreWithMask( + key: BigNumberish, + value: BigNumberish, + mask: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + auroraToken(overrides?: CallOverrides): Promise; + + batchClaimOnBehalfOfAnotherUser( + account: string, + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchClaimOnBehalfOfOtherUsers( + accounts: string[], + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchMoveRewardsToPending( + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + batchWithdraw( + streamIds: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + cancelStreamProposal( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimAllOnBehalfOfAnotherUser( + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimAllOnBehalfOfOtherUsers( + accounts: string[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + claimOnBehalfOfAnotherUser( + account: string, + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createStream( + streamId: BigNumberish, + rewardTokenAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + getAmountOfShares( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getLatestRewardPerShare( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getPending( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getReleaseTime( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getRewardPerShare( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRewardPerShareForUser( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getRewardsAmount( + streamId: BigNumberish, + lastUpdate: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + role: BytesLike, + overrides?: CallOverrides + ): Promise; + + getStream( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getStreamClaimableAmount( + streamId: BigNumberish, + account: string, + overrides?: CallOverrides + ): Promise; + + getStreamOwnerClaimableAmount( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getStreamSchedule( + streamId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + getStreamsCount(overrides?: CallOverrides): Promise; + + getTotalAmountOfStakedAurora( + overrides?: CallOverrides + ): Promise; + + getTreasuryBalance( + token: string, + overrides?: CallOverrides + ): Promise; + + getUserShares( + account: string, + overrides?: CallOverrides + ): Promise; + + getUserTotalDeposit( + account: string, + overrides?: CallOverrides + ): Promise; + + grantRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + hasRole( + role: BytesLike, + account: string, + overrides?: CallOverrides + ): Promise; + + initialize( + aurora: string, + streamOwner: string, + scheduleTimes: BigNumberish[], + scheduleRewards: BigNumberish[], + tauAuroraStream: BigNumberish, + _flags: BigNumberish, + _treasury: string, + _maxWeight: BigNumberish, + _minWeight: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + maxWeight(overrides?: CallOverrides): Promise; + + minWeight(overrides?: CallOverrides): Promise; + + moveAllRewardsToPending( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + moveRewardsToPending( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + proposeStream( + streamOwner: string, + rewardToken: string, + auroraDepositAmount: BigNumberish, + maxDepositAmount: BigNumberish, + minDepositAmount: BigNumberish, + scheduleTimes: BigNumberish[], + scheduleRewards: BigNumberish[], + tau: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + releaseAuroraRewardsToStreamOwner( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + removeStream( + streamId: BigNumberish, + streamFundReceiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + renounceRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + revokeRole( + role: BytesLike, + account: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + rewardsSchedule( + streamId: BigNumberish, + start: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides + ): Promise; + + stake( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stakeOnBehalfOfAnotherUser( + account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stakeOnBehalfOfOtherUsers( + accounts: string[], + amounts: BigNumberish[], + batchAmount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + startEndScheduleIndex( + streamId: BigNumberish, + start: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + totalAmountOfStakedAurora( + overrides?: CallOverrides + ): Promise; + + totalAuroraShares(overrides?: CallOverrides): Promise; + + totalStreamShares(overrides?: CallOverrides): Promise; + + touchedAt(overrides?: CallOverrides): Promise; + + treasury(overrides?: CallOverrides): Promise; + + unstake( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + unstakeAll( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + updateTreasury( + _treasury: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeTo( + newImplementation: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeToAndCall( + newImplementation: string, + data: BytesLike, + overrides?: PayableOverrides & { from?: string | Promise } + ): Promise; + + users( + arg0: string, + overrides?: CallOverrides + ): Promise; + + withdraw( + streamId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + withdrawAll( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/apps/aurora-plus/contracts/ethers/common.ts b/src/apps/aurora-plus/contracts/ethers/common.ts new file mode 100644 index 000000000..2fc40c7fb --- /dev/null +++ b/src/apps/aurora-plus/contracts/ethers/common.ts @@ -0,0 +1,44 @@ +/* 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< + TArgsArray extends Array = 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< + infer C, + any +> + ? C + : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; diff --git a/src/apps/aurora-plus/contracts/ethers/factories/Staking__factory.ts b/src/apps/aurora-plus/contracts/ethers/factories/Staking__factory.ts new file mode 100644 index 000000000..8357c4a92 --- /dev/null +++ b/src/apps/aurora-plus/contracts/ethers/factories/Staking__factory.ts @@ -0,0 +1,1689 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { Staking, StakingInterface } from "../Staking"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "previousAdmin", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newAdmin", + type: "address", + }, + ], + name: "AdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "beacon", + type: "address", + }, + ], + name: "BeaconUpgraded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "user", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Pending", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "user", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Released", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "previousAdminRole", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "newAdminRole", + type: "bytes32", + }, + ], + name: "RoleAdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleGranted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleRevoked", + 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: "shares", + type: "uint256", + }, + ], + name: "Staked", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "tokenAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "auroraAmount", + type: "uint256", + }, + ], + name: "StreamCreated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "StreamOwnerRewardReleased", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + ], + name: "StreamProposalCancelled", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "maxDepositAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "auroraDepositAmount", + type: "uint256", + }, + ], + name: "StreamProposed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + ], + name: "StreamRemoved", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "user", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Unstaked", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "implementation", + type: "address", + }, + ], + name: "Upgraded", + type: "event", + }, + { + inputs: [], + name: "AIRDROP_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "CLAIM_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "DEFAULT_ADMIN_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "FOUR_YEARS", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "ONE_MONTH", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PAUSE_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "STREAM_MANAGER_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "adminDelegatecall", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "flags", + type: "uint256", + }, + ], + name: "adminPause", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "key", + type: "uint256", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "adminSstore", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "key", + type: "uint256", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "uint256", + name: "mask", + type: "uint256", + }, + ], + name: "adminSstoreWithMask", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "auroraToken", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256[]", + name: "streamIds", + type: "uint256[]", + }, + ], + name: "batchClaimOnBehalfOfAnotherUser", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "accounts", + type: "address[]", + }, + { + internalType: "uint256[]", + name: "streamIds", + type: "uint256[]", + }, + ], + name: "batchClaimOnBehalfOfOtherUsers", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "streamIds", + type: "uint256[]", + }, + ], + name: "batchMoveRewardsToPending", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "streamIds", + type: "uint256[]", + }, + ], + name: "batchWithdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + ], + name: "cancelStreamProposal", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "claimAllOnBehalfOfAnotherUser", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "accounts", + type: "address[]", + }, + ], + name: "claimAllOnBehalfOfOtherUsers", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + ], + name: "claimOnBehalfOfAnotherUser", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + internalType: "uint256", + name: "rewardTokenAmount", + type: "uint256", + }, + ], + name: "createStream", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getAmountOfShares", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + ], + name: "getLatestRewardPerShare", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getPending", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getReleaseTime", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + ], + name: "getRewardPerShare", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getRewardPerShareForUser", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + internalType: "uint256", + name: "lastUpdate", + type: "uint256", + }, + ], + name: "getRewardsAmount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + ], + name: "getRoleAdmin", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + ], + name: "getStream", + outputs: [ + { + internalType: "address", + name: "streamOwner", + type: "address", + }, + { + internalType: "address", + name: "rewardToken", + type: "address", + }, + { + internalType: "uint256", + name: "auroraDepositAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "auroraClaimedAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "rewardDepositAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "rewardClaimedAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxDepositAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "lastTimeOwnerClaimed", + type: "uint256", + }, + { + internalType: "uint256", + name: "rps", + type: "uint256", + }, + { + internalType: "uint256", + name: "tau", + type: "uint256", + }, + { + internalType: "enum JetStakingV1.StreamStatus", + name: "status", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getStreamClaimableAmount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + ], + name: "getStreamOwnerClaimableAmount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + ], + name: "getStreamSchedule", + outputs: [ + { + internalType: "uint256[]", + name: "scheduleTimes", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "scheduleRewards", + type: "uint256[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getStreamsCount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getTotalAmountOfStakedAurora", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + ], + name: "getTreasuryBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getUserShares", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getUserTotalDeposit", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "grantRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "hasRole", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "aurora", + type: "address", + }, + { + internalType: "address", + name: "streamOwner", + type: "address", + }, + { + internalType: "uint256[]", + name: "scheduleTimes", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "scheduleRewards", + type: "uint256[]", + }, + { + internalType: "uint256", + name: "tauAuroraStream", + type: "uint256", + }, + { + internalType: "uint256", + name: "_flags", + type: "uint256", + }, + { + internalType: "address", + name: "_treasury", + type: "address", + }, + { + internalType: "uint256", + name: "_maxWeight", + type: "uint256", + }, + { + internalType: "uint256", + name: "_minWeight", + type: "uint256", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "maxWeight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "minWeight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "moveAllRewardsToPending", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + ], + name: "moveRewardsToPending", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "streamOwner", + type: "address", + }, + { + internalType: "address", + name: "rewardToken", + type: "address", + }, + { + internalType: "uint256", + name: "auroraDepositAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxDepositAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "minDepositAmount", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "scheduleTimes", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "scheduleRewards", + type: "uint256[]", + }, + { + internalType: "uint256", + name: "tau", + type: "uint256", + }, + ], + name: "proposeStream", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + ], + name: "releaseAuroraRewardsToStreamOwner", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + internalType: "address", + name: "streamFundReceiver", + type: "address", + }, + ], + name: "removeStream", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "renounceRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "revokeRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + internalType: "uint256", + name: "start", + type: "uint256", + }, + { + internalType: "uint256", + name: "end", + type: "uint256", + }, + ], + name: "rewardsSchedule", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "stake", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "stakeOnBehalfOfAnotherUser", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "accounts", + type: "address[]", + }, + { + internalType: "uint256[]", + name: "amounts", + type: "uint256[]", + }, + { + internalType: "uint256", + name: "batchAmount", + type: "uint256", + }, + ], + name: "stakeOnBehalfOfOtherUsers", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + { + internalType: "uint256", + name: "start", + type: "uint256", + }, + { + internalType: "uint256", + name: "end", + type: "uint256", + }, + ], + name: "startEndScheduleIndex", + outputs: [ + { + internalType: "uint256", + name: "startIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "endIndex", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalAmountOfStakedAurora", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalAuroraShares", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalStreamShares", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "touchedAt", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "treasury", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "unstake", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "unstakeAll", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_treasury", + type: "address", + }, + ], + name: "updateTreasury", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newImplementation", + type: "address", + }, + ], + name: "upgradeTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newImplementation", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "upgradeToAndCall", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "users", + outputs: [ + { + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + { + internalType: "uint256", + name: "auroraShares", + type: "uint256", + }, + { + internalType: "uint256", + name: "streamShares", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "streamId", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "withdrawAll", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class Staking__factory { + static readonly abi = _abi; + static createInterface(): StakingInterface { + return new utils.Interface(_abi) as StakingInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Staking { + return new Contract(address, _abi, signerOrProvider) as Staking; + } +} diff --git a/src/apps/aurora-plus/contracts/ethers/factories/index.ts b/src/apps/aurora-plus/contracts/ethers/factories/index.ts new file mode 100644 index 000000000..ae2fbbb4f --- /dev/null +++ b/src/apps/aurora-plus/contracts/ethers/factories/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { Staking__factory } from "./Staking__factory"; diff --git a/src/apps/aurora-plus/contracts/ethers/index.ts b/src/apps/aurora-plus/contracts/ethers/index.ts new file mode 100644 index 000000000..e229c702b --- /dev/null +++ b/src/apps/aurora-plus/contracts/ethers/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { Staking } from "./Staking"; +export * as factories from "./factories"; +export { Staking__factory } from "./factories/Staking__factory"; diff --git a/src/apps/aurora-plus/contracts/index.ts b/src/apps/aurora-plus/contracts/index.ts new file mode 100644 index 000000000..3df1e873c --- /dev/null +++ b/src/apps/aurora-plus/contracts/index.ts @@ -0,0 +1,25 @@ +import { Injectable, Inject } from '@nestjs/common'; +import { StaticJsonRpcProvider } from '@ethersproject/providers'; +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; + +import { NetworkProviderService } from '~network-provider/network-provider.service'; +import { Network } from '~types/network.interface'; + +import { Staking__factory } from './ethers'; +import type { Staking } from './ethers'; +import { ContractFactory } from '~contract/contracts'; +// eslint-disable-next-line +type ContractOpts = { address: string; network: Network }; + +@Injectable() +export class AuroraPlusContractFactory extends ContractFactory { + constructor(@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit) { + super((network: Network) => appToolkit.getNetworkProvider(network)); + } + + staking({ address, network }: ContractOpts) { + return Staking__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } +} + +export type { Staking } from './ethers'; diff --git a/src/apps/aurora-plus/index.ts b/src/apps/aurora-plus/index.ts new file mode 100644 index 000000000..ee7b29a1e --- /dev/null +++ b/src/apps/aurora-plus/index.ts @@ -0,0 +1,3 @@ +export { AURORA_PLUS_DEFINITION, AuroraPlusAppDefinition } from './aurora-plus.definition'; +export { AuroraPlusAppModule } from './aurora-plus.module'; +export { AuroraPlusContractFactory } from './contracts'; From 82f67840e1dae318d111738c3aaedc62cfdd7655 Mon Sep 17 00:00:00 2001 From: Andrew Leonard Date: Fri, 1 Jul 2022 10:01:22 -0700 Subject: [PATCH 2/2] add aurora plus logo --- src/apps/aurora-plus/assets/logo.png | Bin 0 -> 17340 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/apps/aurora-plus/assets/logo.png diff --git a/src/apps/aurora-plus/assets/logo.png b/src/apps/aurora-plus/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac8186f6c5c7583a0976ce0a4f0275f5c3ef746 GIT binary patch literal 17340 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

yy#>vsDAWE%$J0OVRTyJU$SNLfT751y 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 E0W#slEC2ui literal 0 HcmV?d00001