export const STAKE_ABI = [ { inputs: [ { internalType: 'address', name: 'protocolBeneficiary_', type: 'address' }, { internalType: 'uint256', name: 'creationFee_', type: 'uint256' }, { internalType: 'uint256', name: 'claimFee_', type: 'uint256' }, ], stateMutability: 'nonpayable', type: 'constructor', }, { inputs: [{ internalType: 'address', name: 'target', type: 'address' }], name: 'AddressEmptyCode', type: 'error' }, { inputs: [{ internalType: 'address', name: 'account', type: 'address' }], name: 'AddressInsufficientBalance', type: 'error', }, { inputs: [], name: 'FailedInnerCall', type: 'error' }, { inputs: [], name: 'MathOverflowedMulDiv', type: 'error' }, { inputs: [{ internalType: 'address', name: 'owner', type: 'address' }], name: 'OwnableInvalidOwner', type: 'error' }, { inputs: [{ internalType: 'address', name: 'account', type: 'address' }], name: 'OwnableUnauthorizedAccount', type: 'error', }, { inputs: [], name: 'ReentrancyGuardReentrantCall', type: 'error' }, { inputs: [{ internalType: 'address', name: 'token', type: 'address' }], name: 'SafeERC20FailedOperation', type: 'error', }, { inputs: [], name: 'Stake__FeeTransferFailed', type: 'error' }, { inputs: [], name: 'Stake__InsufficientBalance', type: 'error' }, { inputs: [], name: 'Stake__InvalidAddress', type: 'error' }, { inputs: [], name: 'Stake__InvalidClaimFee', type: 'error' }, { inputs: [], name: 'Stake__InvalidCreationFee', type: 'error' }, { inputs: [], name: 'Stake__InvalidDuration', type: 'error' }, { inputs: [], name: 'Stake__InvalidPaginationParameters', type: 'error' }, { inputs: [], name: 'Stake__InvalidRewardStartsAt', type: 'error' }, { inputs: [], name: 'Stake__InvalidToken', type: 'error' }, { inputs: [], name: 'Stake__InvalidTokenId', type: 'error' }, { inputs: [], name: 'Stake__InvalidTokenType', type: 'error' }, { inputs: [], name: 'Stake__PoolCancelled', type: 'error' }, { inputs: [], name: 'Stake__PoolFinished', type: 'error' }, { inputs: [], name: 'Stake__PoolNotFound', type: 'error' }, { inputs: [], name: 'Stake__RewardRateTooLow', type: 'error' }, { inputs: [], name: 'Stake__RewardTokenTokenTooSmall', type: 'error' }, { inputs: [], name: 'Stake__StakeAmountTooLarge', type: 'error' }, { inputs: [], name: 'Stake__StakingTokenTokenTooBig', type: 'error' }, { inputs: [], name: 'Stake__TokenHasTransferFeesOrRebasing', type: 'error' }, { inputs: [], name: 'Stake__Unauthorized', type: 'error' }, { inputs: [], name: 'Stake__ZeroAmount', type: 'error' }, { anonymous: false, inputs: [ { indexed: false, internalType: 'uint256', name: 'oldFee', type: 'uint256' }, { indexed: false, internalType: 'uint256', name: 'newFee', type: 'uint256' }, ], name: 'ClaimFeeUpdated', type: 'event', }, { anonymous: false, inputs: [ { indexed: false, internalType: 'uint256', name: 'oldFee', type: 'uint256' }, { indexed: false, internalType: 'uint256', name: 'newFee', type: 'uint256' }, ], name: 'CreationFeeUpdated', type: 'event', }, { anonymous: false, inputs: [ { indexed: true, internalType: 'address', name: 'previousOwner', type: 'address' }, { indexed: true, internalType: 'address', name: 'newOwner', type: 'address' }, ], name: 'OwnershipTransferred', type: 'event', }, { anonymous: false, inputs: [ { indexed: true, internalType: 'uint256', name: 'poolId', type: 'uint256' }, { indexed: true, internalType: 'uint256', name: 'leftoverRewards', type: 'uint256' }, ], name: 'PoolCancelled', type: 'event', }, { anonymous: false, inputs: [ { indexed: false, internalType: 'uint256', name: 'poolId', type: 'uint256' }, { indexed: true, internalType: 'address', name: 'creator', type: 'address' }, { indexed: true, internalType: 'address', name: 'stakingToken', type: 'address' }, { indexed: false, internalType: 'bool', name: 'isStakingTokenERC20', type: 'bool' }, { indexed: true, internalType: 'address', name: 'rewardToken', type: 'address' }, { indexed: false, internalType: 'uint104', name: 'rewardAmount', type: 'uint104' }, { indexed: false, internalType: 'uint40', name: 'rewardStartsAt', type: 'uint40' }, { indexed: false, internalType: 'uint32', name: 'rewardDuration', type: 'uint32' }, ], name: 'PoolCreated', type: 'event', }, { anonymous: false, inputs: [ { indexed: false, internalType: 'address', name: 'oldBeneficiary', type: 'address' }, { indexed: false, internalType: 'address', name: 'newBeneficiary', type: 'address' }, ], name: 'ProtocolBeneficiaryUpdated', type: 'event', }, { anonymous: false, inputs: [ { indexed: true, internalType: 'uint256', name: 'poolId', type: 'uint256' }, { indexed: true, internalType: 'address', name: 'staker', type: 'address' }, { indexed: true, internalType: 'uint104', name: 'reward', type: 'uint104' }, { indexed: false, internalType: 'uint104', name: 'fee', type: 'uint104' }, ], name: 'RewardClaimed', type: 'event', }, { anonymous: false, inputs: [ { indexed: true, internalType: 'uint256', name: 'poolId', type: 'uint256' }, { indexed: true, internalType: 'address', name: 'staker', type: 'address' }, { indexed: true, internalType: 'uint104', name: 'amount', type: 'uint104' }, ], name: 'Staked', type: 'event', }, { anonymous: false, inputs: [ { indexed: true, internalType: 'uint256', name: 'poolId', type: 'uint256' }, { indexed: true, internalType: 'address', name: 'staker', type: 'address' }, { indexed: true, internalType: 'uint104', name: 'amount', type: 'uint104' }, { indexed: false, internalType: 'bool', name: 'rewardClaimed', type: 'bool' }, ], name: 'Unstaked', type: 'event', }, { inputs: [], name: 'MAX_REWARD_DURATION', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function', }, { inputs: [], name: 'MIN_REWARD_DURATION', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function', }, { inputs: [{ internalType: 'uint256', name: 'poolId', type: 'uint256' }], name: 'cancelPool', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [{ internalType: 'uint256', name: 'poolId', type: 'uint256' }], name: 'claim', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [], name: 'claimFee', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'uint256', name: 'poolId', type: 'uint256' }, { internalType: 'address', name: 'staker', type: 'address' }, ], name: 'claimableReward', outputs: [ { internalType: 'uint256', name: 'rewardClaimable', type: 'uint256' }, { internalType: 'uint256', name: 'fee', type: 'uint256' }, { internalType: 'uint256', name: 'claimedTotal', type: 'uint256' }, { internalType: 'uint256', name: 'feeTotal', type: 'uint256' }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'uint256', name: 'poolIdFrom', type: 'uint256' }, { internalType: 'uint256', name: 'poolIdTo', type: 'uint256' }, { internalType: 'address', name: 'staker', type: 'address' }, ], name: 'claimableRewardBulk', outputs: [{ internalType: 'uint256[5][]', name: 'results', type: 'uint256[5][]' }], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'address', name: 'stakingToken', type: 'address' }, { internalType: 'bool', name: 'isStakingTokenERC20', type: 'bool' }, { internalType: 'address', name: 'rewardToken', type: 'address' }, { internalType: 'uint104', name: 'rewardAmount', type: 'uint104' }, { internalType: 'uint40', name: 'rewardStartsAt', type: 'uint40' }, { internalType: 'uint32', name: 'rewardDuration', type: 'uint32' }, ], name: 'createPool', outputs: [{ internalType: 'uint256', name: 'poolId', type: 'uint256' }], stateMutability: 'payable', type: 'function', }, { inputs: [], name: 'creationFee', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function', }, { inputs: [{ internalType: 'uint256', name: 'poolId', type: 'uint256' }], name: 'emergencyUnstake', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [{ internalType: 'uint256', name: 'poolId', type: 'uint256' }], name: 'getPool', outputs: [ { components: [ { internalType: 'uint256', name: 'poolId', type: 'uint256' }, { components: [ { internalType: 'address', name: 'stakingToken', type: 'address' }, { internalType: 'bool', name: 'isStakingTokenERC20', type: 'bool' }, { internalType: 'address', name: 'rewardToken', type: 'address' }, { internalType: 'address', name: 'creator', type: 'address' }, { internalType: 'uint104', name: 'rewardAmount', type: 'uint104' }, { internalType: 'uint32', name: 'rewardDuration', type: 'uint32' }, { internalType: 'uint40', name: 'rewardStartsAt', type: 'uint40' }, { internalType: 'uint40', name: 'rewardStartedAt', type: 'uint40' }, { internalType: 'uint40', name: 'cancelledAt', type: 'uint40' }, { internalType: 'uint128', name: 'totalStaked', type: 'uint128' }, { internalType: 'uint32', name: 'activeStakerCount', type: 'uint32' }, { internalType: 'uint40', name: 'lastRewardUpdatedAt', type: 'uint40' }, { internalType: 'uint256', name: 'accRewardPerShare', type: 'uint256' }, { internalType: 'uint104', name: 'totalAllocatedRewards', type: 'uint104' }, ], internalType: 'struct Stake.Pool', name: 'pool', type: 'tuple', }, { components: [ { internalType: 'string', name: 'symbol', type: 'string' }, { internalType: 'string', name: 'name', type: 'string' }, { internalType: 'uint8', name: 'decimals', type: 'uint8' }, ], internalType: 'struct Stake.TokenInfo', name: 'stakingToken', type: 'tuple', }, { components: [ { internalType: 'string', name: 'symbol', type: 'string' }, { internalType: 'string', name: 'name', type: 'string' }, { internalType: 'uint8', name: 'decimals', type: 'uint8' }, ], internalType: 'struct Stake.TokenInfo', name: 'rewardToken', type: 'tuple', }, ], internalType: 'struct Stake.PoolView', name: '', type: 'tuple', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'uint256', name: 'poolIdFrom', type: 'uint256' }, { internalType: 'uint256', name: 'poolIdTo', type: 'uint256' }, ], name: 'getPools', outputs: [ { components: [ { internalType: 'uint256', name: 'poolId', type: 'uint256' }, { components: [ { internalType: 'address', name: 'stakingToken', type: 'address' }, { internalType: 'bool', name: 'isStakingTokenERC20', type: 'bool' }, { internalType: 'address', name: 'rewardToken', type: 'address' }, { internalType: 'address', name: 'creator', type: 'address' }, { internalType: 'uint104', name: 'rewardAmount', type: 'uint104' }, { internalType: 'uint32', name: 'rewardDuration', type: 'uint32' }, { internalType: 'uint40', name: 'rewardStartsAt', type: 'uint40' }, { internalType: 'uint40', name: 'rewardStartedAt', type: 'uint40' }, { internalType: 'uint40', name: 'cancelledAt', type: 'uint40' }, { internalType: 'uint128', name: 'totalStaked', type: 'uint128' }, { internalType: 'uint32', name: 'activeStakerCount', type: 'uint32' }, { internalType: 'uint40', name: 'lastRewardUpdatedAt', type: 'uint40' }, { internalType: 'uint256', name: 'accRewardPerShare', type: 'uint256' }, { internalType: 'uint104', name: 'totalAllocatedRewards', type: 'uint104' }, ], internalType: 'struct Stake.Pool', name: 'pool', type: 'tuple', }, { components: [ { internalType: 'string', name: 'symbol', type: 'string' }, { internalType: 'string', name: 'name', type: 'string' }, { internalType: 'uint8', name: 'decimals', type: 'uint8' }, ], internalType: 'struct Stake.TokenInfo', name: 'stakingToken', type: 'tuple', }, { components: [ { internalType: 'string', name: 'symbol', type: 'string' }, { internalType: 'string', name: 'name', type: 'string' }, { internalType: 'uint8', name: 'decimals', type: 'uint8' }, ], internalType: 'struct Stake.TokenInfo', name: 'rewardToken', type: 'tuple', }, ], internalType: 'struct Stake.PoolView[]', name: 'poolList', type: 'tuple[]', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'uint256', name: 'poolIdFrom', type: 'uint256' }, { internalType: 'uint256', name: 'poolIdTo', type: 'uint256' }, { internalType: 'address', name: 'creator', type: 'address' }, ], name: 'getPoolsByCreator', outputs: [ { components: [ { internalType: 'uint256', name: 'poolId', type: 'uint256' }, { components: [ { internalType: 'address', name: 'stakingToken', type: 'address' }, { internalType: 'bool', name: 'isStakingTokenERC20', type: 'bool' }, { internalType: 'address', name: 'rewardToken', type: 'address' }, { internalType: 'address', name: 'creator', type: 'address' }, { internalType: 'uint104', name: 'rewardAmount', type: 'uint104' }, { internalType: 'uint32', name: 'rewardDuration', type: 'uint32' }, { internalType: 'uint40', name: 'rewardStartsAt', type: 'uint40' }, { internalType: 'uint40', name: 'rewardStartedAt', type: 'uint40' }, { internalType: 'uint40', name: 'cancelledAt', type: 'uint40' }, { internalType: 'uint128', name: 'totalStaked', type: 'uint128' }, { internalType: 'uint32', name: 'activeStakerCount', type: 'uint32' }, { internalType: 'uint40', name: 'lastRewardUpdatedAt', type: 'uint40' }, { internalType: 'uint256', name: 'accRewardPerShare', type: 'uint256' }, { internalType: 'uint104', name: 'totalAllocatedRewards', type: 'uint104' }, ], internalType: 'struct Stake.Pool', name: 'pool', type: 'tuple', }, { components: [ { internalType: 'string', name: 'symbol', type: 'string' }, { internalType: 'string', name: 'name', type: 'string' }, { internalType: 'uint8', name: 'decimals', type: 'uint8' }, ], internalType: 'struct Stake.TokenInfo', name: 'stakingToken', type: 'tuple', }, { components: [ { internalType: 'string', name: 'symbol', type: 'string' }, { internalType: 'string', name: 'name', type: 'string' }, { internalType: 'uint8', name: 'decimals', type: 'uint8' }, ], internalType: 'struct Stake.TokenInfo', name: 'rewardToken', type: 'tuple', }, ], internalType: 'struct Stake.PoolView[]', name: 'poolList', type: 'tuple[]', }, ], stateMutability: 'view', type: 'function', }, { inputs: [ { internalType: 'address', name: '', type: 'address' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256', name: 'id', type: 'uint256' }, { internalType: 'uint256', name: '', type: 'uint256' }, { internalType: 'bytes', name: '', type: 'bytes' }, ], name: 'onERC1155Received', outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], stateMutability: 'pure', type: 'function', }, { inputs: [], name: 'owner', outputs: [{ internalType: 'address', name: '', type: 'address' }], stateMutability: 'view', type: 'function', }, { inputs: [], name: 'poolCount', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function', }, { inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], name: 'pools', outputs: [ { internalType: 'address', name: 'stakingToken', type: 'address' }, { internalType: 'bool', name: 'isStakingTokenERC20', type: 'bool' }, { internalType: 'address', name: 'rewardToken', type: 'address' }, { internalType: 'address', name: 'creator', type: 'address' }, { internalType: 'uint104', name: 'rewardAmount', type: 'uint104' }, { internalType: 'uint32', name: 'rewardDuration', type: 'uint32' }, { internalType: 'uint40', name: 'rewardStartsAt', type: 'uint40' }, { internalType: 'uint40', name: 'rewardStartedAt', type: 'uint40' }, { internalType: 'uint40', name: 'cancelledAt', type: 'uint40' }, { internalType: 'uint128', name: 'totalStaked', type: 'uint128' }, { internalType: 'uint32', name: 'activeStakerCount', type: 'uint32' }, { internalType: 'uint40', name: 'lastRewardUpdatedAt', type: 'uint40' }, { internalType: 'uint256', name: 'accRewardPerShare', type: 'uint256' }, { internalType: 'uint104', name: 'totalAllocatedRewards', type: 'uint104' }, ], stateMutability: 'view', type: 'function', }, { inputs: [], name: 'protocolBeneficiary', outputs: [{ internalType: 'address', name: '', type: 'address' }], stateMutability: 'view', type: 'function', }, { inputs: [], name: 'renounceOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [ { internalType: 'uint256', name: 'poolId', type: 'uint256' }, { internalType: 'uint104', name: 'amount', type: 'uint104' }, ], name: 'stake', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }], name: 'transferOwnership', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { internalType: 'uint256', name: 'poolId', type: 'uint256' }, { internalType: 'uint104', name: 'amount', type: 'uint104' }, ], name: 'unstake', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [{ internalType: 'uint256', name: 'claimFee_', type: 'uint256' }], name: 'updateClaimFee', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [{ internalType: 'uint256', name: 'creationFee_', type: 'uint256' }], name: 'updateCreationFee', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [{ internalType: 'address', name: 'protocolBeneficiary_', type: 'address' }], name: 'updateProtocolBeneficiary', outputs: [], stateMutability: 'nonpayable', type: 'function', }, { inputs: [ { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256', name: '', type: 'uint256' }, ], name: 'userPoolStake', outputs: [ { internalType: 'uint104', name: 'stakedAmount', type: 'uint104' }, { internalType: 'uint104', name: 'claimedTotal', type: 'uint104' }, { internalType: 'uint104', name: 'feeTotal', type: 'uint104' }, { internalType: 'uint256', name: 'rewardDebt', type: 'uint256' }, ], stateMutability: 'view', type: 'function', }, { inputs: [], name: 'version', outputs: [{ internalType: 'string', name: '', type: 'string' }], stateMutability: 'pure', type: 'function', }, ] as const;