import { Address } from '../../../../../node_modules/@btc-vision/transaction/build/index.js'; import { CallResult } from '../../../../contracts/CallResult.js'; import { BalanceOf, TotalSupply } from '../opnet/IOP20Contract.js'; import { IOP_NETContract } from '../opnet/IOP_NETContract.js'; export type Status = CallResult<{ status: bigint; }>; interface IMotoswapReentrancyGuard extends IOP_NETContract { status(): Promise; } export type Admin = CallResult<{ adminAddress: Address; }>; export type ChangeAdmin = CallResult; interface IMotoswapOwnableReentrancyGuard extends IMotoswapReentrancyGuard { admin(): Promise; changeAdmin(newAdmin: Address): Promise; } export type GetMotoAddress = CallResult<{ motoAddress: Address; }>; export type MotoAddress = CallResult<{ totalSupply: bigint; }>; export type LastInteractedBlock = CallResult<{ lastInteractedBlock: bigint; }>; export type RewardDebt = CallResult<{ rewardDebt: bigint; }>; export type RewardBalance = CallResult<{ rewardBalance: bigint; }>; export type PendingReward = CallResult<{ pendingReward: bigint; }>; export type CalculateSlashingFee = CallResult<{ slashingFee: bigint; }>; export type EnabledRewardTokens = CallResult<{ enabledRewardTokens: Address[]; }>; export type Stake = CallResult; export type Unstake = CallResult; export type ClaimRewards = CallResult; export type AdminAddRewardToken = CallResult; export type AdminRemoveRewardToken = CallResult; export type AdminChangeMotoAddress = CallResult; export type AdminChangeLockupParameters = CallResult; export type AdminEnableEmergencyWithdrawals = CallResult; export type RewardTokenAddedEvent = { readonly token: Address; }; export type RewardTokenRemovedEvent = { readonly token: Address; }; export interface IMotoswapStakingContract extends IMotoswapOwnableReentrancyGuard { balanceOf(address: Address): Promise; totalSupply(): Promise; motoAddress(): Promise; lastInteractedBlock(address: Address): Promise; rewardDebt(user: Address, rewardToken: Address): Promise; rewardBalance(user: Address): Promise; pendingReward(user: Address, rewardToken: Address): Promise; calculateSlashingFee(user: Address, amount: bigint): Promise; enabledRewardTokens(): Promise; stake(amount: bigint): Promise; unstake(): Promise; claimRewards(): Promise; adminAddRewardToken(token: Address): Promise; adminRemoveRewardToken(token: Address): Promise; adminChangeMotoAddress(token: Address): Promise; adminChangeLockupParameters(newLockupDuration: bigint, newMaxSlashingFeePercent: bigint, newBlocksPerOnePercentSlashingFeeReduction: bigint): Promise; adminEnableEmergencyWithdrawals(): Promise; } export {};