@maplelabs/core-artifacts
Version:
Consist artifacts of the maple protocol
8,331 lines • 337 kB
JSON
{
"id": "4d43c1e3c82dae0246edc7f38c4f2fbe",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.6.11",
"solcLongVersion": "0.6.11+commit.5ef660b1",
"input": {
"language": "Solidity",
"sources": {
"contracts/core/stake-locker/v1/interfaces/IStakeLocker.sol": {
"content": "// SPDX-License-Identifier: AGPL-3.0-or-later // hevm: flattened sources of contracts/core/stake-locker/v1/interfaces/IStakeLocker.sol\npragma solidity =0.6.11 >=0.6.0 <0.8.0;\n\n////// lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\n/* pragma solidity >=0.6.0 <0.8.0; */\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n\n////// contracts/core/funds-distribution-token/v1/interfaces/IBasicFDT.sol\n/* pragma solidity 0.6.11; */\n\n/* import { IERC20 } from \"../../../../../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\"; */\n\n/// @title BasicFDT implements the basic level FDT functionality for accounting for revenues.\ninterface IBasicFDT is IERC20 {\n\n /**\n @dev This event emits when new funds are distributed.\n @param by The address of the sender that distributed funds.\n @param fundsDistributed The amount of funds received for distribution.\n */\n event FundsDistributed(address indexed by, uint256 fundsDistributed);\n\n /**\n @dev This event emits when distributed funds are withdrawn by a token holder.\n @param by The address of the receiver of funds.\n @param fundsWithdrawn The amount of funds that were withdrawn.\n @param totalWithdrawn The total amount of funds that were withdrawn.\n */\n event FundsWithdrawn(address indexed by, uint256 fundsWithdrawn, uint256 totalWithdrawn);\n\n /**\n @dev This event emits when the internal `pointsPerShare` is updated.\n @dev First, and only, parameter is the new value of the internal `pointsPerShare`.\n */\n event PointsPerShareUpdated(uint256);\n\n /**\n @dev This event emits when an account's `pointsCorrection` is updated.\n @dev First parameter is the address of some account.\n @dev Second parameter is the new value of the account's `pointsCorrection`.\n */\n event PointsCorrectionUpdated(address indexed, int256);\n\n /**\n @dev Returns the amount of funds that an account can withdraw.\n @param _owner The address of some FDT holder.\n @return The amount funds that `_owner` can withdraw.\n */\n function withdrawableFundsOf(address _owner) external view returns (uint256);\n\n /**\n @dev Withdraws all available funds for the calling FDT holder.\n */\n function withdrawFunds() external;\n\n /**\n @dev Returns the amount of funds that an account has withdrawn.\n @param _owner The address of a token holder.\n @return The amount of funds that `_owner` has withdrawn.\n */\n function withdrawnFundsOf(address _owner) external view returns (uint256);\n\n /**\n @dev Returns the amount of funds that an account has earned in total. \n @dev accumulativeFundsOf(_owner) = withdrawableFundsOf(_owner) + withdrawnFundsOf(_owner) \n = (pointsPerShare * balanceOf(_owner) + pointsCorrection[_owner]) / pointsMultiplier \n @param _owner The address of a token holder.\n @return The amount of funds that `_owner` has earned in total.\n */\n function accumulativeFundsOf(address _owner) external view returns (uint256);\n\n /**\n @dev Registers a payment of funds in tokens. \n @dev May be called directly after a deposit is made. \n @dev Calls _updateFundsTokenBalance(), whereby the contract computes the delta of the new and previous \n `fundsToken` balance and increments the total received funds (cumulative), by delta, by calling _distributeFunds().\n */\n function updateFundsReceived() external;\n\n}\n\n////// contracts/core/funds-distribution-token/v1/interfaces/IExtendedFDT.sol\n/* pragma solidity 0.6.11; */\n\n/* import { IBasicFDT } from \"./IBasicFDT.sol\"; */\n\n/// @title ExtendedFDT implements the FDT functionality for accounting for losses.\ninterface IExtendedFDT is IBasicFDT {\n\n /**\n @dev This event emits when the internal `lossesPerShare` is updated.\n @dev First, and only, parameter is the new value of the internal `lossesPerShare`.\n */\n event LossesPerShareUpdated(uint256);\n\n /**\n @dev This event emits when an account's `lossesCorrection` is updated.\n @dev First parameter is the address of some account.\n @dev Second parameter is the new value of the account's `lossesCorrection`.\n */\n event LossesCorrectionUpdated(address indexed, int256);\n\n /**\n @dev This event emits when new losses are distributed.\n @dev First parameter is the address of the account that has distributed losses.\n @dev Second parameter is the amount of losses received for distribution.\n */\n event LossesDistributed(address indexed, uint256);\n\n /**\n @dev This event emits when distributed losses are recognized by a token holder.\n @dev First parameter is the address of the receiver of losses.\n @dev Second parameter is the amount of losses that were recognized.\n @dev Third parameter is the total amount of losses that are recognized.\n */\n event LossesRecognized(address indexed, uint256, uint256);\n\n /**\n @dev Returns the amount of losses that an account can withdraw.\n @param _owner The address of a token holder.\n @return The amount of losses that `_owner` can withdraw.\n */\n function recognizableLossesOf(address _owner) external view returns (uint256);\n\n /**\n @dev Returns the amount of losses that an account has recognized.\n @param _owner The address of a token holder.\n @return The amount of losses that `_owner` has recognized.\n */\n function recognizedLossesOf(address _owner) external view returns (uint256);\n\n /**\n @dev Returns the amount of losses that an account has earned in total. \n @dev accumulativeLossesOf(_owner) = recognizableLossesOf(_owner) + recognizedLossesOf(_owner) \n = (lossesPerShare * balanceOf(_owner) + lossesCorrection[_owner]) / pointsMultiplier \n @param _owner The address of a token holder.\n @return The amount of losses that `_owner` has earned in total.\n */\n function accumulativeLossesOf(address _owner) external view returns (uint256);\n\n /**\n @dev Registers a loss. \n @dev May be called directly after a shortfall after BPT burning occurs. \n @dev Calls _updateLossesTokenBalance(), whereby the contract computes the delta of the new and previous \n losses balance and increments the total losses (cumulative), by delta, by calling _distributeLosses(). \n */\n function updateLossesReceived() external;\n\n}\n\n////// contracts/core/stake-locker/v1/interfaces/IStakeLockerFDT.sol\n/* pragma solidity 0.6.11; */\n\n/* import { IERC20 } from \"../../../../../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\"; */\n\n/* import { IExtendedFDT } from \"../../../funds-distribution-token/v1/interfaces/IExtendedFDT.sol\"; */\n\n/// @title StakeLockerFDT inherits ExtendedFDT and accounts for gains/losses for Stakers.\ninterface IStakeLockerFDT is IExtendedFDT {\n\n /**\n @dev The ERC-2222 Funds Token.\n */\n function fundsToken() external view returns (IERC20);\n\n /**\n @dev The sum of all unrecognized losses.\n */\n function bptLosses() external view returns (uint256);\n\n /**\n @dev The amount of losses present and accounted for in this contract.\n */\n function lossesBalance() external view returns (uint256);\n\n /**\n @dev The amount of `fundsToken` (Liquidity Asset) currently present and accounted for in this contract.\n */\n function fundsTokenBalance() external view returns (uint256);\n\n}\n\n////// contracts/core/stake-locker/v1/interfaces/IStakeLocker.sol\n/* pragma solidity 0.6.11; */\n\n/* import { IERC20 } from \"../../../../../lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\"; */\n\n/* import { IStakeLockerFDT } from \"./IStakeLockerFDT.sol\"; */\n\n/// @title StakeLocker holds custody of stakeAsset tokens for a given Pool and earns revenue from interest.\ninterface IStakeLocker is IStakeLockerFDT {\n\n /**\n @dev Emits an event indicating that the Stake Locker is now open to the public.\n */\n event StakeLockerOpened();\n\n /**\n @dev Emits an event indicating some Balance was updated.\n @param staker The address of a Staker.\n @param token The address of the token for which the balance of `staker` changed.\n @param balance The new balance for `staker`.\n */\n event BalanceUpdated(address indexed staker, address indexed token, uint256 balance);\n\n /**\n @dev Emits an event indicating that the ability of `staker` to stake before the locker is open to the public, has changed.\n @param staker The address of some account.\n @param status Whether `staker` can stake before the locker is open to the public.\n */\n event AllowListUpdated(address indexed staker, bool status);\n\n /**\n @dev Emits an event indicating a that a Staker's effective stake date has changed.\n @param staker The address of a Staker.\n @param stakeDate The new effective stake date.\n */\n event StakeDateUpdated(address indexed staker, uint256 stakeDate);\n\n /**\n @dev Emits an event indicating that the stake lockup period has changed.\n @param lockupPeriod The new stake lockup period.\n */\n event LockupPeriodUpdated(uint256 lockupPeriod);\n\n /**\n @dev Emits an event indicating that the cooldown timestamp for a staker has changed.\n @param staker The address of a Staker.\n @param cooldown The new cooldown timestamp for `staker`.\n */\n event Cooldown(address indexed staker, uint256 cooldown);\n\n /**\n @dev Emits an event indicating `staker` has added `amount` to the total they have staked.\n @param staker The address of a Staker.\n @param amount The additional amount staked.\n */\n event Stake(address indexed staker, uint256 amount);\n\n /**\n @dev Emits an event indicating `staker` has removed `amount` from the total they have staked.\n @param staker The address of a Staker.\n @param amount The amount unstaked.\n */\n event Unstake(address indexed staker, uint256 amount);\n\n /**\n @dev Emits an event indicating that a Custodian transferred some StakeLockerFDTs for purposes of custody.\n @param custodian The address of the Custodian initiating the transfer.\n @param from The account that owns the StakeLockerFDTs.\n @param to The address of a Custodian taking custody of the amount.\n @param amount The amount of StakeLockerFDTs being re-custodied.\n */\n event CustodyTransfer(address indexed custodian, address indexed from, address indexed to, uint256 amount);\n\n /**\n @dev Emits an event indicating that the amount being custodied by a Custodian, on behalf of a Staker, has changed.\n @param staker The address of a Staker.\n @param custodian The address of a Custodian.\n @param oldAllowance The old amount of StakeLockerFDTs `custodian` had custodied on behalf of `staker`.\n @param newAllowance The new amount of StakeLockerFDTs `custodian` has custodied on behalf of `staker`.\n */\n event CustodyAllowanceChanged(address indexed staker, address indexed custodian, uint256 oldAllowance, uint256 newAllowance);\n\n /**\n @dev Emits an event indicating that the total amount of StakeLockerFDTs custodied, on behalf of a Staker, by all custodians, has changed.\n @param staker The address of a Staker.\n @param newTotalAllowance The total amount of StakeLockerFDTs custodied, on behalf of `staker`, by all custodians.\n */\n event TotalCustodyAllowanceUpdated(address indexed staker, uint256 newTotalAllowance);\n\n /**\n @dev The asset deposited by Stakers into this contract, for liquidation during defaults.\n */\n function stakeAsset() external view returns (IERC20);\n\n /**\n @dev The Liquidity Asset for the Pool as well as the dividend token for StakeLockerFDT interest.\n */\n function liquidityAsset() external view returns (address);\n\n /**\n @dev The parent Pool.\n */\n function pool() external view returns (address);\n\n /**\n @dev The number of seconds for which unstaking is not allowed.\n */\n function lockupPeriod() external view returns (uint256);\n\n /**\n @param account The address of a Staker.\n @return The effective stake date of `account`.\n */\n function stakeDate(address account) external returns (uint256);\n\n /**\n @param account The address of a Staker.\n @return The timestamp of when `account` called `cooldown()`.\n */\n function unstakeCooldown(address account) external view returns (uint256);\n\n /**\n @param account The address of a Staker.\n @return Whether `account` is allowed.\n */\n function allowed(address account) external view returns (bool);\n\n /**\n @param account The address of an account.\n @param custodian The address of a custodian.\n @return The amount of StakeLockerFDTs of `account` that are \"locked\" at `custodian`.\n */\n function custodyAllowance(address account, address custodian) external view returns (uint256);\n\n /**\n @param account The address of an account.\n @return The total amount of StakeLockerFDTs that are \"locked\" for a given account, cannot be greater than balance.\n */\n function totalCustodyAllowance(address account) external view returns (uint256);\n\n function openToPublic() external view returns (bool);\n\n /**\n @dev Updates Staker status on the allowlist. \n @dev Only the Pool Delegate can call this function. \n @dev It emits an `AllowListUpdated` event. \n @param staker The address of the Staker to set status for.\n @param status The status of the Staker on allowlist.\n */\n function setAllowlist(address staker, bool status) external;\n\n /**\n @dev Sets the StakeLocker as open to the public. \n @dev Only the Pool Delegate can call this function. \n @dev It emits a `StakeLockerOpened` event. \n */\n function openStakeLockerToPublic() external;\n\n /**\n @dev Sets the lockup period. \n @dev Only the Pool Delegate can call this function. \n @dev It emits a `LockupPeriodUpdated` event. \n @param newLockupPeriod New lockup period used to restrict unstaking.\n */\n function setLockupPeriod(uint256 newLockupPeriod) external;\n\n /**\n @dev Transfers an amount of Stake Asset to a destination account. \n @dev Only the Pool can call this function. \n @param dst The destination to transfer Stake Asset to.\n @param amt The amount of Stake Asset to transfer.\n */\n function pull(address dst, uint256 amt) external;\n\n /**\n @dev Updates loss accounting for StakeLockerFDTs after BPTs have been burned. \n @dev Only the Pool can call this function. \n @param bptsBurned The amount of BPTs that have been burned.\n */\n function updateLosses(uint256 bptsBurned) external;\n\n /**\n @dev Handles a Staker's depositing of an amount of Stake Asset, minting them StakeLockerFDTs. \n @dev It emits a `StakeDateUpdated` event. \n @dev It emits a `Stake` event. \n @dev It emits a `Cooldown` event. \n @dev It emits a `BalanceUpdated` event. \n @param amt The amount of Stake Asset (BPTs) to deposit.\n */\n function stake(uint256 amt) external;\n\n /**\n @dev Activates the cooldown period to unstake. \n @dev It can't be called if the account is not staking. \n @dev It emits a `Cooldown` event. \n */\n function intendToUnstake() external;\n\n /**\n @dev Cancels an initiated unstake by resetting the calling account's unstake cooldown. \n @dev It emits a `Cooldown` event. \n */\n function cancelUnstake() external;\n\n /**\n @dev Handles a Staker's withdrawing of an amount of Stake Asset, minus any losses. \n @dev It also claims interest and burns StakeLockerFDTs for the calling account. \n @dev It emits an `Unstake` event. \n @dev It emits a `BalanceUpdated` event. \n @param amt The amount of Stake Asset (BPTs) to withdraw.\n */\n function unstake(uint256 amt) external;\n\n /**\n @dev Withdraws all claimable interest earned from the StakeLocker for an account. \n @dev It emits a `BalanceUpdated` event if there are withdrawable funds. \n */\n function withdrawFunds() external override; \n\n /**\n @dev Increases the custody allowance for a given Custodian corresponding to the account (`msg.sender`).\n @dev It emits a `CustodyAllowanceChanged` event.\n @dev It emits a `TotalCustodyAllowanceUpdated` event.\n @param custodian The address which will act as Custodian of a given amount for an account.\n @param amount The number of additional FDTs to be custodied by the Custodian.\n */\n function increaseCustodyAllowance(address custodian, uint256 amount) external;\n\n /**\n @dev Transfers custodied StakeLockerFDTs back to the account. \n @dev `from` and `to` should always be equal in this implementation. \n @dev This means that the Custodian can only decrease their own allowance and unlock funds for the original owner. \n @dev It emits a `CustodyTransfer` event. \n @dev It emits a `CustodyAllowanceChanged` event. \n @dev It emits a `TotalCustodyAllowanceUpdated` event. \n @param from The address which holds the StakeLockerFDTs.\n @param to The address which will be the new owner of the amount of StakeLockerFDTs.\n @param amount The mount of StakeLockerFDTs transferred.\n */\n function transferByCustodian(address from, address to, uint256 amount) external;\n\n /**\n @dev Triggers paused state. \n @dev Halts functionality for certain functions. \n @dev Only the Pool Delegate or a Pool Admin can call this function. \n */\n function pause() external;\n\n /**\n @dev Triggers unpaused state. \n @dev Restores functionality for certain functions. \n @dev Only the Pool Delegate or a Pool Admin can call this function.\n */\n function unpause() external;\n\n /**\n @dev Returns if the unstake cooldown period has passed for `msg.sender` and if they are in the unstake window.\n */\n function isUnstakeAllowed(address from) external view returns (bool);\n\n /**\n @dev Returns if an account is allowed to receive a transfer. \n @dev This is only possible if they have zero cooldown or they are past their unstake window. \n */\n function isReceiveAllowed(uint256 _unstakeCooldown) external view returns (bool);\n\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers"
],
"": [
"ast"
]
}
}
}
},
"output": {
"contracts": {
"contracts/core/stake-locker/v1/interfaces/IStakeLocker.sol": {
"IBasicFDT": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fundsDistributed",
"type": "uint256"
}
],
"name": "FundsDistributed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fundsWithdrawn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "totalWithdrawn",
"type": "uint256"
}
],
"name": "FundsWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"name": "PointsCorrectionUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "PointsPerShareUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "accumulativeFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateFundsReceived",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "withdrawFunds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "withdrawableFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "withdrawnFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"accumulativeFundsOf(address)": "4e97415f",
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"updateFundsReceived()": "46c162de",
"withdrawFunds()": "24600fc3",
"withdrawableFundsOf(address)": "443bb293",
"withdrawnFundsOf(address)": "0041c52c"
}
}
},
"IERC20": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
}
},
"IExtendedFDT": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fundsDistributed",
"type": "uint256"
}
],
"name": "FundsDistributed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fundsWithdrawn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "totalWithdrawn",
"type": "uint256"
}
],
"name": "FundsWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"name": "LossesCorrectionUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "LossesDistributed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "LossesPerShareUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "LossesRecognized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"name": "PointsCorrectionUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "PointsPerShareUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "accumulativeFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "accumulativeLossesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "recognizableLossesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "recognizedLossesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateFundsReceived",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateLossesReceived",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "withdrawFunds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "withdrawableFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "withdrawnFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"accumulativeFundsOf(address)": "4e97415f",
"accumulativeLossesOf(address)": "40bde098",
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"recognizableLossesOf(address)": "66967791",
"recognizedLossesOf(address)": "aed4966a",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"updateFundsReceived()": "46c162de",
"updateLossesReceived()": "cc0fef02",
"withdrawFunds()": "24600fc3",
"withdrawableFundsOf(address)": "443bb293",
"withdrawnFundsOf(address)": "0041c52c"
}
}
},
"IStakeLocker": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "status",
"type": "bool"
}
],
"name": "AllowListUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"name": "BalanceUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "cooldown",
"type": "uint256"
}
],
"name": "Cooldown",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "custodian",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "oldAllowance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newAllowance",
"type": "uint256"
}
],
"name": "CustodyAllowanceChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "custodian",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "CustodyTransfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fundsDistributed",
"type": "uint256"
}
],
"name": "FundsDistributed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fundsWithdrawn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "totalWithdrawn",
"type": "uint256"
}
],
"name": "FundsWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "lockupPeriod",
"type": "uint256"
}
],
"name": "LockupPeriodUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"name": "LossesCorrectionUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "LossesDistributed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "LossesPerShareUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "LossesRecognized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"name": "PointsCorrectionUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "PointsPerShareUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Stake",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stakeDate",
"type": "uint256"
}
],
"name": "StakeDateUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "StakeLockerOpened",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newTotalAllowance",
"type": "uint256"
}
],
"name": "TotalCustodyAllowanceUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Unstake",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "accumulativeFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "accumulativeLossesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "allowed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "bptLosses",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cancelUnstake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "address",
"name": "custodian",
"type": "address"
}
],
"name": "custodyAllowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fundsToken",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fundsTokenBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "custodian",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "increaseCustodyAllowance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "intendToUnstake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_unstakeCooldown",
"type": "uint256"
}
],
"name": "isReceiveAllowed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
}
],
"name": "isUnstakeAllowed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "liquidityAsset",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lockupPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lossesBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "openStakeLockerToPublic",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "openToPublic",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "pool",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "pull",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "recognizableLossesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "recognizedLossesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"internalType": "bool",
"name": "status",
"type": "bool"
}
],
"name": "setAllowlist",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newLockupPeriod",
"type": "uint256"
}
],
"name": "setLockupPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "stake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stakeAsset",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "stakeDate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "totalCustodyAllowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferByCustodian",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "unstake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "unstakeCooldown",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "updateFundsReceived",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "bptsBurned",
"type": "uint256"
}
],
"name": "updateLosses",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateLossesReceived",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "withdrawFunds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "withdrawableFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "withdrawnFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"accumulativeFundsOf(address)": "4e97415f",
"accumulativeLossesOf(address)": "40bde098",
"allowance(address,address)": "dd62ed3e",
"allowed(address)": "d63a8e11",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"bptLosses()": "aedc78c3",
"cancelUnstake()": "4ab17969",
"custodyAllowance(address,address)": "c965b548",
"fundsToken()": "63f04b15",
"fundsTokenBalance()": "a9691f3f",
"increaseCustodyAllowance(address,uint256)": "27f91856",
"intendToUnstake()": "8a10555c",
"isReceiveAllowed(uint256)": "fab11078",
"isUnstakeAllowed(address)": "86bf1da3",
"liquidityAsset()": "209b2bca",
"lockupPeriod()": "ee947a7c",
"lossesBalance()": "fec984e3",
"openStakeLockerToPublic()": "0e754e86",
"openToPublic()": "1831ccf2",
"pause()": "8456cb59",
"pool()": "16f0115b",
"pull(address,uint256)": "f2d5d56b",
"recognizableLossesOf(address)": "66967791",
"recognizedLossesOf(address)": "aed4966a",
"setAllowlist(address,bool)": "b12527f8",
"setLockupPeriod(uint256)": "c771c390",
"stake(uint256)": "a694fc3a",
"stakeAsset()": "80cd916d",
"stakeDate(address)": "5190bbaf",
"totalCustodyAllowance(address)": "af6d5571",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferByCustodian(address,address,uint256)": "2ac04ac8",
"transferFrom(address,address,uint256)": "23b872dd",
"unpause()": "3f4ba83a",
"unstake(uint256)": "2e17de78",
"unstakeCooldown(address)": "ff887130",
"updateFundsReceived()": "46c162de",
"updateLosses(uint256)": "bcd01be7",
"updateLossesReceived()": "cc0fef02",
"withdrawFunds()": "24600fc3",
"withdrawableFundsOf(address)": "443bb293",
"withdrawnFundsOf(address)": "0041c52c"
}
}
},
"IStakeLockerFDT": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fundsDistributed",
"type": "uint256"
}
],
"name": "FundsDistributed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fundsWithdrawn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "totalWithdrawn",
"type": "uint256"
}
],
"name": "FundsWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"name": "LossesCorrectionUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "LossesDistributed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "LossesPerShareUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "LossesRecognized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"name": "PointsCorrectionUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "PointsPerShareUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "accumulativeFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "accumulativeLossesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "bptLosses",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fundsToken",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fundsTokenBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lossesBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "recognizableLossesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "recognizedLossesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateFundsReceived",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateLossesReceived",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "withdrawFunds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "withdrawableFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "withdrawnFundsOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"accumulativeFundsOf(address)": "4e97415f",
"accumulativeLossesOf(address)": "40bde098",
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"bptLosses()": "aedc78c3",
"fundsToken()": "63f04b15",
"fundsTokenBalance()": "a9691f3f",
"lossesBalance()": "fec984e3",
"recognizableLossesOf(address)": "66967791",
"recognizedLossesOf(address)": "aed4966a",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"updateFundsReceived()": "46c162de",
"updateLossesReceived()": "cc0fef02",
"withdrawFunds()": "24600fc3",
"withdrawableFundsOf(address)": "443bb293",
"withdrawnFundsOf(address)": "0041c52c"
}
}
}
}
},
"sources": {
"contracts/core/stake-locker/v1/interfaces/IStakeLocker.sol": {
"ast": {
"absolutePath": "contracts/core/stake-locker/v1/interfaces/IStakeLocker.sol",
"exportedSymbols": {
"IBasicFDT": [
141
],
"IERC20": [
77
],
"IExtendedFDT": [
201
],
"IStakeLocker": [
484
],
"IStakeLockerFDT": [
229
]
},
"id": 485,
"license": "AGPL-3.0-or-later",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"=",
"0.6",
".11",
">=",
"0.6",
".0",
"<",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "135:39:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 2,
"nodeType": "StructuredDocumentation",
"src": "282:70:0",
"text": " @dev Interface of the ERC20 standard as defined in the EIP."
},
"fullyImplemented": false,
"id": 77,
"linearizedBaseContracts": [
77
],
"name": "IERC20",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": {
"id": 3,
"nodeType": "StructuredDocumentation",
"src": "376:66:0",
"text": " @dev Returns the amount of tokens in existence."
},
"functionSelector": "18160ddd",
"id": 8,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "totalSupply",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 4,
"nodeType": "ParameterList",
"parameters": [],
"src": "467:2:0"
},
"returnParameters": {
"id": 7,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 6,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 8,
"src": "493:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 5,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "493:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "492:9:0"
},
"scope": 77,
"src": "447:55:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 9,
"nodeType": "StructuredDocumentation",
"src": "508:72:0",
"text": " @dev Returns the amount of tokens owned by `account`."
},
"functionSelector": "70a08231",
"id": 16,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 12,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 16,
"src": "604:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "604:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "603:17:0"
},
"returnParameters": {
"id": 15,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 14,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 16,
"src": "644:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 13,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "644:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "643:9:0"
},
"scope": 77,
"src": "585:68:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 17,
"nodeType": "StructuredDocumentation",
"src": "659:209:0",
"text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
},
"functionSelector": "a9059cbb",
"id": 26,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "transfer",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 22,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 19,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 26,
"src": "891:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 18,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "891:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 26,
"src": "910:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 20,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "910:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "890:35:0"
},
"returnParameters": {
"id": 25,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 24,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 26,
"src": "944:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 23,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "944:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "943:6:0"
},
"scope": 77,
"src": "873:77:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 27,
"nodeType": "StructuredDocumentation",
"src": "956:264:0",
"text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
},
"functionSelector": "dd62ed3e",
"id": 36,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "allowance",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 32,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 29,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 36,
"src": "1244:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 28,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1244:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 31,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 36,
"src": "1259:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1259:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1243:32:0"
},
"returnParameters": {
"id": 35,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 34,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 36,
"src": "1299:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 33,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1299:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1298:9:0"
},
"scope": 77,
"src": "1225:83:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 37,
"nodeType": "StructuredDocumentation",
"src": "1314:642:0",
"text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
},
"functionSelector": "095ea7b3",
"id": 46,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "approve",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 42,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 39,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 46,
"src": "1978:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 38,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1978:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 41,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 46,
"src": "1995:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 40,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1995:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1977:33:0"
},
"returnParameters": {
"id": 45,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 46,
"src": "2029:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 43,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2029:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2028:6:0"
},
"scope": 77,
"src": "1961:74:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 47,
"nodeType": "StructuredDocumentation",
"src": "2041:296:0",
"text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
},
"functionSelector": "23b872dd",
"id": 58,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "transferFrom",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 54,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49,
"mutability": "mutable",
"name": "sender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 58,
"src": "2364:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 48,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2364:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 51,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 58,
"src": "2380:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 50,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2380:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 53,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 58,
"src": "2399:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 52,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2399:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2363:51:0"
},
"returnParameters": {
"id": 57,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 56,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 58,
"src": "2433:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 55,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2433:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2432:6:0"
},
"scope": 77,
"src": "2342:97:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"anonymous": false,
"documentation": {
"id": 59,
"nodeType": "StructuredDocumentation",
"src": "2445:158:0",
"text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
},
"id": 67,
"name": "Transfer",
"nodeType": "EventDefinition",
"parameters": {
"id": 66,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 61,
"indexed": true,
"mutability": "mutable",
"name": "from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 67,
"src": "2623:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 60,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2623:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 63,
"indexed": true,
"mutability": "mutable",
"name": "to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 67,
"src": "2645:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 62,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2645:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 65,
"indexed": false,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 67,
"src": "2665:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 64,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2665:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2622:57:0"
},
"src": "2608:72:0"
},
{
"anonymous": false,
"documentation": {
"id": 68,
"nodeType": "StructuredDocumentation",
"src": "2686:148:0",
"text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
},
"id": 76,
"name": "Approval",
"nodeType": "EventDefinition",
"parameters": {
"id": 75,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70,
"indexed": true,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 76,
"src": "2854:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2854:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 72,
"indexed": true,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 76,
"src": "2877:23:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2877:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 74,
"indexed": false,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 76,
"src": "2902:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 73,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2902:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2853:63:0"
},
"src": "2839:78:0"
}
],
"scope": 485,
"src": "353:2566:0"
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 79,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 77,
"src": "3252:6:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$77",
"typeString": "contract IERC20"
}
},
"id": 80,
"nodeType": "InheritanceSpecifier",
"src": "3252:6:0"
}
],
"contractDependencies": [
77
],
"contractKind": "interface",
"documentation": {
"id": 78,
"nodeType": "StructuredDocumentation",
"src": "3135:94:0",
"text": "@title BasicFDT implements the basic level FDT functionality for accounting for revenues."
},
"fullyImplemented": false,
"id": 141,
"linearizedBaseContracts": [
141,
77
],
"name": "IBasicFDT",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"documentation": {
"id": 81,
"nodeType": "StructuredDocumentation",
"src": "3266:236:0",
"text": "@dev This event emits when new funds are distributed.\n@param by The address of the sender that distributed funds.\n@param fundsDistributed The amount of funds received for distribution."
},
"id": 87,
"name": "FundsDistributed",
"nodeType": "EventDefinition",
"parameters": {
"id": 86,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 83,
"indexed": true,
"mutability": "mutable",
"name": "by",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 87,
"src": "3530:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 82,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3530:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 85,
"indexed": false,
"mutability": "mutable",
"name": "fundsDistributed",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 87,
"src": "3550:24:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 84,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3550:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3529:46:0"
},
"src": "3507:69:0"
},
{
"anonymous": false,
"documentation": {
"id": 88,
"nodeType": "StructuredDocumentation",
"src": "3582:315:0",
"text": "@dev This event emits when distributed funds are withdrawn by a token holder.\n@param by The address of the receiver of funds.\n@param fundsWithdrawn The amount of funds that were withdrawn.\n@param totalWithdrawn The total amount of funds that were withdrawn."
},
"id": 96,
"name": "FundsWithdrawn",
"nodeType": "EventDefinition",
"parameters": {
"id": 95,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 90,
"indexed": true,
"mutability": "mutable",
"name": "by",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 96,
"src": "3923:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 89,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3923:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 92,
"indexed": false,
"mutability": "mutable",
"name": "fundsWithdrawn",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 96,
"src": "3943:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 91,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3943:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 94,
"indexed": false,
"mutability": "mutable",
"name": "totalWithdrawn",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 96,
"src": "3967:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 93,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3967:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3922:68:0"
},
"src": "3902:89:0"
},
{
"anonymous": false,
"documentation": {
"id": 97,
"nodeType": "StructuredDocumentation",
"src": "3997:179:0",
"text": "@dev This event emits when the internal `pointsPerShare` is updated.\n@dev First, and only, parameter is the new value of the internal `pointsPerShare`."
},
"id": 101,
"name": "PointsPerShareUpdated",
"nodeType": "EventDefinition",
"parameters": {
"id": 100,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 99,
"indexed": false,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 101,
"src": "4209:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 98,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4209:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4208:9:0"
},
"src": "4181:37:0"
},
{
"anonymous": false,
"documentation": {
"id": 102,
"nodeType": "StructuredDocumentation",
"src": "4224:235:0",
"text": "@dev This event emits when an account's `pointsCorrection` is updated.\n@dev First parameter is the address of some account.\n@dev Second parameter is the new value of the account's `pointsCorrection`."
},
"id": 108,
"name": "PointsCorrectionUpdated",
"nodeType": "EventDefinition",
"parameters": {
"id": 107,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 104,
"indexed": true,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 108,
"src": "4494:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 103,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4494:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 106,
"indexed": false,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 108,
"src": "4511:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"typeName": {
"id": 105,
"name": "int256",
"nodeType": "ElementaryTypeName",
"src": "4511:6:0",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4493:25:0"
},
"src": "4464:55:0"
},
{
"body": null,
"documentation": {
"id": 109,
"nodeType": "StructuredDocumentation",
"src": "4525:201:0",
"text": "@dev Returns the amount of funds that an account can withdraw.\n@param _owner The address of some FDT holder.\n@return The amount funds that `_owner` can withdraw."
},
"functionSelector": "443bb293",
"id": 116,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "withdrawableFundsOf",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 112,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 111,
"mutability": "mutable",
"name": "_owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 116,
"src": "4760:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 110,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4760:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4759:16:0"
},
"returnParameters": {
"id": 115,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 114,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 116,
"src": "4799:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 113,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4799:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4798:9:0"
},
"scope": 141,
"src": "4731:77:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 117,
"nodeType": "StructuredDocumentation",
"src": "4814:82:0",
"text": "@dev Withdraws all available funds for the calling FDT holder."
},
"functionSelector": "24600fc3",
"id": 120,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "withdrawFunds",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 118,
"nodeType": "ParameterList",
"parameters": [],
"src": "4923:2:0"
},
"returnParameters": {
"id": 119,
"nodeType": "ParameterList",
"parameters": [],
"src": "4934:0:0"
},
"scope": 141,
"src": "4901:34:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 121,
"nodeType": "StructuredDocumentation",
"src": "4941:205:0",
"text": "@dev Returns the amount of funds that an account has withdrawn.\n@param _owner The address of a token holder.\n@return The amount of funds that `_owner` has withdrawn."
},
"functionSelector": "0041c52c",
"id": 128,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "withdrawnFundsOf",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 124,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 123,
"mutability": "mutable",
"name": "_owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 128,
"src": "5177:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 122,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5177:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5176:16:0"
},
"returnParameters": {
"id": 127,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 126,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 128,
"src": "5216:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 125,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5216:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5215:9:0"
},
"scope": 141,
"src": "5151:74:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 129,
"nodeType": "StructuredDocumentation",
"src": "5231:422:0",
"text": "@dev Returns the amount of funds that an account has earned in total. \n@dev accumulativeFundsOf(_owner) = withdrawableFundsOf(_owner) + withdrawnFundsOf(_owner) \n= (pointsPerShare * balanceOf(_owner) + pointsCorrection[_owner]) / pointsMultiplier \n@param _owner The address of a token holder.\n@return The amount of funds that `_owner` has earned in total."
},
"functionSelector": "4e97415f",
"id": 136,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "accumulativeFundsOf",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 132,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 131,
"mutability": "mutable",
"name": "_owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 136,
"src": "5687:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 130,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5687:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5686:16:0"
},
"returnParameters": {
"id": 135,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 134,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 136,
"src": "5726:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 133,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5726:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5725:9:0"
},
"scope": 141,
"src": "5658:77:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 137,
"nodeType": "StructuredDocumentation",
"src": "5741:368:0",
"text": "@dev Registers a payment of funds in tokens. \n@dev May be called directly after a deposit is made. \n@dev Calls _updateFundsTokenBalance(), whereby the contract computes the delta of the new and previous \n`fundsToken` balance and increments the total received funds (cumulative), by delta, by calling _distributeFunds()."
},
"functionSelector": "46c162de",
"id": 140,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "updateFundsReceived",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 138,
"nodeType": "ParameterList",
"parameters": [],
"src": "6142:2:0"
},
"returnParameters": {
"id": 139,
"nodeType": "ParameterList",
"parameters": [],
"src": "6153:0:0"
},
"scope": 141,
"src": "6114:40:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 485,
"src": "3229:2928:0"
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 143,
"name": "IBasicFDT",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 141,
"src": "6429:9:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBasicFDT_$141",
"typeString": "contract IBasicFDT"
}
},
"id": 144,
"nodeType": "InheritanceSpecifier",
"src": "6429:9:0"
}
],
"contractDependencies": [
77,
141
],
"contractKind": "interface",
"documentation": {
"id": 142,
"nodeType": "StructuredDocumentation",
"src": "6320:83:0",
"text": "@title ExtendedFDT implements the FDT functionality for accounting for losses."
},
"fullyImplemented": false,
"id": 201,
"linearizedBaseContracts": [
201,
141,
77
],
"name": "IExtendedFDT",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"documentation": {
"id": 145,
"nodeType": "StructuredDocumentation",
"src": "6446:179:0",
"text": "@dev This event emits when the internal `lossesPerShare` is updated.\n@dev First, and only, parameter is the new value of the internal `lossesPerShare`."
},
"id": 149,
"name": "LossesPerShareUpdated",
"nodeType": "EventDefinition",
"parameters": {
"id": 148,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 147,
"indexed": false,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 149,
"src": "6658:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 146,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6658:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6657:9:0"
},
"src": "6630:37:0"
},
{
"anonymous": false,
"documentation": {
"id": 150,
"nodeType": "StructuredDocumentation",
"src": "6673:235:0",
"text": "@dev This event emits when an account's `lossesCorrection` is updated.\n@dev First parameter is the address of some account.\n@dev Second parameter is the new value of the account's `lossesCorrection`."
},
"id": 156,
"name": "LossesCorrectionUpdated",
"nodeType": "EventDefinition",
"parameters": {
"id": 155,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 152,
"indexed": true,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 156,
"src": "6943:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 151,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6943:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 154,
"indexed": false,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 156,
"src": "6960:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"typeName": {
"id": 153,
"name": "int256",
"nodeType": "ElementaryTypeName",
"src": "6960:6:0",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6942:25:0"
},
"src": "6913:55:0"
},
{
"anonymous": false,
"documentation": {
"id": 157,
"nodeType": "StructuredDocumentation",
"src": "6974:243:0",
"text": "@dev This event emits when new losses are distributed.\n@dev First parameter is the address of the account that has distributed losses.\n@dev Second parameter is the amount of losses received for distribution."
},
"id": 163,
"name": "LossesDistributed",
"nodeType": "EventDefinition",
"parameters": {
"id": 162,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 159,
"indexed": true,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 163,
"src": "7246:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 158,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7246:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 161,
"indexed": false,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 163,
"src": "7263:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 160,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7263:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7245:26:0"
},
"src": "7222:50:0"
},
{
"anonymous": false,
"documentation": {
"id": 164,
"nodeType": "StructuredDocumentation",
"src": "7278:328:0",
"text": "@dev This event emits when distributed losses are recognized by a token holder.\n@dev First parameter is the address of the receiver of losses.\n@dev Second parameter is the amount of losses that were recognized.\n@dev Third parameter is the total amount of losses that are recognized."
},
"id": 172,
"name": "LossesRecognized",
"nodeType": "EventDefinition",
"parameters": {
"id": 171,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 166,
"indexed": true,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 172,
"src": "7634:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 165,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7634:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 168,
"indexed": false,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 172,
"src": "7651:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 167,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7651:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 170,
"indexed": false,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 172,
"src": "7660:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 169,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7660:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7633:35:0"
},
"src": "7611:58:0"
},
{
"body": null,
"documentation": {
"id": 173,
"nodeType": "StructuredDocumentation",
"src": "7675:205:0",
"text": "@dev Returns the amount of losses that an account can withdraw.\n@param _owner The address of a token holder.\n@return The amount of losses that `_owner` can withdraw."
},
"functionSelector": "66967791",
"id": 180,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "recognizableLossesOf",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 176,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 175,
"mutability": "mutable",
"name": "_owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 180,
"src": "7915:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 174,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7915:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7914:16:0"
},
"returnParameters": {
"id": 179,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 178,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 180,
"src": "7954:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 177,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7954:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7953:9:0"
},
"scope": 201,
"src": "7885:78:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 181,
"nodeType": "StructuredDocumentation",
"src": "7969:209:0",
"text": "@dev Returns the amount of losses that an account has recognized.\n@param _owner The address of a token holder.\n@return The amount of losses that `_owner` has recognized."
},
"functionSelector": "aed4966a",
"id": 188,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "recognizedLossesOf",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 184,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 183,
"mutability": "mutable",
"name": "_owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 188,
"src": "8211:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 182,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8211:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8210:16:0"
},
"returnParameters": {
"id": 187,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 186,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 188,
"src": "8250:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 185,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8250:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8249:9:0"
},
"scope": 201,
"src": "8183:76:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 189,
"nodeType": "StructuredDocumentation",
"src": "8265:428:0",
"text": "@dev Returns the amount of losses that an account has earned in total. \n@dev accumulativeLossesOf(_owner) = recognizableLossesOf(_owner) + recognizedLossesOf(_owner) \n= (lossesPerShare * balanceOf(_owner) + lossesCorrection[_owner]) / pointsMultiplier \n@param _owner The address of a token holder.\n@return The amount of losses that `_owner` has earned in total."
},
"functionSelector": "40bde098",
"id": 196,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "accumulativeLossesOf",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 192,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 191,
"mutability": "mutable",
"name": "_owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 196,
"src": "8728:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 190,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8728:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8727:16:0"
},
"returnParameters": {
"id": 195,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 194,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 196,
"src": "8767:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 193,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8767:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8766:9:0"
},
"scope": 201,
"src": "8698:78:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 197,
"nodeType": "StructuredDocumentation",
"src": "8782:354:0",
"text": "@dev Registers a loss. \n@dev May be called directly after a shortfall after BPT burning occurs. \n@dev Calls _updateLossesTokenBalance(), whereby the contract computes the delta of the new and previous \nlosses balance and increments the total losses (cumulative), by delta, by calling _distributeLosses(). "
},
"functionSelector": "cc0fef02",
"id": 200,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "updateLossesReceived",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 198,
"nodeType": "ParameterList",
"parameters": [],
"src": "9170:2:0"
},
"returnParameters": {
"id": 199,
"nodeType": "ParameterList",
"parameters": [],
"src": "9181:0:0"
},
"scope": 201,
"src": "9141:41:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 485,
"src": "6403:2782:0"
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 203,
"name": "IExtendedFDT",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 201,
"src": "9618:12:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IExtendedFDT_$201",
"typeString": "contract IExtendedFDT"
}
},
"id": 204,
"nodeType": "InheritanceSpecifier",
"src": "9618:12:0"
}
],
"contractDependencies": [
77,
141,
201
],
"contractKind": "interface",
"documentation": {
"id": 202,
"nodeType": "StructuredDocumentation",
"src": "9499:90:0",
"text": "@title StakeLockerFDT inherits ExtendedFDT and accounts for gains/losses for Stakers."
},
"fullyImplemented": false,
"id": 229,
"linearizedBaseContracts": [
229,
201,
141,
77
],
"name": "IStakeLockerFDT",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": {
"id": 205,
"nodeType": "StructuredDocumentation",
"src": "9638:50:0",
"text": "@dev The ERC-2222 Funds Token."
},
"functionSelector": "63f04b15",
"id": 210,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "fundsToken",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 206,
"nodeType": "ParameterList",
"parameters": [],
"src": "9712:2:0"
},
"returnParameters": {
"id": 209,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 208,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 210,
"src": "9738:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$77",
"typeString": "contract IERC20"
},
"typeName": {
"contractScope": null,
"id": 207,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 77,
"src": "9738:6:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$77",
"typeString": "contract IERC20"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9737:8:0"
},
"scope": 229,
"src": "9693:53:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 211,
"nodeType": "StructuredDocumentation",
"src": "9752:60:0",
"text": "@dev The sum of all unrecognized losses."
},
"functionSelector": "aedc78c3",
"id": 216,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "bptLosses",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 212,
"nodeType": "ParameterList",
"parameters": [],
"src": "9835:2:0"
},
"returnParameters": {
"id": 215,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 214,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 216,
"src": "9861:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 213,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9861:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9860:9:0"
},
"scope": 229,
"src": "9817:53:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 217,
"nodeType": "StructuredDocumentation",
"src": "9876:89:0",
"text": "@dev The amount of losses present and accounted for in this contract."
},
"functionSelector": "fec984e3",
"id": 222,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "lossesBalance",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 218,
"nodeType": "ParameterList",
"parameters": [],
"src": "9992:2:0"
},
"returnParameters": {
"id": 221,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 220,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 222,
"src": "10018:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 219,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10018:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10017:9:0"
},
"scope": 229,
"src": "9970:57:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 223,
"nodeType": "StructuredDocumentation",
"src": "10033:123:0",
"text": "@dev The amount of `fundsToken` (Liquidity Asset) currently present and accounted for in this contract."
},
"functionSelector": "a9691f3f",
"id": 228,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "fundsTokenBalance",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 224,
"nodeType": "ParameterList",
"parameters": [],
"src": "10187:2:0"
},
"returnParameters": {
"id": 227,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 226,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 228,
"src": "10213:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 225,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10213:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10212:9:0"
},
"scope": 229,
"src": "10161:61:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 485,
"src": "9589:636:0"
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 231,
"name": "IStakeLockerFDT",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 229,
"src": "10630:15:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakeLockerFDT_$229",
"typeString": "contract IStakeLockerFDT"
}
},
"id": 232,
"nodeType": "InheritanceSpecifier",
"src": "10630:15:0"
}
],
"contractDependencies": [
77,
141,
201,
229
],
"contractKind": "interface",
"documentation": {
"id": 230,
"nodeType": "StructuredDocumentation",
"src": "10496:108:0",
"text": "@title StakeLocker holds custody of stakeAsset tokens for a given Pool and earns revenue from interest."
},
"fullyImplemented": false,
"id": 484,
"linearizedBaseContracts": [
484,
229,
201,
141,
77
],
"name": "IStakeLocker",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"documentation": {
"id": 233,
"nodeType": "StructuredDocumentation",
"src": "10653:101:0",
"text": "@dev Emits an event indicating that the Stake Locker is now open to the public."
},
"id": 235,
"name": "StakeLockerOpened",
"nodeType": "EventDefinition",
"parameters": {
"id": 234,
"nodeType": "ParameterList",
"parameters": [],
"src": "10782:2:0"
},
"src": "10759:26:0"
},
{
"anonymous": false,
"documentation": {
"id": 236,
"nodeType": "StructuredDocumentation",
"src": "10791:270:0",
"text": "@dev Emits an event indicating some Balance was updated.\n@param staker The address of a Staker.\n@param token The address of the token for which the balance of `staker` changed.\n@param balance The new balance for `staker`."
},
"id": 244,
"name": "BalanceUpdated",
"nodeType": "EventDefinition",
"parameters": {
"id": 243,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 238,
"indexed": true,
"mutability": "mutable",
"name": "staker",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 244,
"src": "11087:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 237,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11087:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 240,
"indexed": true,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 244,
"src": "11111:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 239,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11111:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 242,
"indexed": false,
"mutability": "mutable",
"name": "balance",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 244,
"src": "11134:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 241,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11134:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11086:64:0"
},
"src": "11066:85:0"
},
{
"anonymous": false,
"documentation": {
"id": 245,
"nodeType": "StructuredDocumentation",
"src": "11157:285:0",
"text": "@dev Emits an event indicating that the ability of `staker` to stake before the locker is open to the public, has changed.\n@param staker The address of some account.\n@param status Whether `staker` can stake before the locker is open to the public."
},
"id": 251,
"name": "AllowListUpdated",
"nodeType": "EventDefinition",
"parameters": {
"id": 250,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 247,
"indexed": true,
"mutability": "mutable",
"name": "staker",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 251,
"src": "11470:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 246,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11470:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 249,
"indexed": false,
"mutability": "mutable",
"name": "status",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 251,
"src": "11494:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 248,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "11494:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11469:37:0"
},
"src": "11447:60:0"
},
{
"anonymous": false,
"documentation": {
"id": 252,
"nodeType": "StructuredDocumentation",
"src": "11513:209:0",
"text": "@dev Emits an event indicating a that a Staker's effective stake date has changed.\n@param staker The address of a Staker.\n@param stakeDate The new effective stake date."
},
"id": 258,
"name": "StakeDateUpdated",
"nodeType": "EventDefinition",
"parameters": {
"id": 257,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 254,
"indexed": true,
"mutability": "mutable",
"name": "staker",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 258,
"src": "11750:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 253,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11750:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 256,
"indexed": false,
"mutability": "mutable",
"name": "stakeDate",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 258,
"src": "11774:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 255,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11774:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11749:43:0"
},
"src": "11727:66:0"
},
{
"anonymous": false,
"documentation": {
"id": 259,
"nodeType": "StructuredDocumentation",
"src": "11799:151:0",
"text": "@dev Emits an event indicating that the stake lockup period has changed.\n@param lockupPeriod The new stake lockup period."
},
"id": 263,
"name": "LockupPeriodUpdated",
"nodeType": "EventDefinition",
"parameters": {
"id": 262,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 261,
"indexed": false,
"mutability": "mutable",
"name": "lockupPeriod",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 263,
"src": "11981:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 260,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11981:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11980:22:0"
},
"src": "11955:48:0"
},
{
"anonymous": false,
"documentation": {
"id": 264,
"nodeType": "StructuredDocumentation",
"src": "12009:220:0",
"text": "@dev Emits an event indicating that the cooldown timestamp for a staker has changed.\n@param staker The address of a Staker.\n@param cooldown The new cooldown timestamp for `staker`."
},
"id": 270,
"name": "Cooldown",
"nodeType": "EventDefinition",
"parameters": {
"id": 269,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 266,
"indexed": true,
"mutability": "mutable",
"name": "staker",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 270,
"src": "12249:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 265,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12249:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 268,
"indexed": false,
"mutability": "mutable",
"name": "cooldown",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 270,
"src": "12273:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 267,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12273:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12248:42:0"
},
"src": "12234:57:0"
},
{
"anonymous": false,
"documentation": {
"id": 271,
"nodeType": "StructuredDocumentation",
"src": "12297:210:0",
"text": "@dev Emits an event indicating `staker` has added `amount` to the total they have staked.\n@param staker The address of a Staker.\n@param amount The additional amount staked."
},
"id": 277,
"name": "Stake",
"nodeType": "EventDefinition",
"parameters": {
"id": 276,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 273,
"indexed": true,
"mutability": "mutable",
"name": "staker",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 277,
"src": "12524:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 272,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12524:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 275,
"indexed": false,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 277,
"src": "12548:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 274,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12548:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12523:40:0"
},
"src": "12512:52:0"
},
{
"anonymous": false,
"documentation": {
"id": 278,
"nodeType": "StructuredDocumentation",
"src": "12570:205:0",
"text": "@dev Emits an event indicating `staker` has removed `amount` from the total they have staked.\n@param staker The address of a Staker.\n@param amount The amount unstaked."
},
"id": 284,
"name": "Unstake",
"nodeType": "EventDefinition",
"parameters": {
"id": 283,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 280,
"indexed": true,
"mutability": "mutable",
"name": "staker",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 284,
"src": "12794:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 279,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12794:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 282,
"indexed": false,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 284,
"src": "12818:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 281,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12818:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12793:40:0"
},
"src": "12780:54:0"
},
{
"anonymous": false,
"documentation": {
"id": 285,
"nodeType": "StructuredDocumentation",
"src": "12840:431:0",
"text": "@dev Emits an event indicating that a Custodian transferred some StakeLockerFDTs for purposes of custody.\n@param custodian The address of the Custodian initiating the transfer.\n@param from The account that owns the StakeLockerFDTs.\n@param to The address of a Custodian taking custody of the amount.\n@param amount The amount of StakeLockerFDTs being re-custodied."
},
"id": 295,
"name": "CustodyTransfer",
"nodeType": "EventDefinition",
"parameters": {
"id": 294,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 287,
"indexed": true,
"mutability": "mutable",
"name": "custodian",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 295,
"src": "13298:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 286,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13298:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 289,
"indexed": true,
"mutability": "mutable",
"name": "from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 295,
"src": "13325:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 288,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13325:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 291,
"indexed": true,
"mutability": "mutable",
"name": "to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 295,
"src": "13347:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 290,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13347:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 293,
"indexed": false,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 295,
"src": "13367:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 292,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13367:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13297:85:0"
},
"src": "13276:107:0"
},
{
"anonymous": false,
"documentation": {
"id": 296,
"nodeType": "StructuredDocumentation",
"src": "13389:467:0",
"text": "@dev Emits an event indicating that the amount being custodied by a Custodian, on behalf of a Staker, has changed.\n@param staker The address of a Staker.\n@param custodian The address of a Custodian.\n@param oldAllowance The old amount of StakeLockerFDTs `custodian` had custodied on behalf of `staker`.\n@param newAllowance The new amount of StakeLockerFDTs `custodian` has custodied on behalf of `staker`."
},
"id": 306,
"name": "CustodyAllowanceChanged",
"nodeType": "EventDefinition",
"parameters": {
"id": 305,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 298,
"indexed": true,
"mutability": "mutable",
"name": "staker",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 306,
"src": "13891:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 297,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13891:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 300,
"indexed": true,
"mutability": "mutable",
"name": "custodian",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 306,
"src": "13915:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 299,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13915:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 302,
"indexed": false,
"mutability": "mutable",
"name": "oldAllowance",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 306,
"src": "13942:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 301,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13942:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 304,
"indexed": false,
"mutability": "mutable",
"name": "newAllowance",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 306,
"src": "13964:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 303,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13964:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13890:95:0"
},
"src": "13861:125:0"
},
{
"anonymous": false,
"documentation": {
"id": 307,
"nodeType": "StructuredDocumentation",
"src": "13992:339:0",
"text": "@dev Emits an event indicating that the total amount of StakeLockerFDTs custodied, on behalf of a Staker, by all custodians, has changed.\n@param staker The address of a Staker.\n@param newTotalAllowance The total amount of StakeLockerFDTs custodied, on behalf of `staker`, by all custodians."
},
"id": 313,
"name": "TotalCustodyAllowanceUpdated",
"nodeType": "EventDefinition",
"parameters": {
"id": 312,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 309,
"indexed": true,
"mutability": "mutable",
"name": "staker",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 313,
"src": "14371:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 308,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14371:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 311,
"indexed": false,
"mutability": "mutable",
"name": "newTotalAllowance",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 313,
"src": "14395:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 310,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14395:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14370:51:0"
},
"src": "14336:86:0"
},
{
"body": null,
"documentation": {
"id": 314,
"nodeType": "StructuredDocumentation",
"src": "14428:108:0",
"text": "@dev The asset deposited by Stakers into this contract, for liquidation during defaults."
},
"functionSelector": "80cd916d",
"id": 319,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "stakeAsset",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 315,
"nodeType": "ParameterList",
"parameters": [],
"src": "14560:2:0"
},
"returnParameters": {
"id": 318,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 317,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 319,
"src": "14586:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$77",
"typeString": "contract IERC20"
},
"typeName": {
"contractScope": null,
"id": 316,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 77,
"src": "14586:6:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$77",
"typeString": "contract IERC20"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14585:8:0"
},
"scope": 484,
"src": "14541:53:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 320,
"nodeType": "StructuredDocumentation",
"src": "14600:116:0",
"text": "@dev The Liquidity Asset for the Pool as well as the dividend token for StakeLockerFDT interest."
},
"functionSelector": "209b2bca",
"id": 325,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "liquidityAsset",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 321,
"nodeType": "ParameterList",
"parameters": [],
"src": "14744:2:0"
},
"returnParameters": {
"id": 324,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 323,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 325,
"src": "14770:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 322,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14770:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14769:9:0"
},
"scope": 484,
"src": "14721:58:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 326,
"nodeType": "StructuredDocumentation",
"src": "14785:41:0",
"text": "@dev The parent Pool."
},
"functionSelector": "16f0115b",
"id": 331,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "pool",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 327,
"nodeType": "ParameterList",
"parameters": [],
"src": "14844:2:0"
},
"returnParameters": {
"id": 330,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 329,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 331,
"src": "14870:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 328,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14870:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14869:9:0"
},
"scope": 484,
"src": "14831:48:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 332,
"nodeType": "StructuredDocumentation",
"src": "14885:82:0",
"text": "@dev The number of seconds for which unstaking is not allowed."
},
"functionSelector": "ee947a7c",
"id": 337,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "lockupPeriod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 333,
"nodeType": "ParameterList",
"parameters": [],
"src": "14993:2:0"
},
"returnParameters": {
"id": 336,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 335,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 337,
"src": "15019:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 334,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15019:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15018:9:0"
},
"scope": 484,
"src": "14972:56:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 338,
"nodeType": "StructuredDocumentation",
"src": "15034:115:0",
"text": "@param account The address of a Staker.\n@return The effective stake date of `account`."
},
"functionSelector": "5190bbaf",
"id": 345,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "stakeDate",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 341,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 340,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 345,
"src": "15173:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 339,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15173:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15172:17:0"
},
"returnParameters": {
"id": 344,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 343,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 345,
"src": "15208:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 342,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15208:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15207:9:0"
},
"scope": 484,
"src": "15154:63:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 346,
"nodeType": "StructuredDocumentation",
"src": "15223:129:0",
"text": "@param account The address of a Staker.\n@return The timestamp of when `account` called `cooldown()`."
},
"functionSelector": "ff887130",
"id": 353,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "unstakeCooldown",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 349,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 348,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 353,
"src": "15382:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 347,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15382:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15381:17:0"
},
"returnParameters": {
"id": 352,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 351,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 353,
"src": "15422:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 350,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15422:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15421:9:0"
},
"scope": 484,
"src": "15357:74:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 354,
"nodeType": "StructuredDocumentation",
"src": "15437:106:0",
"text": "@param account The address of a Staker.\n@return Whether `account` is allowed."
},
"functionSelector": "d63a8e11",
"id": 361,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "allowed",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 357,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 356,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 361,
"src": "15565:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 355,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15565:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15564:17:0"
},
"returnParameters": {
"id": 360,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 359,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 361,
"src": "15605:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 358,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "15605:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15604:6:0"
},
"scope": 484,
"src": "15548:63:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 362,
"nodeType": "StructuredDocumentation",
"src": "15617:211:0",
"text": "@param account The address of an account.\n@param custodian The address of a custodian.\n@return The amount of StakeLockerFDTs of `account` that are \"locked\" at `custodian`."
},
"functionSelector": "c965b548",
"id": 371,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "custodyAllowance",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 367,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 364,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 371,
"src": "15859:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 363,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15859:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 366,
"mutability": "mutable",
"name": "custodian",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 371,
"src": "15876:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 365,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15876:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15858:36:0"
},
"returnParameters": {
"id": 370,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 369,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 371,
"src": "15918:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 368,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15918:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "15917:9:0"
},
"scope": 484,
"src": "15833:94:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 372,
"nodeType": "StructuredDocumentation",
"src": "15933:187:0",
"text": "@param account The address of an account.\n@return The total amount of StakeLockerFDTs that are \"locked\" for a given account, cannot be greater than balance."
},
"functionSelector": "af6d5571",
"id": 379,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "totalCustodyAllowance",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 375,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 374,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 379,
"src": "16156:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 373,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16156:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16155:17:0"
},
"returnParameters": {
"id": 378,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 377,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 379,
"src": "16196:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 376,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16196:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16195:9:0"
},
"scope": 484,
"src": "16125:80:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": null,
"functionSelector": "1831ccf2",
"id": 384,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "openToPublic",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 380,
"nodeType": "ParameterList",
"parameters": [],
"src": "16232:2:0"
},
"returnParameters": {
"id": 383,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 382,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 384,
"src": "16258:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 381,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "16258:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16257:6:0"
},
"scope": 484,
"src": "16211:53:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 385,
"nodeType": "StructuredDocumentation",
"src": "16270:312:0",
"text": "@dev Updates Staker status on the allowlist. \n@dev Only the Pool Delegate can call this function. \n@dev It emits an `AllowListUpdated` event. \n@param staker The address of the Staker to set status for.\n@param status The status of the Staker on allowlist."
},
"functionSelector": "b12527f8",
"id": 392,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setAllowlist",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 390,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 387,
"mutability": "mutable",
"name": "staker",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 392,
"src": "16609:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 386,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16609:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 389,
"mutability": "mutable",
"name": "status",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 392,
"src": "16625:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 388,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "16625:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "16608:29:0"
},
"returnParameters": {
"id": 391,
"nodeType": "ParameterList",
"parameters": [],
"src": "16646:0:0"
},
"scope": 484,
"src": "16587:60:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 393,
"nodeType": "StructuredDocumentation",
"src": "16653:182:0",
"text": "@dev Sets the StakeLocker as open to the public. \n@dev Only the Pool Delegate can call this function. \n@dev It emits a `StakeLockerOpened` event. "
},
"functionSelector": "0e754e86",
"id": 396,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "openStakeLockerToPublic",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 394,
"nodeType": "ParameterList",
"parameters": [],
"src": "16872:2:0"
},
"returnParameters": {
"id": 395,
"nodeType": "ParameterList",
"parameters": [],
"src": "16883:0:0"
},
"scope": 484,
"src": "16840:44:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 397,
"nodeType": "StructuredDocumentation",
"src": "16890:247:0",
"text": "@dev Sets the lockup period. \n@dev Only the Pool Delegate can call this function. \n@dev It emits a `LockupPeriodUpdated` event. \n@param newLockupPeriod New lockup period used to restrict unstaking."
},
"functionSelector": "c771c390",
"id": 402,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setLockupPeriod",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 400,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 399,
"mutability": "mutable",
"name": "newLockupPeriod",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 402,
"src": "17167:23:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 398,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17167:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "17166:25:0"
},
"returnParameters": {
"id": 401,
"nodeType": "ParameterList",
"parameters": [],
"src": "17200:0:0"
},
"scope": 484,
"src": "17142:59:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 403,
"nodeType": "StructuredDocumentation",
"src": "17207:263:0",
"text": "@dev Transfers an amount of Stake Asset to a destination account. \n@dev Only the Pool can call this function. \n@param dst The destination to transfer Stake Asset to.\n@param amt The amount of Stake Asset to transfer."
},
"functionSelector": "f2d5d56b",
"id": 410,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "pull",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 408,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 405,
"mutability": "mutable",
"name": "dst",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 410,
"src": "17489:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 404,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "17489:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 407,
"mutability": "mutable",
"name": "amt",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 410,
"src": "17502:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 406,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17502:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "17488:26:0"
},
"returnParameters": {
"id": 409,
"nodeType": "ParameterList",
"parameters": [],
"src": "17523:0:0"
},
"scope": 484,
"src": "17475:49:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 411,
"nodeType": "StructuredDocumentation",
"src": "17530:222:0",
"text": "@dev Updates loss accounting for StakeLockerFDTs after BPTs have been burned. \n@dev Only the Pool can call this function. \n@param bptsBurned The amount of BPTs that have been burned."
},
"functionSelector": "bcd01be7",
"id": 416,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "updateLosses",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 414,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 413,
"mutability": "mutable",
"name": "bptsBurned",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 416,
"src": "17779:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 412,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17779:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "17778:20:0"
},
"returnParameters": {
"id": 415,
"nodeType": "ParameterList",
"parameters": [],
"src": "17807:0:0"
},
"scope": 484,
"src": "17757:51:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 417,
"nodeType": "StructuredDocumentation",
"src": "17814:371:0",
"text": "@dev Handles a Staker's depositing of an amount of Stake Asset, minting them StakeLockerFDTs. \n@dev It emits a `StakeDateUpdated` event. \n@dev It emits a `Stake` event. \n@dev It emits a `Cooldown` event. \n@dev It emits a `BalanceUpdated` event. \n@param amt The amount of Stake Asset (BPTs) to deposit."
},
"functionSelector": "a694fc3a",
"id": 422,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "stake",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 420,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 419,
"mutability": "mutable",
"name": "amt",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 422,
"src": "18205:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 418,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18205:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "18204:13:0"
},
"returnParameters": {
"id": 421,
"nodeType": "ParameterList",
"parameters": [],
"src": "18226:0:0"
},
"scope": 484,
"src": "18190:37:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 423,
"nodeType": "StructuredDocumentation",
"src": "18233:174:0",
"text": "@dev Activates the cooldown period to unstake. \n@dev It can't be called if the account is not staking. \n@dev It emits a `Cooldown` event. "
},
"functionSelector": "8a10555c",
"id": 426,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "intendToUnstake",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 424,
"nodeType": "ParameterList",
"parameters": [],
"src": "18436:2:0"
},
"returnParameters": {
"id": 425,
"nodeType": "ParameterList",
"parameters": [],
"src": "18447:0:0"
},
"scope": 484,
"src": "18412:36:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 427,
"nodeType": "StructuredDocumentation",
"src": "18454:150:0",
"text": "@dev Cancels an initiated unstake by resetting the calling account's unstake cooldown. \n@dev It emits a `Cooldown` event. "
},
"functionSelector": "4ab17969",
"id": 430,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "cancelUnstake",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 428,
"nodeType": "ParameterList",
"parameters": [],
"src": "18631:2:0"
},
"returnParameters": {
"id": 429,
"nodeType": "ParameterList",
"parameters": [],
"src": "18642:0:0"
},
"scope": 484,
"src": "18609:34:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 431,
"nodeType": "StructuredDocumentation",
"src": "18649:357:0",
"text": "@dev Handles a Staker's withdrawing of an amount of Stake Asset, minus any losses. \n@dev It also claims interest and burns StakeLockerFDTs for the calling account. \n@dev It emits an `Unstake` event. \n@dev It emits a `BalanceUpdated` event. \n@param amt The amount of Stake Asset (BPTs) to withdraw."
},
"functionSelector": "2e17de78",
"id": 436,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "unstake",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 434,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 433,
"mutability": "mutable",
"name": "amt",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 436,
"src": "19028:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 432,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19028:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "19027:13:0"
},
"returnParameters": {
"id": 435,
"nodeType": "ParameterList",
"parameters": [],
"src": "19049:0:0"
},
"scope": 484,
"src": "19011:39:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
120
],
"body": null,
"documentation": {
"id": 437,
"nodeType": "StructuredDocumentation",
"src": "19056:183:0",
"text": "@dev Withdraws all claimable interest earned from the StakeLocker for an account. \n@dev It emits a `BalanceUpdated` event if there are withdrawable funds. "
},
"functionSelector": "24600fc3",
"id": 441,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "withdrawFunds",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 439,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "19278:8:0"
},
"parameters": {
"id": 438,
"nodeType": "ParameterList",
"parameters": [],
"src": "19266:2:0"
},
"returnParameters": {
"id": 440,
"nodeType": "ParameterList",
"parameters": [],
"src": "19286:0:0"
},
"scope": 484,
"src": "19244:43:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 442,
"nodeType": "StructuredDocumentation",
"src": "19297:436:0",
"text": "@dev Increases the custody allowance for a given Custodian corresponding to the account (`msg.sender`).\n@dev It emits a `CustodyAllowanceChanged` event.\n@dev It emits a `TotalCustodyAllowanceUpdated` event.\n@param custodian The address which will act as Custodian of a given amount for an account.\n@param amount The number of additional FDTs to be custodied by the Custodian."
},
"functionSelector": "27f91856",
"id": 449,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "increaseCustodyAllowance",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 447,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 444,
"mutability": "mutable",
"name": "custodian",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 449,
"src": "19772:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 443,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "19772:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 446,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 449,
"src": "19791:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 445,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19791:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "19771:35:0"
},
"returnParameters": {
"id": 448,
"nodeType": "ParameterList",
"parameters": [],
"src": "19815:0:0"
},
"scope": 484,
"src": "19738:78:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 450,
"nodeType": "StructuredDocumentation",
"src": "19822:692:0",
"text": "@dev Transfers custodied StakeLockerFDTs back to the account. \n@dev `from` and `to` should always be equal in this implementation. \n@dev This means that the Custodian can only decrease their own allowance and unlock funds for the original owner. \n@dev It emits a `CustodyTransfer` event. \n@dev It emits a `CustodyAllowanceChanged` event. \n@dev It emits a `TotalCustodyAllowanceUpdated` event. \n@param from The address which holds the StakeLockerFDTs.\n@param to The address which will be the new owner of the amount of StakeLockerFDTs.\n@param amount The mount of StakeLockerFDTs transferred."
},
"functionSelector": "2ac04ac8",
"id": 459,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "transferByCustodian",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 457,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 452,
"mutability": "mutable",
"name": "from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 459,
"src": "20548:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 451,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20548:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 454,
"mutability": "mutable",
"name": "to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 459,
"src": "20562:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 453,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20562:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 456,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 459,
"src": "20574:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 455,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20574:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "20547:42:0"
},
"returnParameters": {
"id": 458,
"nodeType": "ParameterList",
"parameters": [],
"src": "20598:0:0"
},
"scope": 484,
"src": "20519:80:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 460,
"nodeType": "StructuredDocumentation",
"src": "20605:182:0",
"text": "@dev Triggers paused state. \n@dev Halts functionality for certain functions. \n@dev Only the Pool Delegate or a Pool Admin can call this function. "
},
"functionSelector": "8456cb59",
"id": 463,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "pause",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 461,
"nodeType": "ParameterList",
"parameters": [],
"src": "20806:2:0"
},
"returnParameters": {
"id": 462,
"nodeType": "ParameterList",
"parameters": [],
"src": "20817:0:0"
},
"scope": 484,
"src": "20792:26:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 464,
"nodeType": "StructuredDocumentation",
"src": "20824:186:0",
"text": "@dev Triggers unpaused state. \n@dev Restores functionality for certain functions. \n@dev Only the Pool Delegate or a Pool Admin can call this function."
},
"functionSelector": "3f4ba83a",
"id": 467,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "unpause",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 465,
"nodeType": "ParameterList",
"parameters": [],
"src": "21031:2:0"
},
"returnParameters": {
"id": 466,
"nodeType": "ParameterList",
"parameters": [],
"src": "21042:0:0"
},
"scope": 484,
"src": "21015:28:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 468,
"nodeType": "StructuredDocumentation",
"src": "21049:130:0",
"text": "@dev Returns if the unstake cooldown period has passed for `msg.sender` and if they are in the unstake window."
},
"functionSelector": "86bf1da3",
"id": 475,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isUnstakeAllowed",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 471,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 470,
"mutability": "mutable",
"name": "from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 475,
"src": "21210:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 469,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "21210:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21209:14:0"
},
"returnParameters": {
"id": 474,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 473,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 475,
"src": "21247:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 472,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "21247:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21246:6:0"
},
"scope": 484,
"src": "21184:69:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": {
"id": 476,
"nodeType": "StructuredDocumentation",
"src": "21259:183:0",
"text": "@dev Returns if an account is allowed to receive a transfer. \n@dev This is only possible if they have zero cooldown or they are past their unstake window. "
},
"functionSelector": "fab11078",
"id": 483,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isReceiveAllowed",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 479,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 478,
"mutability": "mutable",
"name": "_unstakeCooldown",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 483,
"src": "21473:24:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 477,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21473:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21472:26:0"
},
"returnParameters": {
"id": 482,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 481,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 483,
"src": "21522:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 480,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "21522:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "21521:6:0"
},
"scope": 484,
"src": "21447:81:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 485,
"src": "10604:10927:0"
}
],
"src": "135:21397:0"
},
"id": 0
}
}
}
}