"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Api3Staking__factory = void 0;
const ethers_1 = require("ethers");
const _abi = [
    {
        inputs: [
            {
                internalType: 'address',
                name: 'api3TokenAddress',
                type: 'address',
            },
            {
                internalType: 'address',
                name: 'timelockManagerAddress',
                type: 'address',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'constructor',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'user',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'CalculatedUserLocked',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'user',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'nextIndEpoch',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'oldestLockedEpoch',
                type: 'uint256',
            },
        ],
        name: 'CalculatingUserLocked',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'user',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'delegate',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'shares',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'totalDelegatedTo',
                type: 'uint256',
            },
        ],
        name: 'Delegated',
        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: 'userUnstaked',
                type: 'uint256',
            },
        ],
        name: 'Deposited',
        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: 'userUnstaked',
                type: 'uint256',
            },
        ],
        name: 'DepositedByTimelockManager',
        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: 'start',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'end',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'userUnstaked',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'userVesting',
                type: 'uint256',
            },
        ],
        name: 'DepositedVesting',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'uint256',
                name: 'epochIndex',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'newApr',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'totalStake',
                type: 'uint256',
            },
        ],
        name: 'MintedReward',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'recipient',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'totalStake',
                type: 'uint256',
            },
        ],
        name: 'PaidOutClaim',
        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',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'scheduledFor',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'userShares',
                type: 'uint256',
            },
        ],
        name: 'ScheduledUnstake',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'aprUpdateStep',
                type: 'uint256',
            },
        ],
        name: 'SetAprUpdateStep',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'claimsManager',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'bool',
                name: 'status',
                type: 'bool',
            },
        ],
        name: 'SetClaimsManagerStatus',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'address',
                name: 'agentAppPrimary',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'address',
                name: 'agentAppSecondary',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'address',
                name: 'votingAppPrimary',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'address',
                name: 'votingAppSecondary',
                type: 'address',
            },
        ],
        name: 'SetDaoApps',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'maxApr',
                type: 'uint256',
            },
        ],
        name: 'SetMaxApr',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'minApr',
                type: 'uint256',
            },
        ],
        name: 'SetMinApr',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'proposalVotingPowerThreshold',
                type: 'uint256',
            },
        ],
        name: 'SetProposalVotingPowerThreshold',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'stakeTarget',
                type: 'uint256',
            },
        ],
        name: 'SetStakeTarget',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'unstakeWaitPeriod',
                type: 'uint256',
            },
        ],
        name: 'SetUnstakeWaitPeriod',
        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: 'mintedShares',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'userUnstaked',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'userShares',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'totalShares',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'totalStake',
                type: 'uint256',
            },
        ],
        name: 'Staked',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'user',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'delegate',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'shares',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'totalDelegatedTo',
                type: 'uint256',
            },
        ],
        name: 'Undelegated',
        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: 'userUnstaked',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'totalShares',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'totalStake',
                type: 'uint256',
            },
        ],
        name: 'Unstaked',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'user',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'delegate',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'bool',
                name: 'delta',
                type: 'bool',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'shares',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'totalDelegatedTo',
                type: 'uint256',
            },
        ],
        name: 'UpdatedDelegation',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'user',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'lastProposalTimestamp',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'address',
                name: 'votingApp',
                type: 'address',
            },
        ],
        name: 'UpdatedLastProposalTimestamp',
        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: 'userVesting',
                type: 'uint256',
            },
        ],
        name: 'VestedTimelock',
        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: 'userUnstaked',
                type: 'uint256',
            },
        ],
        name: 'Withdrawn',
        type: 'event',
    },
    {
        inputs: [],
        name: 'EPOCH_LENGTH',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'REWARD_VESTING_PERIOD',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'agentAppPrimary',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'agentAppSecondary',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'api3Token',
        outputs: [
            {
                internalType: 'contract IApi3Token',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'apr',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'aprUpdateStep',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        name: 'claimsManagerStatus',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'delegate',
                type: 'address',
            },
        ],
        name: 'delegateVotingPower',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'delegatedToUser',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: '_block',
                type: 'uint256',
            },
        ],
        name: 'delegatedToUserAt',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'source',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'deposit',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'depositAndStake',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'depositRegular',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'source',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'releaseStart',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'releaseEnd',
                type: 'uint256',
            },
        ],
        name: 'depositWithVesting',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'epochIndexOfLastReward',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        name: 'epochIndexToReward',
        outputs: [
            {
                internalType: 'uint32',
                name: 'atBlock',
                type: 'uint32',
            },
            {
                internalType: 'uint224',
                name: 'amount',
                type: 'uint224',
            },
            {
                internalType: 'uint256',
                name: 'totalSharesThen',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'totalStakeThen',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'genesisEpoch',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'getUser',
        outputs: [
            {
                internalType: 'uint256',
                name: 'unstaked',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'vesting',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'unstakeAmount',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'unstakeShares',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'unstakeScheduledFor',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'lastDelegationUpdateTimestamp',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'lastProposalTimestamp',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'isGenesisEpoch',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'maxApr',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'minApr',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'mintReward',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'recipient',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'payOutClaim',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        name: 'poolShares',
        outputs: [
            {
                internalType: 'uint32',
                name: 'fromBlock',
                type: 'uint32',
            },
            {
                internalType: 'uint224',
                name: 'value',
                type: 'uint224',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'noEpochsPerIteration',
                type: 'uint256',
            },
        ],
        name: 'precalculateUserLocked',
        outputs: [
            {
                internalType: 'bool',
                name: 'finished',
                type: 'bool',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'proposalVotingPowerThreshold',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'scheduleUnstake',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: '_aprUpdateStep',
                type: 'uint256',
            },
        ],
        name: 'setAprUpdateStep',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'claimsManager',
                type: 'address',
            },
            {
                internalType: 'bool',
                name: 'status',
                type: 'bool',
            },
        ],
        name: 'setClaimsManagerStatus',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '_agentAppPrimary',
                type: 'address',
            },
            {
                internalType: 'address',
                name: '_agentAppSecondary',
                type: 'address',
            },
            {
                internalType: 'address',
                name: '_votingAppPrimary',
                type: 'address',
            },
            {
                internalType: 'address',
                name: '_votingAppSecondary',
                type: 'address',
            },
        ],
        name: 'setDaoApps',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: '_maxApr',
                type: 'uint256',
            },
        ],
        name: 'setMaxApr',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: '_minApr',
                type: 'uint256',
            },
        ],
        name: 'setMinApr',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: '_proposalVotingPowerThreshold',
                type: 'uint256',
            },
        ],
        name: 'setProposalVotingPowerThreshold',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: '_stakeTarget',
                type: 'uint256',
            },
        ],
        name: 'setStakeTarget',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: '_unstakeWaitPeriod',
                type: 'uint256',
            },
        ],
        name: 'setUnstakeWaitPeriod',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'stake',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'stakeTarget',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'timelockManager',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'totalShares',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: '_block',
                type: 'uint256',
            },
        ],
        name: 'totalSharesAt',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'totalStake',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'undelegateVotingPower',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'unstake',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'unstakeAndWithdraw',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'unstakeWaitPeriod',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'updateLastProposalTimestamp',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'updateTimelockStatus',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'userDelegate',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: '_block',
                type: 'uint256',
            },
        ],
        name: 'userDelegateAt',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'userLocked',
        outputs: [
            {
                internalType: 'uint256',
                name: 'locked',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'userShares',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: '_block',
                type: 'uint256',
            },
        ],
        name: 'userSharesAt',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'userStake',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        name: 'userToLockedCalculation',
        outputs: [
            {
                internalType: 'uint256',
                name: 'initialIndEpoch',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'nextIndEpoch',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'locked',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        name: 'userToTimelock',
        outputs: [
            {
                internalType: 'uint256',
                name: 'totalAmount',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'remainingAmount',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'releaseStart',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'releaseEnd',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
        ],
        name: 'userVotingPower',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'userAddress',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: '_block',
                type: 'uint256',
            },
        ],
        name: 'userVotingPowerAt',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        name: 'users',
        outputs: [
            {
                internalType: 'uint256',
                name: 'unstaked',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'vesting',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'unstakeAmount',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'unstakeShares',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'unstakeScheduledFor',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'lastDelegationUpdateTimestamp',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'lastProposalTimestamp',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'votingAppPrimary',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'votingAppSecondary',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'withdrawPrecalculated',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'withdrawRegular',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
];
class Api3Staking__factory {
    static createInterface() {
        return new ethers_1.utils.Interface(_abi);
    }
    static connect(address, signerOrProvider) {
        return new ethers_1.Contract(address, _abi, signerOrProvider);
    }
}
exports.Api3Staking__factory = Api3Staking__factory;
Api3Staking__factory.abi = _abi;
//# sourceMappingURL=Api3Staking__factory.js.map