import { SignatureLike } from '@ethersproject/bytes'; import { BigNumber, providers } from 'ethers'; import BaseService from '../commons/BaseService'; import { EthereumTransactionTypeExtended, tEthereumAddress } from '../commons/types'; import { IERC20ServiceInterface } from '../erc20-contract'; import { StakedToken } from './typechain/StakedToken'; export interface AssetData { emissionPerSecond: BigNumber; lastUpdateTimestamp: BigNumber; index: BigNumber; '0': BigNumber; '1': BigNumber; '2': BigNumber; } export interface StakingInterface { stakingContractAddress: tEthereumAddress; exchangeRate: () => Promise; UNSTAKE_WINDOW: () => Promise; COOLDOWN_SECONDS: () => Promise; stakersCooldowns: (user: tEthereumAddress) => Promise; balanceOf: (user: tEthereumAddress) => Promise; getTotalRewardsBalance: (user: tEthereumAddress) => Promise; getStakerRedeemWindow: (user: tEthereumAddress) => Promise<[BigNumber, BigNumber, BigNumber]>; assets: (asset: tEthereumAddress) => Promise; stake: (user: tEthereumAddress, amount: string, onBehalfOf?: tEthereumAddress) => Promise; redeem: (user: tEthereumAddress, amount: string) => Promise; cooldown: (user: tEthereumAddress) => EthereumTransactionTypeExtended[]; claimRewards: (user: tEthereumAddress, amount: string) => Promise; claimRewardsAndRedeem: (user: tEthereumAddress, claimAmount: string, redeemAmount: string) => Promise; signStaking: (user: tEthereumAddress, amount: string, nonce: string) => Promise; stakeWithPermit: (user: tEthereumAddress, amount: string, signature: string) => Promise; } declare type StakingServiceConfig = { TOKEN_STAKING_ADDRESS: tEthereumAddress; }; export declare class StakingService extends BaseService implements StakingInterface { readonly stakingContractAddress: tEthereumAddress; readonly stakingContractInstance: StakedToken; readonly erc20Service: IERC20ServiceInterface; constructor(provider: providers.Provider, stakingServiceConfig: StakingServiceConfig); exchangeRate(): Promise; assets(asset: tEthereumAddress): Promise; UNSTAKE_WINDOW(): Promise; COOLDOWN_SECONDS(): Promise; stakersCooldowns(user: tEthereumAddress): Promise; getTotalRewardsBalance(user: tEthereumAddress): Promise; balanceOf(user: tEthereumAddress): Promise; getStakerRedeemWindow(user: tEthereumAddress): Promise<[BigNumber, BigNumber, BigNumber]>; signStaking(user: tEthereumAddress, amount: string, nonce: string): Promise; stakeWithPermit(user: tEthereumAddress, amount: string, signature: SignatureLike): Promise; stake(user: tEthereumAddress, amount: string, onBehalfOf?: tEthereumAddress): Promise; redeem(user: tEthereumAddress, amount: string): Promise; cooldown(user: tEthereumAddress): EthereumTransactionTypeExtended[]; claimRewards(user: tEthereumAddress, amount: string): Promise; claimRewardsAndRedeem(user: tEthereumAddress, claimAmount: string, redeemAmount: string): Promise; } export {}; //# sourceMappingURL=index.d.ts.map