@superfluid-finance/ethereum-contracts 1.2.3-dev.f94fdbb.0 → 1.3.1-dev.7df8a6a.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/build/contracts/AccessControl.json +3 -3
  2. package/build/contracts/AccessControlEnumerable.json +3 -3
  3. package/build/contracts/Address.json +5 -5
  4. package/build/contracts/AgreementBase.json +13 -13
  5. package/build/contracts/AgreementLibrary.json +7 -7
  6. package/build/contracts/BaseRelayRecipient.json +5 -5
  7. package/build/contracts/BatchLiquidator.json +179 -179
  8. package/build/contracts/BatchOperation.json +5 -5
  9. package/build/contracts/CFAv1Library.json +5 -5
  10. package/build/contracts/CallUtils.json +7 -7
  11. package/build/contracts/ClosingOnUpdateFlowTestApp.json +2107 -1917
  12. package/build/contracts/ConstantFlowAgreementV1.json +8 -8
  13. package/build/contracts/Context.json +3 -3
  14. package/build/contracts/ContextDefinitions.json +5 -5
  15. package/build/contracts/Create2.json +5 -5
  16. package/build/contracts/CustomSuperTokenBase.json +3 -3
  17. package/build/contracts/ERC165.json +3 -3
  18. package/build/contracts/ERC1820Implementer.json +5 -5
  19. package/build/contracts/ERC1820RegistryCompiled.json +7 -7
  20. package/build/contracts/ERC20.json +5 -5
  21. package/build/contracts/ERC20Burnable.json +3 -3
  22. package/build/contracts/ERC20Pausable.json +3 -3
  23. package/build/contracts/ERC20PresetMinterPauser.json +5 -5
  24. package/build/contracts/ERC20WithTokenInfo.json +3 -3
  25. package/build/contracts/ERC777Helper.json +7 -7
  26. package/build/contracts/ERC777RecipientDrainingGas.json +839 -839
  27. package/build/contracts/ERC777RecipientReverting.json +839 -839
  28. package/build/contracts/EnumerableSet.json +5 -5
  29. package/build/contracts/EventsEmitter.json +47 -47
  30. package/build/contracts/ExclusiveInflowTestApp.json +2107 -1917
  31. package/build/contracts/FixedSizeData.json +213 -213
  32. package/build/contracts/FlowExchangeTestApp.json +2107 -1917
  33. package/build/contracts/FlowOperatorDefinitions.json +5 -5
  34. package/build/contracts/FullUpgradableSuperTokenProxy.json +226 -312
  35. package/build/contracts/IAccessControl.json +3 -3
  36. package/build/contracts/IAccessControlEnumerable.json +3 -3
  37. package/build/contracts/IConstantFlowAgreementV1.json +451 -444
  38. package/build/contracts/IDAv1Library.json +5 -5
  39. package/build/contracts/IERC165.json +3 -3
  40. package/build/contracts/IERC1820Implementer.json +3 -3
  41. package/build/contracts/IERC1820Registry.json +3 -3
  42. package/build/contracts/IERC20.json +3 -3
  43. package/build/contracts/IERC20Metadata.json +3 -3
  44. package/build/contracts/IERC777.json +3 -3
  45. package/build/contracts/IERC777Recipient.json +3 -3
  46. package/build/contracts/IERC777Sender.json +3 -3
  47. package/build/contracts/IInstantDistributionAgreementV1.json +570 -559
  48. package/build/contracts/IMaticBridgedNativeSuperToken.json +71 -32
  49. package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +3 -3
  50. package/build/contracts/IMultiSigWallet.json +3 -3
  51. package/build/contracts/IPureSuperToken.json +71 -32
  52. package/build/contracts/IPureSuperTokenCustom.json +3 -3
  53. package/build/contracts/IRelayRecipient.json +3 -3
  54. package/build/contracts/IResolver.json +3 -3
  55. package/build/contracts/ISETH.json +71 -32
  56. package/build/contracts/ISETHCustom.json +3 -3
  57. package/build/contracts/ISuperAgreement.json +3 -3
  58. package/build/contracts/ISuperApp.json +179 -173
  59. package/build/contracts/ISuperToken.json +522 -483
  60. package/build/contracts/ISuperTokenFactory.json +3 -3
  61. package/build/contracts/ISuperfluid.json +633 -628
  62. package/build/contracts/ISuperfluidGovernance.json +134 -133
  63. package/build/contracts/ISuperfluidToken.json +403 -394
  64. package/build/contracts/ITOGAv1.json +1211 -1211
  65. package/build/contracts/ITOGAv2.json +1211 -1211
  66. package/build/contracts/Initializable.json +3 -3
  67. package/build/contracts/InstantDistributionAgreementV1.json +10 -10
  68. package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +194 -194
  69. package/build/contracts/NonClosableOutflowTestApp.json +2107 -1917
  70. package/build/contracts/Ownable.json +3 -3
  71. package/build/contracts/Pausable.json +3 -3
  72. package/build/contracts/Proxy.json +3 -3
  73. package/build/contracts/PureSuperToken.json +91 -91
  74. package/build/contracts/Resolver.json +96 -96
  75. package/build/contracts/SETHProxy.json +199 -199
  76. package/build/contracts/SafeCast.json +5 -5
  77. package/build/contracts/SafeERC20.json +5 -5
  78. package/build/contracts/SafeMath.json +5 -5
  79. package/build/contracts/SelfDeletingFlowTestApp.json +2107 -1917
  80. package/build/contracts/SlotsBitmapLibrary.json +7 -7
  81. package/build/contracts/Strings.json +5 -5
  82. package/build/contracts/SuperAppBase.json +3 -3
  83. package/build/contracts/SuperAppDefinitions.json +5 -5
  84. package/build/contracts/SuperToken.json +2262 -2262
  85. package/build/contracts/SuperTokenFactory.json +582 -582
  86. package/build/contracts/SuperTokenFactoryBase.json +576 -576
  87. package/build/contracts/SuperTokenFactoryHelper.json +578 -578
  88. package/build/contracts/SuperUpgrader.json +687 -687
  89. package/build/contracts/Superfluid.json +6648 -6678
  90. package/build/contracts/SuperfluidFrameworkDeployer.json +526 -526
  91. package/build/contracts/SuperfluidGovernanceBase.json +13 -13
  92. package/build/contracts/SuperfluidGovernanceConfigs.json +5 -5
  93. package/build/contracts/SuperfluidGovernanceII.json +21 -21
  94. package/build/contracts/SuperfluidGovernanceIIProxy.json +20 -20
  95. package/build/contracts/SuperfluidLoader.json +147 -147
  96. package/build/contracts/SuperfluidToken.json +1269 -1269
  97. package/build/contracts/TOGA.json +1221 -1221
  98. package/build/contracts/TestGovernance.json +315 -315
  99. package/build/contracts/TestToken.json +475 -561
  100. package/build/contracts/TokenCustodian.json +220 -220
  101. package/build/contracts/TokenInfo.json +3 -3
  102. package/build/contracts/UUPSProxiable.json +136 -136
  103. package/build/contracts/UUPSProxy.json +87 -87
  104. package/build/contracts/UUPSUtils.json +43 -43
  105. package/build/contracts-sizes.txt +6 -6
  106. package/contracts/agreements/AgreementBase.sol +1 -1
  107. package/contracts/agreements/AgreementLibrary.sol +1 -1
  108. package/contracts/agreements/ConstantFlowAgreementV1.sol +1 -1
  109. package/contracts/agreements/InstantDistributionAgreementV1.sol +1 -1
  110. package/contracts/gov/SuperfluidGovernanceBase.sol +1 -1
  111. package/contracts/gov/SuperfluidGovernanceII.sol +1 -1
  112. package/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol +7 -10
  113. package/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol +11 -18
  114. package/contracts/interfaces/superfluid/ISuperApp.sol +7 -9
  115. package/contracts/interfaces/superfluid/ISuperToken.sol +36 -44
  116. package/contracts/interfaces/superfluid/ISuperfluid.sol +17 -21
  117. package/contracts/interfaces/superfluid/ISuperfluidGovernance.sol +1 -1
  118. package/contracts/interfaces/superfluid/ISuperfluidToken.sol +13 -14
  119. package/contracts/libs/BaseRelayRecipient.sol +1 -1
  120. package/contracts/libs/CallUtils.sol +1 -1
  121. package/contracts/libs/ERC1820RegistryCompiled.sol +1 -1
  122. package/contracts/libs/ERC777Helper.sol +1 -1
  123. package/contracts/libs/EventsEmitter.sol +2 -2
  124. package/contracts/libs/FixedSizeData.sol +2 -2
  125. package/contracts/libs/SlotsBitmapLibrary.sol +1 -1
  126. package/contracts/mocks/AgreementMock.sol +1 -1
  127. package/contracts/mocks/CFAAppMocks.sol +6 -6
  128. package/contracts/mocks/CFALibraryMock.sol +2 -2
  129. package/contracts/mocks/CallUtilsMock.sol +1 -1
  130. package/contracts/mocks/CallUtilsTester.sol +1 -1
  131. package/contracts/mocks/CustomSuperTokenMock.sol +1 -1
  132. package/contracts/mocks/ERC777SenderRecipientMock.sol +1 -1
  133. package/contracts/mocks/FakeSuperfluidMock.sol +1 -1
  134. package/contracts/mocks/ForwarderMock.sol +1 -1
  135. package/contracts/mocks/IDASuperAppTester.sol +2 -2
  136. package/contracts/mocks/IDAv1LibraryMock.sol +3 -3
  137. package/contracts/mocks/MockSmartWallet.sol +1 -1
  138. package/contracts/mocks/MultiFlowTesterApp.sol +2 -2
  139. package/contracts/mocks/SuperAppMocks.sol +15 -12
  140. package/contracts/mocks/SuperTokenFactoryMock.sol +1 -1
  141. package/contracts/mocks/SuperTokenMock.sol +1 -1
  142. package/contracts/mocks/SuperfluidDestructorMock.sol +1 -1
  143. package/contracts/mocks/SuperfluidGovernanceIIMock.sol +1 -1
  144. package/contracts/mocks/SuperfluidMock.sol +2 -2
  145. package/contracts/mocks/UUPSProxiableMock.sol +1 -1
  146. package/contracts/superfluid/FullUpgradableSuperTokenProxy.sol +2 -2
  147. package/contracts/superfluid/SuperToken.sol +1 -1
  148. package/contracts/superfluid/SuperTokenFactory.sol +1 -1
  149. package/contracts/superfluid/Superfluid.sol +4 -4
  150. package/contracts/superfluid/SuperfluidToken.sol +1 -1
  151. package/contracts/tokens/MaticBridgedNativeSuperToken.sol +1 -1
  152. package/contracts/tokens/PureSuperToken.sol +1 -1
  153. package/contracts/tokens/SETH.sol +1 -1
  154. package/contracts/upgradability/UUPSProxiable.sol +1 -1
  155. package/contracts/upgradability/UUPSProxy.sol +1 -1
  156. package/contracts/upgradability/UUPSUtils.sol +1 -1
  157. package/contracts/utils/BatchLiquidator.sol +1 -1
  158. package/contracts/utils/Resolver.sol +1 -1
  159. package/contracts/utils/SuperUpgrader.sol +6 -6
  160. package/contracts/utils/SuperfluidLoader.sol +1 -1
  161. package/contracts/utils/TOGA.sol +1 -1
  162. package/contracts/utils/TestGovernance.sol +2 -2
  163. package/contracts/utils/TestToken.sol +2 -2
  164. package/contracts/utils/TokenCustodian.sol +1 -1
  165. package/package.json +5 -3
  166. package/scripts/deploy-framework.js +5 -5
  167. package/scripts/deploy-super-token.js +13 -4
  168. package/scripts/gov-create-new-app-registration-key.js +2 -1
  169. package/scripts/gov-create-new-factory-registration.js +1 -1
  170. package/scripts/libs/getConfig.js +21 -3
  171. package/scripts/resolver-list-super-token.js +1 -0
@@ -1571,7 +1571,7 @@
1571
1571
  "type": "function"
1572
1572
  }
1573
1573
  ],
1574
- "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bondAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidatedBy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardAmountReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"}],\"name\":\"AgreementLiquidatedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"}],\"name\":\"AgreementStateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"AgreementTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"AuthorizedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bailoutAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"Bailout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"RevokedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"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\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Sent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDowngraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenUpgraded\",\"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\":\"operator\",\"type\":\"address\"}],\"name\":\"authorizeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"createAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"downgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountActiveAgreements\",\"outputs\":[{\"internalType\":\"contract ISuperAgreement[]\",\"name\":\"activeAgreements\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementData\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementStateSlot\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHost\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"granularity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"underlyingDecimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"n\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountCritical\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountCriticalNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountSolvent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountSolventNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"isOperatorFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useDefaultRewardAccount\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"}],\"name\":\"makeLiquidationPayoutsV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationDowngrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationUpgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorSend\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"realtimeBalanceOfNow\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"selfApproveFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"selfBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"selfMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"selfTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"settleBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"terminateAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"recipient\",\"type\":\"address\"}],\"name\":\"transferAll\",\"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\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementStateSlot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"TokenDowngraded(address,uint256)\":{\"details\":\"Token downgrade event\",\"params\":{\"account\":\"Account whose tokens are upgraded\",\"amount\":\"Amount of tokens downgraded\"}},\"TokenUpgraded(address,uint256)\":{\"details\":\"Token upgrade event\",\"params\":{\"account\":\"Account where tokens are upgraded to\",\"amount\":\"Amount of tokens upgraded (in 18 decimals)\"}}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"}},\"authorizeOperator(address)\":{\"details\":\"Make an account an operator of the caller. See {isOperatorFor}. Emits an {AuthorizedOperator} event. Requirements - `operator` cannot be calling address.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by an account (`owner`).\"},\"burn(uint256,bytes)\":{\"details\":\"Destroys `amount` tokens from the caller's account, reducing the total supply. If a send hook is registered for the caller, the corresponding function will be called with `data` and empty `operatorData`. See {IERC777Sender}. Emits a {Burned} event. Requirements - the caller must have at least `amount` tokens.\"},\"createAgreement(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: SuperToken always uses 18 decimals. Note: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"defaultOperators()\":{\"details\":\"Returns the list of default operators. These accounts are operators for all token holders, even if {authorizeOperator} was never called on them. This list is immutable, but individual holders may revoke these via {revokeOperator}, in which case {isOperatorFor} will return false.\"},\"downgrade(uint256)\":{\"details\":\"Downgrade SuperToken to ERC20.It will call transfer to send tokens\",\"params\":{\"amount\":\"Number of tokens to be downgraded\"}},\"getAccountActiveAgreements(address)\":{\"details\":\"An active agreement is one that has state for the account\",\"params\":{\"account\":\"Account to query\"},\"returns\":{\"activeAgreements\":\"List of accounts that have non-zero states for the account\"}},\"getAgreementData(address,bytes32,uint256)\":{\"details\":\"Get data of the agreement\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\"},\"returns\":{\"data\":\"Data of the agreement\"}},\"getAgreementStateSlot(address,address,uint256,uint256)\":{\"details\":\"Get data of the slot of the state of an agreement\",\"params\":{\"account\":\"Account to query\",\"agreementClass\":\"Contract address of the agreement\",\"dataLength\":\"length of the state data\",\"slotId\":\"slot id of the state\"}},\"getHost()\":{\"details\":\"Get superfluid host contract address\"},\"getUnderlyingToken()\":{\"details\":\"Return the underlying token contract\",\"returns\":{\"tokenAddr\":\"Underlying token address\"}},\"granularity()\":{\"details\":\"Returns the smallest part of the token that is not divisible. This means all token operations (creation, movement and destruction) must have amounts that are a multiple of this number. For super token contracts, this value is 1 always\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"initialize(address,uint8,string,string)\":{\"details\":\"Initialize the contract\"},\"isAccountCritical(address,uint256)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is critical (should use future)\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountCriticalNow(address)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountSolvent(address,uint256)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is solvent (should use future)\"},\"returns\":{\"isSolvent\":\"isSolvent\"}},\"isAccountSolventNow(address)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isSolvent\":\"isSolvent\"}},\"isOperatorFor(address,address)\":{\"details\":\"Returns true if an account is an operator of `tokenHolder`. Operators can send and burn tokens on behalf of their owners. All accounts are their own operator. See {operatorSend} and {operatorBurn}.\"},\"makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)\":{\"details\":\"Make liquidation payouts (v2)\",\"params\":{\"id\":\"Agreement ID\",\"liquidationTypeData\":\"Data regarding the version of the liquidation schema and the type\",\"liquidatorAccount\":\"Address of the executor of the liquidation\",\"rewardAmount\":\"The amount the rewarded account will receive\",\"targetAccount\":\"Account to be liquidated\",\"targetAccountBalanceDelta\":\"The delta amount the target account balance should change by - If a bailout is required (bailoutAmount > 0) - the actual reward (single deposit) goes to the executor, - while the reward account becomes the bailout account - total bailout include: bailout amount + reward amount - the targetAccount will be bailed out - If a bailout is not required - the targetAccount will pay the rewardAmount - the liquidator (reward account in PIC period) will receive the rewardAmount Modifiers: - onlyAgreement\",\"useDefaultRewardAccount\":\"Whether or not the default reward account receives the rewardAmount\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"operationApprove(address,address,uint256)\":{\"details\":\"Perform ERC20 approve by host contract.\",\"params\":{\"account\":\"The account owner to be approved.\",\"amount\":\"Number of tokens to be approved. Modifiers: - onlyHost\",\"spender\":\"The spender of account owner's funds.\"}},\"operationDowngrade(address,uint256)\":{\"details\":\"Downgrade ERC20 to SuperToken by host contract.\",\"params\":{\"account\":\"The account to be changed.\",\"amount\":\"Number of tokens to be downgraded (in 18 decimals) Modifiers: - onlyHost\"}},\"operationTransferFrom(address,address,address,uint256)\":{\"details\":\"Perform ERC20 transfer from by host contract.\",\"params\":{\"account\":\"The account to spend sender's funds.\",\"amount\":\"Number of tokens to be transferred. Modifiers: - onlyHost\",\"recipient\":\"The recipient of thefunds.\",\"spender\":\"The account where the funds is sent from.\"}},\"operationUpgrade(address,uint256)\":{\"details\":\"Upgrade ERC20 to SuperToken by host contract.\",\"params\":{\"account\":\"The account to be changed.\",\"amount\":\"Number of tokens to be upgraded (in 18 decimals) Modifiers: - onlyHost\"}},\"operatorBurn(address,uint256,bytes,bytes)\":{\"details\":\"Destroys `amount` tokens from `account`, reducing the total supply. The caller must be an operator of `account`. If a send hook is registered for `account`, the corresponding function will be called with `data` and `operatorData`. See {IERC777Sender}. Emits a {Burned} event. Requirements - `account` cannot be the zero address. - `account` must have at least `amount` tokens. - the caller must be an operator for `account`.\"},\"operatorSend(address,address,uint256,bytes,bytes)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient`. The caller must be an operator of `sender`. If send or receive hooks are registered for `sender` and `recipient`, the corresponding functions will be called with `data` and `operatorData`. See {IERC777Sender} and {IERC777Recipient}. Emits a {Sent} event. Requirements - `sender` cannot be the zero address. - `sender` must have at least `amount` tokens. - the caller must be an operator for `sender`. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\"},\"realtimeBalanceOf(address,uint256)\":{\"details\":\"Calculate the real balance of a user, taking in consideration all agreements of the account\",\"params\":{\"account\":\"for the query\",\"timestamp\":\"Time of balance\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"realtimeBalanceOfNow(address)\":{\"details\":\"realtimeBalanceOf with timestamp equals to block timestamp\",\"params\":{\"account\":\"for the query\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"revokeOperator(address)\":{\"details\":\"Revoke an account's operator status for the caller. See {isOperatorFor} and {defaultOperators}. Emits a {RevokedOperator} event. Requirements - `operator` cannot be calling address.\"},\"selfApproveFor(address,address,uint256)\":{\"details\":\"Give `spender`, `amount` allowance to spend the tokens of `account`. Modifiers: - onlySelf\"},\"selfBurn(address,uint256,bytes)\":{\"details\":\"Burn existing tokens for the account Modifiers: - onlySelf\"},\"selfMint(address,uint256,bytes)\":{\"details\":\"Mint new tokens for the account Modifiers: - onlySelf\"},\"selfTransferFrom(address,address,address,uint256)\":{\"details\":\"Transfer `amount` tokens from the `sender` to `recipient`. If `spender` isn't the same as `sender`, checks if `spender` has allowance to spend tokens of `sender`. Modifiers: - onlySelf\"},\"send(address,uint256,bytes)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`.If send or receive hooks are registered for the caller and `recipient`, the corresponding functions will be called with `data` and empty `operatorData`. See {IERC777Sender} and {IERC777Recipient}. Emits a {Sent} event. Requirements - the caller must have at least `amount` tokens. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\"},\"settleBalance(address,int256)\":{\"details\":\"The agreement needs to make sure that the balance delta is balanced afterwards\",\"params\":{\"account\":\"Account to query.\",\"delta\":\"Amount of balance delta to be settled Modifiers: - onlyAgreement\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"terminateAgreement(bytes32,uint256)\":{\"details\":\"Close the agreement\",\"params\":{\"id\":\"Agreement ID\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"transferAll(address)\":{\"details\":\"Transfer all available balance from `msg.sender` to `recipient`\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"updateAgreementData(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"updateAgreementStateSlot(address,uint256,bytes32[])\":{\"details\":\"Update agreement state slot\",\"params\":{\"account\":\"Account to be updated NOTE - To clear the storage out, provide zero-ed array of intended length\"}},\"upgrade(uint256)\":{\"details\":\"Upgrade ERC20 to SuperToken.\",\"params\":{\"amount\":\"Number of tokens to be upgraded (in 18 decimals) NOTE: It will use \\u00b4transferFrom\\u00b4 to get tokens. Before calling this function you should \\u00b4approve\\u00b4 this contract\"}},\"upgradeTo(address,uint256,bytes)\":{\"details\":\"Upgrade ERC20 to SuperToken and transfer immediately\",\"params\":{\"amount\":\"Number of tokens to be upgraded (in 18 decimals)\",\"data\":\"User data for the TokensRecipient callback NOTE: It will use \\u00b4transferFrom\\u00b4 to get tokens. Before calling this function you should \\u00b4approve\\u00b4 this contract\",\"to\":\"The account to received upgraded tokens\"}}},\"title\":\"Super token (Superfluid Token + ERC20 + ERC777) interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAccountActiveAgreements(address)\":{\"notice\":\"Get a list of agreements that is active for the account\"},\"isAccountCritical(address,uint256)\":{\"notice\":\"Check if account is critical\"},\"isAccountCriticalNow(address)\":{\"notice\":\"Check if account is critical now (current host.getNow())\"},\"isAccountSolvent(address,uint256)\":{\"notice\":\"Check if account is solvent\"},\"isAccountSolventNow(address)\":{\"notice\":\"Check if account is solvent now\"},\"realtimeBalanceOfNow(address)\":{\"notice\":\"Calculate the realtime balance given the current host.getNow() value\"},\"settleBalance(address,int256)\":{\"notice\":\"Settle balance from an account by the agreement\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":\"ISuperToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x57f4203168992c940eb6b8c7cc75f854cb36a1f9323b3f39ddc5e4fbe819c043\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://888941dfa3e5004f678f215b98a85d1bf54e412317928a78e0a1cff090773d4c\",\"dweb:/ipfs/QmVe838upcAyqpy1d3oQNHJrbRyWCKHL51zWrMKruvLxFG\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x3cb0b7216007b942f7611d7b3d983c0df9408fdd4fd6b799c33fc9033e0abf8b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://17901a1fd3635f441671e14ece8ecc6806af20c5eb80cca3b7c6e53a51fef7b6\",\"dweb:/ipfs/QmUXXMfU6nmsyEnufyGEwyZ5M7pzpXNTr6vw32e3JjjoZp\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0x2d9b845469a35b66f1166406149ac85e933dbe9156f57e4a4078948e6a6e71a4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://48e5cb11d4b90e42af521e23b33d57e12187c989d8d56be332b1649308168d45\",\"dweb:/ipfs/QmdaTW4HfpFfHjkHiJ3CmZUmCfLJyFCPTnCygwhiNhx3Tu\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x2166f766b7f61f9bb1376b0948efa0d0c0046b93dc301e51ce495203b145189b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://929630e6a15f523b142b2897783b2f7a54532ac5ae578bd17a0b7f25a6ca2bd8\",\"dweb:/ipfs/QmTu9ffH9qbQncJGEc24bmnoCGjifQ7BG47AYR8AzMLfXR\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x518b869178aafffde40c654a1e24b3b1a2b5e42e5e8f17562556f404db8b9434\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://458ce84666b418fa3a7569c0e109db4d920fb6d1cb67ebc4c497c9c71107d93b\",\"dweb:/ipfs/QmV9nqhRF7MDGkV6UW3WWcqeXov2vmqHuRcvbqaaV8yP6u\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]}},\"version\":1}",
1574
+ "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bondAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidatedBy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardAmountReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"}],\"name\":\"AgreementLiquidatedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"}],\"name\":\"AgreementStateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"AgreementTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"AuthorizedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bailoutAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"Bailout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"RevokedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"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\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Sent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDowngraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenUpgraded\",\"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\":\"operator\",\"type\":\"address\"}],\"name\":\"authorizeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"createAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"downgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountActiveAgreements\",\"outputs\":[{\"internalType\":\"contract ISuperAgreement[]\",\"name\":\"activeAgreements\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementData\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementStateSlot\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHost\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"granularity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"underlyingDecimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"n\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountCritical\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountCriticalNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountSolvent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountSolventNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"isOperatorFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useDefaultRewardAccount\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"}],\"name\":\"makeLiquidationPayoutsV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationDowngrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationUpgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorSend\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"realtimeBalanceOfNow\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"selfApproveFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"selfBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"selfMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"selfTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"settleBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"terminateAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"recipient\",\"type\":\"address\"}],\"name\":\"transferAll\",\"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\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementStateSlot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"TokenDowngraded(address,uint256)\":{\"details\":\"Token downgrade event\",\"params\":{\"account\":\"Account whose tokens are upgraded\",\"amount\":\"Amount of tokens downgraded\"}},\"TokenUpgraded(address,uint256)\":{\"details\":\"Token upgrade event\",\"params\":{\"account\":\"Account where tokens are upgraded to\",\"amount\":\"Amount of tokens upgraded (in 18 decimals)\"}}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default.\"},\"approve(address,uint256)\":{\"custom:emits\":\"an {Approval} event.\",\"custom:note\":\"Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\",\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded.\"}},\"authorizeOperator(address)\":{\"custom:emits\":\"an {AuthorizedOperator} event.\",\"custom:requirements\":\" - `operator` cannot be calling address.\",\"details\":\"Make an account an operator of the caller. See {isOperatorFor}.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by an account (`owner`).\"},\"burn(uint256,bytes)\":{\"custom:emits\":\"a {Burned} event.\",\"custom:requirements\":\" - the caller must have at least `amount` tokens.\",\"details\":\"Destroys `amount` tokens from the caller's account, reducing the total supply. If a send hook is registered for the caller, the corresponding function will be called with `data` and empty `operatorData`. See {IERC777Sender}.\"},\"createAgreement(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"decimals()\":{\"custom:note\":\"SuperToken always uses 18 decimals. This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\",\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called.\"},\"decreaseAllowance(address,uint256)\":{\"custom:emits\":\"an {Approval} event indicating the updated allowance.\",\"custom:requirements\":\" - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\",\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\"},\"defaultOperators()\":{\"details\":\"Returns the list of default operators. These accounts are operators for all token holders, even if {authorizeOperator} was never called on them. This list is immutable, but individual holders may revoke these via {revokeOperator}, in which case {isOperatorFor} will return false.\"},\"downgrade(uint256)\":{\"details\":\"Downgrade SuperToken to ERC20.It will call transfer to send tokens\",\"params\":{\"amount\":\"Number of tokens to be downgraded\"}},\"getAccountActiveAgreements(address)\":{\"details\":\"An active agreement is one that has state for the account\",\"params\":{\"account\":\"Account to query\"},\"returns\":{\"activeAgreements\":\"List of accounts that have non-zero states for the account\"}},\"getAgreementData(address,bytes32,uint256)\":{\"details\":\"Get data of the agreement\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\"},\"returns\":{\"data\":\"Data of the agreement\"}},\"getAgreementStateSlot(address,address,uint256,uint256)\":{\"details\":\"Get data of the slot of the state of an agreement\",\"params\":{\"account\":\"Account to query\",\"agreementClass\":\"Contract address of the agreement\",\"dataLength\":\"length of the state data\",\"slotId\":\"slot id of the state\"}},\"getHost()\":{\"details\":\"Get superfluid host contract address\"},\"getUnderlyingToken()\":{\"details\":\"Return the underlying token contract\",\"returns\":{\"tokenAddr\":\"Underlying token address\"}},\"granularity()\":{\"custom:note\":\"For super token contracts, this value is always 1\",\"details\":\"Returns the smallest part of the token that is not divisible. This means all token operations (creation, movement and destruction) must have amounts that are a multiple of this number.\"},\"increaseAllowance(address,uint256)\":{\"custom:emits\":\"an {Approval} event indicating the updated allowance.\",\"custom:requirements\":\" - `spender` cannot be the zero address.\",\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\"},\"initialize(address,uint8,string,string)\":{\"details\":\"Initialize the contract\"},\"isAccountCritical(address,uint256)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is critical (should use future)\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountCriticalNow(address)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountSolvent(address,uint256)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is solvent (should use future)\"},\"returns\":{\"isSolvent\":\"True if the account is solvent, false otherwise\"}},\"isAccountSolventNow(address)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isSolvent\":\"True if the account is solvent, false otherwise\"}},\"isOperatorFor(address,address)\":{\"details\":\"Returns true if an account is an operator of `tokenHolder`. Operators can send and burn tokens on behalf of their owners. All accounts are their own operator. See {operatorSend} and {operatorBurn}.\"},\"makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)\":{\"custom:modifiers\":\" - onlyAgreement\",\"custom:note\":\" - If a bailout is required (bailoutAmount > 0) - the actual reward (single deposit) goes to the executor, - while the reward account becomes the bailout account - total bailout include: bailout amount + reward amount - the targetAccount will be bailed out - If a bailout is not required - the targetAccount will pay the rewardAmount - the liquidator (reward account in PIC period) will receive the rewardAmount\",\"details\":\"Make liquidation payouts (v2)\",\"params\":{\"id\":\"Agreement ID\",\"liquidationTypeData\":\"Data regarding the version of the liquidation schema and the type\",\"liquidatorAccount\":\"Address of the executor of the liquidation\",\"rewardAmount\":\"The amount the rewarded account will receive\",\"targetAccount\":\"Account to be liquidated\",\"targetAccountBalanceDelta\":\"The delta amount the target account balance should change by\",\"useDefaultRewardAccount\":\"Whether or not the default reward account receives the rewardAmount\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"operationApprove(address,address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Perform ERC20 approve by host contract.\",\"params\":{\"account\":\"The account owner to be approved.\",\"amount\":\"Number of tokens to be approved.\",\"spender\":\"The spender of account owner's funds.\"}},\"operationDowngrade(address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Downgrade ERC20 to SuperToken by host contract.\",\"params\":{\"account\":\"The account to be changed.\",\"amount\":\"Number of tokens to be downgraded (in 18 decimals)\"}},\"operationTransferFrom(address,address,address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Perform ERC20 transfer from by host contract.\",\"params\":{\"account\":\"The account to spend sender's funds.\",\"amount\":\"Number of tokens to be transferred.\",\"recipient\":\"The recipient of thefunds.\",\"spender\":\"The account where the funds is sent from.\"}},\"operationUpgrade(address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Upgrade ERC20 to SuperToken by host contract.\",\"params\":{\"account\":\"The account to be changed.\",\"amount\":\"Number of tokens to be upgraded (in 18 decimals)\"}},\"operatorBurn(address,uint256,bytes,bytes)\":{\"custom:emits\":\"a {Burned} event.\",\"custom:requirements\":\" - `account` cannot be the zero address. - `account` must have at least `amount` tokens. - the caller must be an operator for `account`.\",\"details\":\"Destroys `amount` tokens from `account`, reducing the total supply. The caller must be an operator of `account`. If a send hook is registered for `account`, the corresponding function will be called with `data` and `operatorData`. See {IERC777Sender}.\"},\"operatorSend(address,address,uint256,bytes,bytes)\":{\"custom:emits\":\"a {Sent} event.\",\"custom:requirements\":\" - `sender` cannot be the zero address. - `sender` must have at least `amount` tokens. - the caller must be an operator for `sender`. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\",\"details\":\"Moves `amount` tokens from `sender` to `recipient`. The caller must be an operator of `sender`. If send or receive hooks are registered for `sender` and `recipient`, the corresponding functions will be called with `data` and `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\"},\"realtimeBalanceOf(address,uint256)\":{\"details\":\"Calculate the real balance of a user, taking in consideration all agreements of the account\",\"params\":{\"account\":\"for the query\",\"timestamp\":\"Time of balance\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"realtimeBalanceOfNow(address)\":{\"details\":\"realtimeBalanceOf with timestamp equals to block timestamp\",\"params\":{\"account\":\"for the query\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"revokeOperator(address)\":{\"custom:emits\":\"a {RevokedOperator} event.\",\"custom:requirements\":\" - `operator` cannot be calling address.\",\"details\":\"Revoke an account's operator status for the caller. See {isOperatorFor} and {defaultOperators}.\"},\"selfApproveFor(address,address,uint256)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Give `spender`, `amount` allowance to spend the tokens of `account`.\"},\"selfBurn(address,uint256,bytes)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Burn existing tokens for the account\"},\"selfMint(address,uint256,bytes)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Mint new tokens for the account\"},\"selfTransferFrom(address,address,address,uint256)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Transfer `amount` tokens from the `sender` to `recipient`. If `spender` isn't the same as `sender`, checks if `spender` has allowance to spend tokens of `sender`.\"},\"send(address,uint256,bytes)\":{\"custom:emits\":\"a {Sent} event.\",\"custom:requirements\":\" - the caller must have at least `amount` tokens. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\",\"details\":\"Moves `amount` tokens from the caller's account to `recipient`.If send or receive hooks are registered for the caller and `recipient`, the corresponding functions will be called with `data` and empty `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\"},\"settleBalance(address,int256)\":{\"custom:modifiers\":\" - onlyAgreement\",\"details\":\"The agreement needs to make sure that the balance delta is balanced afterwards\",\"params\":{\"account\":\"Account to query.\",\"delta\":\"Amount of balance delta to be settled\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"terminateAgreement(bytes32,uint256)\":{\"details\":\"Close the agreement\",\"params\":{\"id\":\"Agreement ID\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"custom:emits\":\"a {Transfer} event.\",\"details\":\"Moves `amount` tokens from the caller's account to `recipient`.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded.\"}},\"transferAll(address)\":{\"details\":\"Transfer all available balance from `msg.sender` to `recipient`\"},\"transferFrom(address,address,uint256)\":{\"custom:emits\":\"a {Transfer} event.\",\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded.\"}},\"updateAgreementData(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"updateAgreementStateSlot(address,uint256,bytes32[])\":{\"custom:note\":\" - To clear the storage out, provide zero-ed array of intended length\",\"details\":\"Update agreement state slot\",\"params\":{\"account\":\"Account to be updated\"}},\"upgrade(uint256)\":{\"custom:note\":\"It will use `transferFrom` to get tokens. Before calling this function you should `approve` this contract\",\"details\":\"Upgrade ERC20 to SuperToken.\",\"params\":{\"amount\":\"Number of tokens to be upgraded (in 18 decimals)\"}},\"upgradeTo(address,uint256,bytes)\":{\"custom:note\":\"It will use `transferFrom` to get tokens. Before calling this function you should `approve` this contract\",\"details\":\"Upgrade ERC20 to SuperToken and transfer immediately\",\"params\":{\"amount\":\"Number of tokens to be upgraded (in 18 decimals)\",\"data\":\"User data for the TokensRecipient callback\",\"to\":\"The account to received upgraded tokens\"}}},\"title\":\"Super token (Superfluid Token + ERC20 + ERC777) interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"This value changes when {approve} or {transferFrom} are called.\"},\"getAccountActiveAgreements(address)\":{\"notice\":\"Get a list of agreements that is active for the account\"},\"isAccountCritical(address,uint256)\":{\"notice\":\"Check if account is critical\"},\"isAccountCriticalNow(address)\":{\"notice\":\"Check if account is critical now (current host.getNow())\"},\"isAccountSolvent(address,uint256)\":{\"notice\":\"Check if account is solvent\"},\"isAccountSolventNow(address)\":{\"notice\":\"Check if account is solvent now\"},\"realtimeBalanceOfNow(address)\":{\"notice\":\"Calculate the realtime balance given the current host.getNow() value\"},\"settleBalance(address,int256)\":{\"notice\":\"Settle balance from an account by the agreement\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":\"ISuperToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x42b604992cf67321cc12e8bed16543df0db4eaf125b8c1c82c330ebbeb20c014\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7c18b00caf7b8be7e11f75284fb96263ce48a3984d56f2a91ec44cae4413d2fc\",\"dweb:/ipfs/QmWVzdW9KnkwAVe9g5zRuMoqCf7N89AoBfzzRr8puw5d8a\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0xcff22ed43df0f34a645e6cbe0d7c5fd08f204d769e9095bc59d7c2fe6d11b7d6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://944b8c5a37839b40ec8ee1ccfecbaf007808a61ea16c7b1351a7184606772032\",\"dweb:/ipfs/QmbUKZqZtVfqZMKYnQUygE4svatKuN9kT2ibrnxMuWXR7n\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xf16efd1ba72322e77e0d936b723c0e71eb14c23e11cf69efae8c7caa407012cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://ff4bb321b72dc3332984346e5b66ad131c6132101658fe6707d7a9d043f981ab\",\"dweb:/ipfs/QmXmVD2mZ3LRb7wQZ2VcrpYhtjm21zUe5hPDDDJA1WXbFz\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0xea33d20751ffea4f4446bc04f6c10194fb4da0803a988586d41d49cf4859731c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7716b1f5eec0a7ac8780d82de4f0274ecd7059be4eec46c82b0b7adce110f10b\",\"dweb:/ipfs/QmWRQafvdCBsyfDYnevXSav1AAz8uZRRBwh2be5Z3vSfVN\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x3eec5a3bf337cd319c1918fd1b16f350cf5f6850ac71f6859066fbf86e734ff4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cda19a2f5ca18e79c1e2300c8efac84c718df76c4fb313f59f84264a4c6b398a\",\"dweb:/ipfs/QmfQiwgDH5Q64w5ufBnDzVaeWv6WCZ6fLTrYu1FSYfBGhq\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]}},\"version\":1}",
1575
1575
  "bytecode": "0x",
1576
1576
  "deployedBytecode": "0x",
1577
1577
  "immutableReferences": {},
@@ -1579,7 +1579,7 @@
1579
1579
  "deployedGeneratedSources": [],
1580
1580
  "sourceMap": "",
1581
1581
  "deployedSourceMap": "",
1582
- "source": "// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.0;\n\nimport { ISuperfluid } from \"./ISuperfluid.sol\";\nimport { ISuperfluidToken } from \"./ISuperfluidToken.sol\";\nimport { TokenInfo } from \"../tokens/TokenInfo.sol\";\nimport { IERC777 } from \"@openzeppelin/contracts/token/ERC777/IERC777.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title Super token (Superfluid Token + ERC20 + ERC777) interface\n * @author Superfluid\n */\ninterface ISuperToken is ISuperfluidToken, TokenInfo, IERC20, IERC777 {\n\n /**\n * @dev Initialize the contract\n */\n function initialize(\n IERC20 underlyingToken,\n uint8 underlyingDecimals,\n string calldata n,\n string calldata s\n ) external;\n\n /**************************************************************************\n * TokenInfo & ERC777\n *************************************************************************/\n\n /**\n * @dev Returns the name of the token.\n */\n function name() external view override(IERC777, TokenInfo) returns (string memory);\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() external view override(IERC777, TokenInfo) returns (string memory);\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: SuperToken always uses 18 decimals.\n *\n * Note: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() external view override(TokenInfo) returns (uint8);\n\n /**************************************************************************\n * ERC20 & ERC777\n *************************************************************************/\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() external view override(IERC777, IERC20) returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by an account (`owner`).\n */\n function balanceOf(address account) external view override(IERC777, IERC20) returns(uint256 balance);\n\n /**************************************************************************\n * ERC20\n *************************************************************************/\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * @return Returns Success a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external override(IERC20) 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 override(IERC20) view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * @return Returns Success 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 override(IERC20) 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 * @return Returns Success 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 override(IERC20) returns (bool);\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) external returns (bool);\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool);\n\n /**************************************************************************\n * ERC777\n *************************************************************************/\n\n /**\n * @dev Returns the smallest part of the token that is not divisible. This\n * means all token operations (creation, movement and destruction) must have\n * amounts that are a multiple of this number.\n *\n * For super token contracts, this value is 1 always\n */\n function granularity() external view override(IERC777) returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * @dev If send or receive hooks are registered for the caller and `recipient`,\n * the corresponding functions will be called with `data` and empty\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * Emits a {Sent} event.\n *\n * Requirements\n *\n * - the caller must have at least `amount` tokens.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function send(address recipient, uint256 amount, bytes calldata data) external override(IERC777);\n\n /**\n * @dev Destroys `amount` tokens from the caller's account, reducing the\n * total supply.\n *\n * If a send hook is registered for the caller, the corresponding function\n * will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n *\n * Emits a {Burned} event.\n *\n * Requirements\n *\n * - the caller must have at least `amount` tokens.\n */\n function burn(uint256 amount, bytes calldata data) external override(IERC777);\n\n /**\n * @dev Returns true if an account is an operator of `tokenHolder`.\n * Operators can send and burn tokens on behalf of their owners. All\n * accounts are their own operator.\n *\n * See {operatorSend} and {operatorBurn}.\n */\n function isOperatorFor(address operator, address tokenHolder) external override(IERC777) view returns (bool);\n\n /**\n * @dev Make an account an operator of the caller.\n *\n * See {isOperatorFor}.\n *\n * Emits an {AuthorizedOperator} event.\n *\n * Requirements\n *\n * - `operator` cannot be calling address.\n */\n function authorizeOperator(address operator) external override(IERC777);\n\n /**\n * @dev Revoke an account's operator status for the caller.\n *\n * See {isOperatorFor} and {defaultOperators}.\n *\n * Emits a {RevokedOperator} event.\n *\n * Requirements\n *\n * - `operator` cannot be calling address.\n */\n function revokeOperator(address operator) external override(IERC777);\n\n /**\n * @dev Returns the list of default operators. These accounts are operators\n * for all token holders, even if {authorizeOperator} was never called on\n * them.\n *\n * This list is immutable, but individual holders may revoke these via\n * {revokeOperator}, in which case {isOperatorFor} will return false.\n */\n function defaultOperators() external override(IERC777) view returns (address[] memory);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n * be an operator of `sender`.\n *\n * If send or receive hooks are registered for `sender` and `recipient`,\n * the corresponding functions will be called with `data` and\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * Emits a {Sent} event.\n *\n * Requirements\n *\n * - `sender` cannot be the zero address.\n * - `sender` must have at least `amount` tokens.\n * - the caller must be an operator for `sender`.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function operatorSend(\n address sender,\n address recipient,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external override(IERC777);\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n * The caller must be an operator of `account`.\n *\n * If a send hook is registered for `account`, the corresponding function\n * will be called with `data` and `operatorData`. See {IERC777Sender}.\n *\n * Emits a {Burned} event.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n * - the caller must be an operator for `account`.\n */\n function operatorBurn(\n address account,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external override(IERC777);\n\n /**************************************************************************\n * SuperToken custom token functions\n *************************************************************************/\n\n /**\n * @dev Mint new tokens for the account\n *\n * Modifiers:\n * - onlySelf\n */\n function selfMint(\n address account,\n uint256 amount,\n bytes memory userData\n ) external;\n\n /**\n * @dev Burn existing tokens for the account\n *\n * Modifiers:\n * - onlySelf\n */\n function selfBurn(\n address account,\n uint256 amount,\n bytes memory userData\n ) external;\n\n /**\n * @dev Transfer `amount` tokens from the `sender` to `recipient`.\n * If `spender` isn't the same as `sender`, checks if `spender` has allowance to\n * spend tokens of `sender`.\n *\n * Modifiers:\n * - onlySelf\n */\n function selfTransferFrom(\n address sender,\n address spender,\n address recipient,\n uint256 amount\n ) external;\n\n /**\n * @dev Give `spender`, `amount` allowance to spend the tokens of\n * `account`.\n *\n * Modifiers:\n * - onlySelf\n */\n function selfApproveFor(\n address account,\n address spender,\n uint256 amount\n ) external;\n\n /**************************************************************************\n * SuperToken extra functions\n *************************************************************************/\n\n /**\n * @dev Transfer all available balance from `msg.sender` to `recipient`\n */\n function transferAll(address recipient) external;\n\n /**************************************************************************\n * ERC20 wrapping\n *************************************************************************/\n\n /**\n * @dev Return the underlying token contract\n * @return tokenAddr Underlying token address\n */\n function getUnderlyingToken() external view returns(address tokenAddr);\n\n /**\n * @dev Upgrade ERC20 to SuperToken.\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n *\n * NOTE: It will use ´transferFrom´ to get tokens. Before calling this\n * function you should ´approve´ this contract\n */\n function upgrade(uint256 amount) external;\n\n /**\n * @dev Upgrade ERC20 to SuperToken and transfer immediately\n * @param to The account to received upgraded tokens\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n * @param data User data for the TokensRecipient callback\n *\n * NOTE: It will use ´transferFrom´ to get tokens. Before calling this\n * function you should ´approve´ this contract\n */\n function upgradeTo(address to, uint256 amount, bytes calldata data) external;\n\n /**\n * @dev Token upgrade event\n * @param account Account where tokens are upgraded to\n * @param amount Amount of tokens upgraded (in 18 decimals)\n */\n event TokenUpgraded(\n address indexed account,\n uint256 amount\n );\n\n /**\n * @dev Downgrade SuperToken to ERC20.\n * @dev It will call transfer to send tokens\n * @param amount Number of tokens to be downgraded\n */\n function downgrade(uint256 amount) external;\n\n /**\n * @dev Token downgrade event\n * @param account Account whose tokens are upgraded\n * @param amount Amount of tokens downgraded\n */\n event TokenDowngraded(\n address indexed account,\n uint256 amount\n );\n\n /**************************************************************************\n * Batch Operations\n *************************************************************************/\n\n /**\n * @dev Perform ERC20 approve by host contract.\n * @param account The account owner to be approved.\n * @param spender The spender of account owner's funds.\n * @param amount Number of tokens to be approved.\n *\n * Modifiers:\n * - onlyHost\n */\n function operationApprove(\n address account,\n address spender,\n uint256 amount\n ) external;\n\n /**\n * @dev Perform ERC20 transfer from by host contract.\n * @param account The account to spend sender's funds.\n * @param spender The account where the funds is sent from.\n * @param recipient The recipient of thefunds.\n * @param amount Number of tokens to be transferred.\n *\n * Modifiers:\n * - onlyHost\n */\n function operationTransferFrom(\n address account,\n address spender,\n address recipient,\n uint256 amount\n ) external;\n\n /**\n * @dev Upgrade ERC20 to SuperToken by host contract.\n * @param account The account to be changed.\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n *\n * Modifiers:\n * - onlyHost\n */\n function operationUpgrade(address account, uint256 amount) external;\n\n /**\n * @dev Downgrade ERC20 to SuperToken by host contract.\n * @param account The account to be changed.\n * @param amount Number of tokens to be downgraded (in 18 decimals)\n *\n * Modifiers:\n * - onlyHost\n */\n function operationDowngrade(address account, uint256 amount) external;\n\n\n /**************************************************************************\n * Function modifiers for access control and parameter validations\n *\n * While they cannot be explicitly stated in function definitions, they are\n * listed in function definition comments instead for clarity.\n *\n * NOTE: solidity-coverage not supporting it\n *************************************************************************/\n\n /// @dev The msg.sender must be the contract itself\n //modifier onlySelf() virtual\n\n}\n",
1582
+ "source": "// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.0;\n\nimport { ISuperfluid } from \"./ISuperfluid.sol\";\nimport { ISuperfluidToken } from \"./ISuperfluidToken.sol\";\nimport { TokenInfo } from \"../tokens/TokenInfo.sol\";\nimport { IERC777 } from \"@openzeppelin/contracts/token/ERC777/IERC777.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title Super token (Superfluid Token + ERC20 + ERC777) interface\n * @author Superfluid\n */\ninterface ISuperToken is ISuperfluidToken, TokenInfo, IERC20, IERC777 {\n\n /**\n * @dev Initialize the contract\n */\n function initialize(\n IERC20 underlyingToken,\n uint8 underlyingDecimals,\n string calldata n,\n string calldata s\n ) external;\n\n /**************************************************************************\n * TokenInfo & ERC777\n *************************************************************************/\n\n /**\n * @dev Returns the name of the token.\n */\n function name() external view override(IERC777, TokenInfo) returns (string memory);\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() external view override(IERC777, TokenInfo) returns (string memory);\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * @custom:note SuperToken always uses 18 decimals.\n *\n * This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() external view override(TokenInfo) returns (uint8);\n\n /**************************************************************************\n * ERC20 & ERC777\n *************************************************************************/\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() external view override(IERC777, IERC20) returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by an account (`owner`).\n */\n function balanceOf(address account) external view override(IERC777, IERC20) returns(uint256 balance);\n\n /**************************************************************************\n * ERC20\n *************************************************************************/\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * @return Returns Success a boolean value indicating whether the operation succeeded.\n *\n * @custom:emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external override(IERC20) 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 * @notice This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external override(IERC20) view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * @return Returns Success a boolean value indicating whether the operation succeeded.\n *\n * @custom:note 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 * @custom:emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external override(IERC20) 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 * @return Returns Success a boolean value indicating whether the operation succeeded.\n *\n * @custom:emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external override(IERC20) returns (bool);\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * @custom:emits an {Approval} event indicating the updated allowance.\n *\n * @custom:requirements \n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) external returns (bool);\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * @custom:emits an {Approval} event indicating the updated allowance.\n *\n * @custom:requirements \n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool);\n\n /**************************************************************************\n * ERC777\n *************************************************************************/\n\n /**\n * @dev Returns the smallest part of the token that is not divisible. This\n * means all token operations (creation, movement and destruction) must have\n * amounts that are a multiple of this number.\n *\n * @custom:note For super token contracts, this value is always 1\n */\n function granularity() external view override(IERC777) returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * @dev If send or receive hooks are registered for the caller and `recipient`,\n * the corresponding functions will be called with `data` and empty\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * @custom:emits a {Sent} event.\n *\n * @custom:requirements \n * - the caller must have at least `amount` tokens.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function send(address recipient, uint256 amount, bytes calldata data) external override(IERC777);\n\n /**\n * @dev Destroys `amount` tokens from the caller's account, reducing the\n * total supply.\n *\n * If a send hook is registered for the caller, the corresponding function\n * will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n *\n * @custom:emits a {Burned} event.\n *\n * @custom:requirements \n * - the caller must have at least `amount` tokens.\n */\n function burn(uint256 amount, bytes calldata data) external override(IERC777);\n\n /**\n * @dev Returns true if an account is an operator of `tokenHolder`.\n * Operators can send and burn tokens on behalf of their owners. All\n * accounts are their own operator.\n *\n * See {operatorSend} and {operatorBurn}.\n */\n function isOperatorFor(address operator, address tokenHolder) external override(IERC777) view returns (bool);\n\n /**\n * @dev Make an account an operator of the caller.\n *\n * See {isOperatorFor}.\n *\n * @custom:emits an {AuthorizedOperator} event.\n *\n * @custom:requirements \n * - `operator` cannot be calling address.\n */\n function authorizeOperator(address operator) external override(IERC777);\n\n /**\n * @dev Revoke an account's operator status for the caller.\n *\n * See {isOperatorFor} and {defaultOperators}.\n *\n * @custom:emits a {RevokedOperator} event.\n *\n * @custom:requirements \n * - `operator` cannot be calling address.\n */\n function revokeOperator(address operator) external override(IERC777);\n\n /**\n * @dev Returns the list of default operators. These accounts are operators\n * for all token holders, even if {authorizeOperator} was never called on\n * them.\n *\n * This list is immutable, but individual holders may revoke these via\n * {revokeOperator}, in which case {isOperatorFor} will return false.\n */\n function defaultOperators() external override(IERC777) view returns (address[] memory);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n * be an operator of `sender`.\n *\n * If send or receive hooks are registered for `sender` and `recipient`,\n * the corresponding functions will be called with `data` and\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * @custom:emits a {Sent} event.\n *\n * @custom:requirements \n * - `sender` cannot be the zero address.\n * - `sender` must have at least `amount` tokens.\n * - the caller must be an operator for `sender`.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function operatorSend(\n address sender,\n address recipient,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external override(IERC777);\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n * The caller must be an operator of `account`.\n *\n * If a send hook is registered for `account`, the corresponding function\n * will be called with `data` and `operatorData`. See {IERC777Sender}.\n *\n * @custom:emits a {Burned} event.\n *\n * @custom:requirements \n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n * - the caller must be an operator for `account`.\n */\n function operatorBurn(\n address account,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external override(IERC777);\n\n /**************************************************************************\n * SuperToken custom token functions\n *************************************************************************/\n\n /**\n * @dev Mint new tokens for the account\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfMint(\n address account,\n uint256 amount,\n bytes memory userData\n ) external;\n\n /**\n * @dev Burn existing tokens for the account\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfBurn(\n address account,\n uint256 amount,\n bytes memory userData\n ) external;\n\n /**\n * @dev Transfer `amount` tokens from the `sender` to `recipient`.\n * If `spender` isn't the same as `sender`, checks if `spender` has allowance to\n * spend tokens of `sender`.\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfTransferFrom(\n address sender,\n address spender,\n address recipient,\n uint256 amount\n ) external;\n\n /**\n * @dev Give `spender`, `amount` allowance to spend the tokens of\n * `account`.\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfApproveFor(\n address account,\n address spender,\n uint256 amount\n ) external;\n\n /**************************************************************************\n * SuperToken extra functions\n *************************************************************************/\n\n /**\n * @dev Transfer all available balance from `msg.sender` to `recipient`\n */\n function transferAll(address recipient) external;\n\n /**************************************************************************\n * ERC20 wrapping\n *************************************************************************/\n\n /**\n * @dev Return the underlying token contract\n * @return tokenAddr Underlying token address\n */\n function getUnderlyingToken() external view returns(address tokenAddr);\n\n /**\n * @dev Upgrade ERC20 to SuperToken.\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n *\n * @custom:note It will use `transferFrom` to get tokens. Before calling this\n * function you should `approve` this contract\n */\n function upgrade(uint256 amount) external;\n\n /**\n * @dev Upgrade ERC20 to SuperToken and transfer immediately\n * @param to The account to received upgraded tokens\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n * @param data User data for the TokensRecipient callback\n *\n * @custom:note It will use `transferFrom` to get tokens. Before calling this\n * function you should `approve` this contract\n */\n function upgradeTo(address to, uint256 amount, bytes calldata data) external;\n\n /**\n * @dev Token upgrade event\n * @param account Account where tokens are upgraded to\n * @param amount Amount of tokens upgraded (in 18 decimals)\n */\n event TokenUpgraded(\n address indexed account,\n uint256 amount\n );\n\n /**\n * @dev Downgrade SuperToken to ERC20.\n * @dev It will call transfer to send tokens\n * @param amount Number of tokens to be downgraded\n */\n function downgrade(uint256 amount) external;\n\n /**\n * @dev Token downgrade event\n * @param account Account whose tokens are upgraded\n * @param amount Amount of tokens downgraded\n */\n event TokenDowngraded(\n address indexed account,\n uint256 amount\n );\n\n /**************************************************************************\n * Batch Operations\n *************************************************************************/\n\n /**\n * @dev Perform ERC20 approve by host contract.\n * @param account The account owner to be approved.\n * @param spender The spender of account owner's funds.\n * @param amount Number of tokens to be approved.\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationApprove(\n address account,\n address spender,\n uint256 amount\n ) external;\n\n /**\n * @dev Perform ERC20 transfer from by host contract.\n * @param account The account to spend sender's funds.\n * @param spender The account where the funds is sent from.\n * @param recipient The recipient of thefunds.\n * @param amount Number of tokens to be transferred.\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationTransferFrom(\n address account,\n address spender,\n address recipient,\n uint256 amount\n ) external;\n\n /**\n * @dev Upgrade ERC20 to SuperToken by host contract.\n * @param account The account to be changed.\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationUpgrade(address account, uint256 amount) external;\n\n /**\n * @dev Downgrade ERC20 to SuperToken by host contract.\n * @param account The account to be changed.\n * @param amount Number of tokens to be downgraded (in 18 decimals)\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationDowngrade(address account, uint256 amount) external;\n\n\n /**************************************************************************\n * Function modifiers for access control and parameter validations\n *\n * While they cannot be explicitly stated in function definitions, they are\n * listed in function definition comments instead for clarity.\n *\n * NOTE: solidity-coverage not supporting it\n *************************************************************************/\n\n /// @dev The msg.sender must be the contract itself\n //modifier onlySelf() virtual\n\n}\n",
1583
1583
  "sourcePath": "/home/runner/work/protocol-monorepo/protocol-monorepo/packages/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol",
1584
1584
  "ast": {
1585
1585
  "absolutePath": "project:/contracts/interfaces/superfluid/ISuperToken.sol",
@@ -2145,8 +2145,8 @@
2145
2145
  "documentation": {
2146
2146
  "id": 17438,
2147
2147
  "nodeType": "StructuredDocumentation",
2148
- "src": "1292:668:45",
2149
- "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: SuperToken always uses 18 decimals.\n Note: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
2148
+ "src": "1292:669:45",
2149
+ "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n @custom:note SuperToken always uses 18 decimals.\n This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
2150
2150
  },
2151
2151
  "functionSelector": "313ce567",
2152
2152
  "id": 17445,
@@ -2154,7 +2154,7 @@
2154
2154
  "kind": "function",
2155
2155
  "modifiers": [],
2156
2156
  "name": "decimals",
2157
- "nameLocation": "1974:8:45",
2157
+ "nameLocation": "1975:8:45",
2158
2158
  "nodeType": "FunctionDefinition",
2159
2159
  "overrides": {
2160
2160
  "id": 17441,
@@ -2165,16 +2165,16 @@
2165
2165
  "name": "TokenInfo",
2166
2166
  "nodeType": "IdentifierPath",
2167
2167
  "referencedDeclaration": 18838,
2168
- "src": "2008:9:45"
2168
+ "src": "2009:9:45"
2169
2169
  }
2170
2170
  ],
2171
- "src": "1999:19:45"
2171
+ "src": "2000:19:45"
2172
2172
  },
2173
2173
  "parameters": {
2174
2174
  "id": 17439,
2175
2175
  "nodeType": "ParameterList",
2176
2176
  "parameters": [],
2177
- "src": "1982:2:45"
2177
+ "src": "1983:2:45"
2178
2178
  },
2179
2179
  "returnParameters": {
2180
2180
  "id": 17444,
@@ -2188,7 +2188,7 @@
2188
2188
  "nameLocation": "-1:-1:-1",
2189
2189
  "nodeType": "VariableDeclaration",
2190
2190
  "scope": 17445,
2191
- "src": "2028:5:45",
2191
+ "src": "2029:5:45",
2192
2192
  "stateVariable": false,
2193
2193
  "storageLocation": "default",
2194
2194
  "typeDescriptions": {
@@ -2199,7 +2199,7 @@
2199
2199
  "id": 17442,
2200
2200
  "name": "uint8",
2201
2201
  "nodeType": "ElementaryTypeName",
2202
- "src": "2028:5:45",
2202
+ "src": "2029:5:45",
2203
2203
  "typeDescriptions": {
2204
2204
  "typeIdentifier": "t_uint8",
2205
2205
  "typeString": "uint8"
@@ -2208,10 +2208,10 @@
2208
2208
  "visibility": "internal"
2209
2209
  }
2210
2210
  ],
2211
- "src": "2027:7:45"
2211
+ "src": "2028:7:45"
2212
2212
  },
2213
2213
  "scope": 17761,
2214
- "src": "1965:70:45",
2214
+ "src": "1966:70:45",
2215
2215
  "stateMutability": "view",
2216
2216
  "virtual": false,
2217
2217
  "visibility": "external"
@@ -2224,7 +2224,7 @@
2224
2224
  "documentation": {
2225
2225
  "id": 17446,
2226
2226
  "nodeType": "StructuredDocumentation",
2227
- "src": "2222:49:45",
2227
+ "src": "2223:49:45",
2228
2228
  "text": " @dev See {IERC20-totalSupply}."
2229
2229
  },
2230
2230
  "functionSelector": "18160ddd",
@@ -2233,7 +2233,7 @@
2233
2233
  "kind": "function",
2234
2234
  "modifiers": [],
2235
2235
  "name": "totalSupply",
2236
- "nameLocation": "2285:11:45",
2236
+ "nameLocation": "2286:11:45",
2237
2237
  "nodeType": "FunctionDefinition",
2238
2238
  "overrides": {
2239
2239
  "id": 17450,
@@ -2244,23 +2244,23 @@
2244
2244
  "name": "IERC777",
2245
2245
  "nodeType": "IdentifierPath",
2246
2246
  "referencedDeclaration": 2145,
2247
- "src": "2322:7:45"
2247
+ "src": "2323:7:45"
2248
2248
  },
2249
2249
  {
2250
2250
  "id": 17449,
2251
2251
  "name": "IERC20",
2252
2252
  "nodeType": "IdentifierPath",
2253
2253
  "referencedDeclaration": 1520,
2254
- "src": "2331:6:45"
2254
+ "src": "2332:6:45"
2255
2255
  }
2256
2256
  ],
2257
- "src": "2313:25:45"
2257
+ "src": "2314:25:45"
2258
2258
  },
2259
2259
  "parameters": {
2260
2260
  "id": 17447,
2261
2261
  "nodeType": "ParameterList",
2262
2262
  "parameters": [],
2263
- "src": "2296:2:45"
2263
+ "src": "2297:2:45"
2264
2264
  },
2265
2265
  "returnParameters": {
2266
2266
  "id": 17453,
@@ -2274,7 +2274,7 @@
2274
2274
  "nameLocation": "-1:-1:-1",
2275
2275
  "nodeType": "VariableDeclaration",
2276
2276
  "scope": 17454,
2277
- "src": "2348:7:45",
2277
+ "src": "2349:7:45",
2278
2278
  "stateVariable": false,
2279
2279
  "storageLocation": "default",
2280
2280
  "typeDescriptions": {
@@ -2285,7 +2285,7 @@
2285
2285
  "id": 17451,
2286
2286
  "name": "uint256",
2287
2287
  "nodeType": "ElementaryTypeName",
2288
- "src": "2348:7:45",
2288
+ "src": "2349:7:45",
2289
2289
  "typeDescriptions": {
2290
2290
  "typeIdentifier": "t_uint256",
2291
2291
  "typeString": "uint256"
@@ -2294,10 +2294,10 @@
2294
2294
  "visibility": "internal"
2295
2295
  }
2296
2296
  ],
2297
- "src": "2347:9:45"
2297
+ "src": "2348:9:45"
2298
2298
  },
2299
2299
  "scope": 17761,
2300
- "src": "2276:81:45",
2300
+ "src": "2277:81:45",
2301
2301
  "stateMutability": "view",
2302
2302
  "virtual": false,
2303
2303
  "visibility": "external"
@@ -2310,7 +2310,7 @@
2310
2310
  "documentation": {
2311
2311
  "id": 17455,
2312
2312
  "nodeType": "StructuredDocumentation",
2313
- "src": "2363:83:45",
2313
+ "src": "2364:83:45",
2314
2314
  "text": " @dev Returns the amount of tokens owned by an account (`owner`)."
2315
2315
  },
2316
2316
  "functionSelector": "70a08231",
@@ -2319,7 +2319,7 @@
2319
2319
  "kind": "function",
2320
2320
  "modifiers": [],
2321
2321
  "name": "balanceOf",
2322
- "nameLocation": "2460:9:45",
2322
+ "nameLocation": "2461:9:45",
2323
2323
  "nodeType": "FunctionDefinition",
2324
2324
  "overrides": {
2325
2325
  "id": 17461,
@@ -2330,17 +2330,17 @@
2330
2330
  "name": "IERC777",
2331
2331
  "nodeType": "IdentifierPath",
2332
2332
  "referencedDeclaration": 2145,
2333
- "src": "2510:7:45"
2333
+ "src": "2511:7:45"
2334
2334
  },
2335
2335
  {
2336
2336
  "id": 17460,
2337
2337
  "name": "IERC20",
2338
2338
  "nodeType": "IdentifierPath",
2339
2339
  "referencedDeclaration": 1520,
2340
- "src": "2519:6:45"
2340
+ "src": "2520:6:45"
2341
2341
  }
2342
2342
  ],
2343
- "src": "2501:25:45"
2343
+ "src": "2502:25:45"
2344
2344
  },
2345
2345
  "parameters": {
2346
2346
  "id": 17458,
@@ -2351,10 +2351,10 @@
2351
2351
  "id": 17457,
2352
2352
  "mutability": "mutable",
2353
2353
  "name": "account",
2354
- "nameLocation": "2478:7:45",
2354
+ "nameLocation": "2479:7:45",
2355
2355
  "nodeType": "VariableDeclaration",
2356
2356
  "scope": 17465,
2357
- "src": "2470:15:45",
2357
+ "src": "2471:15:45",
2358
2358
  "stateVariable": false,
2359
2359
  "storageLocation": "default",
2360
2360
  "typeDescriptions": {
@@ -2365,7 +2365,7 @@
2365
2365
  "id": 17456,
2366
2366
  "name": "address",
2367
2367
  "nodeType": "ElementaryTypeName",
2368
- "src": "2470:7:45",
2368
+ "src": "2471:7:45",
2369
2369
  "stateMutability": "nonpayable",
2370
2370
  "typeDescriptions": {
2371
2371
  "typeIdentifier": "t_address",
@@ -2375,7 +2375,7 @@
2375
2375
  "visibility": "internal"
2376
2376
  }
2377
2377
  ],
2378
- "src": "2469:17:45"
2378
+ "src": "2470:17:45"
2379
2379
  },
2380
2380
  "returnParameters": {
2381
2381
  "id": 17464,
@@ -2386,10 +2386,10 @@
2386
2386
  "id": 17463,
2387
2387
  "mutability": "mutable",
2388
2388
  "name": "balance",
2389
- "nameLocation": "2543:7:45",
2389
+ "nameLocation": "2544:7:45",
2390
2390
  "nodeType": "VariableDeclaration",
2391
2391
  "scope": 17465,
2392
- "src": "2535:15:45",
2392
+ "src": "2536:15:45",
2393
2393
  "stateVariable": false,
2394
2394
  "storageLocation": "default",
2395
2395
  "typeDescriptions": {
@@ -2400,7 +2400,7 @@
2400
2400
  "id": 17462,
2401
2401
  "name": "uint256",
2402
2402
  "nodeType": "ElementaryTypeName",
2403
- "src": "2535:7:45",
2403
+ "src": "2536:7:45",
2404
2404
  "typeDescriptions": {
2405
2405
  "typeIdentifier": "t_uint256",
2406
2406
  "typeString": "uint256"
@@ -2409,10 +2409,10 @@
2409
2409
  "visibility": "internal"
2410
2410
  }
2411
2411
  ],
2412
- "src": "2534:17:45"
2412
+ "src": "2535:17:45"
2413
2413
  },
2414
2414
  "scope": 17761,
2415
- "src": "2451:101:45",
2415
+ "src": "2452:101:45",
2416
2416
  "stateMutability": "view",
2417
2417
  "virtual": false,
2418
2418
  "visibility": "external"
@@ -2424,8 +2424,8 @@
2424
2424
  "documentation": {
2425
2425
  "id": 17466,
2426
2426
  "nodeType": "StructuredDocumentation",
2427
- "src": "2730:225:45",
2428
- "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n @return Returns Success a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
2427
+ "src": "2731:233:45",
2428
+ "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n @return Returns Success a boolean value indicating whether the operation succeeded.\n @custom:emits a {Transfer} event."
2429
2429
  },
2430
2430
  "functionSelector": "a9059cbb",
2431
2431
  "id": 17477,
@@ -2433,7 +2433,7 @@
2433
2433
  "kind": "function",
2434
2434
  "modifiers": [],
2435
2435
  "name": "transfer",
2436
- "nameLocation": "2969:8:45",
2436
+ "nameLocation": "2978:8:45",
2437
2437
  "nodeType": "FunctionDefinition",
2438
2438
  "overrides": {
2439
2439
  "id": 17473,
@@ -2444,10 +2444,10 @@
2444
2444
  "name": "IERC20",
2445
2445
  "nodeType": "IdentifierPath",
2446
2446
  "referencedDeclaration": 1520,
2447
- "src": "3031:6:45"
2447
+ "src": "3040:6:45"
2448
2448
  }
2449
2449
  ],
2450
- "src": "3022:16:45"
2450
+ "src": "3031:16:45"
2451
2451
  },
2452
2452
  "parameters": {
2453
2453
  "id": 17471,
@@ -2458,10 +2458,10 @@
2458
2458
  "id": 17468,
2459
2459
  "mutability": "mutable",
2460
2460
  "name": "recipient",
2461
- "nameLocation": "2986:9:45",
2461
+ "nameLocation": "2995:9:45",
2462
2462
  "nodeType": "VariableDeclaration",
2463
2463
  "scope": 17477,
2464
- "src": "2978:17:45",
2464
+ "src": "2987:17:45",
2465
2465
  "stateVariable": false,
2466
2466
  "storageLocation": "default",
2467
2467
  "typeDescriptions": {
@@ -2472,7 +2472,7 @@
2472
2472
  "id": 17467,
2473
2473
  "name": "address",
2474
2474
  "nodeType": "ElementaryTypeName",
2475
- "src": "2978:7:45",
2475
+ "src": "2987:7:45",
2476
2476
  "stateMutability": "nonpayable",
2477
2477
  "typeDescriptions": {
2478
2478
  "typeIdentifier": "t_address",
@@ -2486,10 +2486,10 @@
2486
2486
  "id": 17470,
2487
2487
  "mutability": "mutable",
2488
2488
  "name": "amount",
2489
- "nameLocation": "3005:6:45",
2489
+ "nameLocation": "3014:6:45",
2490
2490
  "nodeType": "VariableDeclaration",
2491
2491
  "scope": 17477,
2492
- "src": "2997:14:45",
2492
+ "src": "3006:14:45",
2493
2493
  "stateVariable": false,
2494
2494
  "storageLocation": "default",
2495
2495
  "typeDescriptions": {
@@ -2500,7 +2500,7 @@
2500
2500
  "id": 17469,
2501
2501
  "name": "uint256",
2502
2502
  "nodeType": "ElementaryTypeName",
2503
- "src": "2997:7:45",
2503
+ "src": "3006:7:45",
2504
2504
  "typeDescriptions": {
2505
2505
  "typeIdentifier": "t_uint256",
2506
2506
  "typeString": "uint256"
@@ -2509,7 +2509,7 @@
2509
2509
  "visibility": "internal"
2510
2510
  }
2511
2511
  ],
2512
- "src": "2977:35:45"
2512
+ "src": "2986:35:45"
2513
2513
  },
2514
2514
  "returnParameters": {
2515
2515
  "id": 17476,
@@ -2523,7 +2523,7 @@
2523
2523
  "nameLocation": "-1:-1:-1",
2524
2524
  "nodeType": "VariableDeclaration",
2525
2525
  "scope": 17477,
2526
- "src": "3048:4:45",
2526
+ "src": "3057:4:45",
2527
2527
  "stateVariable": false,
2528
2528
  "storageLocation": "default",
2529
2529
  "typeDescriptions": {
@@ -2534,7 +2534,7 @@
2534
2534
  "id": 17474,
2535
2535
  "name": "bool",
2536
2536
  "nodeType": "ElementaryTypeName",
2537
- "src": "3048:4:45",
2537
+ "src": "3057:4:45",
2538
2538
  "typeDescriptions": {
2539
2539
  "typeIdentifier": "t_bool",
2540
2540
  "typeString": "bool"
@@ -2543,10 +2543,10 @@
2543
2543
  "visibility": "internal"
2544
2544
  }
2545
2545
  ],
2546
- "src": "3047:6:45"
2546
+ "src": "3056:6:45"
2547
2547
  },
2548
2548
  "scope": 17761,
2549
- "src": "2960:94:45",
2549
+ "src": "2969:94:45",
2550
2550
  "stateMutability": "nonpayable",
2551
2551
  "virtual": false,
2552
2552
  "visibility": "external"
@@ -2558,8 +2558,8 @@
2558
2558
  "documentation": {
2559
2559
  "id": 17478,
2560
2560
  "nodeType": "StructuredDocumentation",
2561
- "src": "3060:280:45",
2562
- "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."
2561
+ "src": "3069:288:45",
2562
+ "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 @notice This value changes when {approve} or {transferFrom} are called."
2563
2563
  },
2564
2564
  "functionSelector": "dd62ed3e",
2565
2565
  "id": 17489,
@@ -2567,7 +2567,7 @@
2567
2567
  "kind": "function",
2568
2568
  "modifiers": [],
2569
2569
  "name": "allowance",
2570
- "nameLocation": "3354:9:45",
2570
+ "nameLocation": "3371:9:45",
2571
2571
  "nodeType": "FunctionDefinition",
2572
2572
  "overrides": {
2573
2573
  "id": 17485,
@@ -2578,10 +2578,10 @@
2578
2578
  "name": "IERC20",
2579
2579
  "nodeType": "IdentifierPath",
2580
2580
  "referencedDeclaration": 1520,
2581
- "src": "3414:6:45"
2581
+ "src": "3431:6:45"
2582
2582
  }
2583
2583
  ],
2584
- "src": "3405:16:45"
2584
+ "src": "3422:16:45"
2585
2585
  },
2586
2586
  "parameters": {
2587
2587
  "id": 17483,
@@ -2592,10 +2592,10 @@
2592
2592
  "id": 17480,
2593
2593
  "mutability": "mutable",
2594
2594
  "name": "owner",
2595
- "nameLocation": "3372:5:45",
2595
+ "nameLocation": "3389:5:45",
2596
2596
  "nodeType": "VariableDeclaration",
2597
2597
  "scope": 17489,
2598
- "src": "3364:13:45",
2598
+ "src": "3381:13:45",
2599
2599
  "stateVariable": false,
2600
2600
  "storageLocation": "default",
2601
2601
  "typeDescriptions": {
@@ -2606,7 +2606,7 @@
2606
2606
  "id": 17479,
2607
2607
  "name": "address",
2608
2608
  "nodeType": "ElementaryTypeName",
2609
- "src": "3364:7:45",
2609
+ "src": "3381:7:45",
2610
2610
  "stateMutability": "nonpayable",
2611
2611
  "typeDescriptions": {
2612
2612
  "typeIdentifier": "t_address",
@@ -2620,10 +2620,10 @@
2620
2620
  "id": 17482,
2621
2621
  "mutability": "mutable",
2622
2622
  "name": "spender",
2623
- "nameLocation": "3387:7:45",
2623
+ "nameLocation": "3404:7:45",
2624
2624
  "nodeType": "VariableDeclaration",
2625
2625
  "scope": 17489,
2626
- "src": "3379:15:45",
2626
+ "src": "3396:15:45",
2627
2627
  "stateVariable": false,
2628
2628
  "storageLocation": "default",
2629
2629
  "typeDescriptions": {
@@ -2634,7 +2634,7 @@
2634
2634
  "id": 17481,
2635
2635
  "name": "address",
2636
2636
  "nodeType": "ElementaryTypeName",
2637
- "src": "3379:7:45",
2637
+ "src": "3396:7:45",
2638
2638
  "stateMutability": "nonpayable",
2639
2639
  "typeDescriptions": {
2640
2640
  "typeIdentifier": "t_address",
@@ -2644,7 +2644,7 @@
2644
2644
  "visibility": "internal"
2645
2645
  }
2646
2646
  ],
2647
- "src": "3363:32:45"
2647
+ "src": "3380:32:45"
2648
2648
  },
2649
2649
  "returnParameters": {
2650
2650
  "id": 17488,
@@ -2658,7 +2658,7 @@
2658
2658
  "nameLocation": "-1:-1:-1",
2659
2659
  "nodeType": "VariableDeclaration",
2660
2660
  "scope": 17489,
2661
- "src": "3436:7:45",
2661
+ "src": "3453:7:45",
2662
2662
  "stateVariable": false,
2663
2663
  "storageLocation": "default",
2664
2664
  "typeDescriptions": {
@@ -2669,7 +2669,7 @@
2669
2669
  "id": 17486,
2670
2670
  "name": "uint256",
2671
2671
  "nodeType": "ElementaryTypeName",
2672
- "src": "3436:7:45",
2672
+ "src": "3453:7:45",
2673
2673
  "typeDescriptions": {
2674
2674
  "typeIdentifier": "t_uint256",
2675
2675
  "typeString": "uint256"
@@ -2678,10 +2678,10 @@
2678
2678
  "visibility": "internal"
2679
2679
  }
2680
2680
  ],
2681
- "src": "3435:9:45"
2681
+ "src": "3452:9:45"
2682
2682
  },
2683
2683
  "scope": 17761,
2684
- "src": "3345:100:45",
2684
+ "src": "3362:100:45",
2685
2685
  "stateMutability": "view",
2686
2686
  "virtual": false,
2687
2687
  "visibility": "external"
@@ -2693,8 +2693,8 @@
2693
2693
  "documentation": {
2694
2694
  "id": 17490,
2695
2695
  "nodeType": "StructuredDocumentation",
2696
- "src": "3451:658:45",
2697
- "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n @return Returns Success 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."
2696
+ "src": "3468:668:45",
2697
+ "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n @return Returns Success a boolean value indicating whether the operation succeeded.\n @custom:note 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 @custom:emits an {Approval} event."
2698
2698
  },
2699
2699
  "functionSelector": "095ea7b3",
2700
2700
  "id": 17501,
@@ -2702,7 +2702,7 @@
2702
2702
  "kind": "function",
2703
2703
  "modifiers": [],
2704
2704
  "name": "approve",
2705
- "nameLocation": "4123:7:45",
2705
+ "nameLocation": "4150:7:45",
2706
2706
  "nodeType": "FunctionDefinition",
2707
2707
  "overrides": {
2708
2708
  "id": 17497,
@@ -2713,10 +2713,10 @@
2713
2713
  "name": "IERC20",
2714
2714
  "nodeType": "IdentifierPath",
2715
2715
  "referencedDeclaration": 1520,
2716
- "src": "4182:6:45"
2716
+ "src": "4209:6:45"
2717
2717
  }
2718
2718
  ],
2719
- "src": "4173:16:45"
2719
+ "src": "4200:16:45"
2720
2720
  },
2721
2721
  "parameters": {
2722
2722
  "id": 17495,
@@ -2727,10 +2727,10 @@
2727
2727
  "id": 17492,
2728
2728
  "mutability": "mutable",
2729
2729
  "name": "spender",
2730
- "nameLocation": "4139:7:45",
2730
+ "nameLocation": "4166:7:45",
2731
2731
  "nodeType": "VariableDeclaration",
2732
2732
  "scope": 17501,
2733
- "src": "4131:15:45",
2733
+ "src": "4158:15:45",
2734
2734
  "stateVariable": false,
2735
2735
  "storageLocation": "default",
2736
2736
  "typeDescriptions": {
@@ -2741,7 +2741,7 @@
2741
2741
  "id": 17491,
2742
2742
  "name": "address",
2743
2743
  "nodeType": "ElementaryTypeName",
2744
- "src": "4131:7:45",
2744
+ "src": "4158:7:45",
2745
2745
  "stateMutability": "nonpayable",
2746
2746
  "typeDescriptions": {
2747
2747
  "typeIdentifier": "t_address",
@@ -2755,10 +2755,10 @@
2755
2755
  "id": 17494,
2756
2756
  "mutability": "mutable",
2757
2757
  "name": "amount",
2758
- "nameLocation": "4156:6:45",
2758
+ "nameLocation": "4183:6:45",
2759
2759
  "nodeType": "VariableDeclaration",
2760
2760
  "scope": 17501,
2761
- "src": "4148:14:45",
2761
+ "src": "4175:14:45",
2762
2762
  "stateVariable": false,
2763
2763
  "storageLocation": "default",
2764
2764
  "typeDescriptions": {
@@ -2769,7 +2769,7 @@
2769
2769
  "id": 17493,
2770
2770
  "name": "uint256",
2771
2771
  "nodeType": "ElementaryTypeName",
2772
- "src": "4148:7:45",
2772
+ "src": "4175:7:45",
2773
2773
  "typeDescriptions": {
2774
2774
  "typeIdentifier": "t_uint256",
2775
2775
  "typeString": "uint256"
@@ -2778,7 +2778,7 @@
2778
2778
  "visibility": "internal"
2779
2779
  }
2780
2780
  ],
2781
- "src": "4130:33:45"
2781
+ "src": "4157:33:45"
2782
2782
  },
2783
2783
  "returnParameters": {
2784
2784
  "id": 17500,
@@ -2792,7 +2792,7 @@
2792
2792
  "nameLocation": "-1:-1:-1",
2793
2793
  "nodeType": "VariableDeclaration",
2794
2794
  "scope": 17501,
2795
- "src": "4199:4:45",
2795
+ "src": "4226:4:45",
2796
2796
  "stateVariable": false,
2797
2797
  "storageLocation": "default",
2798
2798
  "typeDescriptions": {
@@ -2803,7 +2803,7 @@
2803
2803
  "id": 17498,
2804
2804
  "name": "bool",
2805
2805
  "nodeType": "ElementaryTypeName",
2806
- "src": "4199:4:45",
2806
+ "src": "4226:4:45",
2807
2807
  "typeDescriptions": {
2808
2808
  "typeIdentifier": "t_bool",
2809
2809
  "typeString": "bool"
@@ -2812,10 +2812,10 @@
2812
2812
  "visibility": "internal"
2813
2813
  }
2814
2814
  ],
2815
- "src": "4198:6:45"
2815
+ "src": "4225:6:45"
2816
2816
  },
2817
2817
  "scope": 17761,
2818
- "src": "4114:91:45",
2818
+ "src": "4141:91:45",
2819
2819
  "stateMutability": "nonpayable",
2820
2820
  "virtual": false,
2821
2821
  "visibility": "external"
@@ -2827,8 +2827,8 @@
2827
2827
  "documentation": {
2828
2828
  "id": 17502,
2829
2829
  "nodeType": "StructuredDocumentation",
2830
- "src": "4211:328:45",
2831
- "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 @return Returns Success a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
2830
+ "src": "4238:336:45",
2831
+ "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 @return Returns Success a boolean value indicating whether the operation succeeded.\n @custom:emits a {Transfer} event."
2832
2832
  },
2833
2833
  "functionSelector": "23b872dd",
2834
2834
  "id": 17515,
@@ -2836,7 +2836,7 @@
2836
2836
  "kind": "function",
2837
2837
  "modifiers": [],
2838
2838
  "name": "transferFrom",
2839
- "nameLocation": "4553:12:45",
2839
+ "nameLocation": "4588:12:45",
2840
2840
  "nodeType": "FunctionDefinition",
2841
2841
  "overrides": {
2842
2842
  "id": 17511,
@@ -2847,10 +2847,10 @@
2847
2847
  "name": "IERC20",
2848
2848
  "nodeType": "IdentifierPath",
2849
2849
  "referencedDeclaration": 1520,
2850
- "src": "4635:6:45"
2850
+ "src": "4670:6:45"
2851
2851
  }
2852
2852
  ],
2853
- "src": "4626:16:45"
2853
+ "src": "4661:16:45"
2854
2854
  },
2855
2855
  "parameters": {
2856
2856
  "id": 17509,
@@ -2861,10 +2861,10 @@
2861
2861
  "id": 17504,
2862
2862
  "mutability": "mutable",
2863
2863
  "name": "sender",
2864
- "nameLocation": "4574:6:45",
2864
+ "nameLocation": "4609:6:45",
2865
2865
  "nodeType": "VariableDeclaration",
2866
2866
  "scope": 17515,
2867
- "src": "4566:14:45",
2867
+ "src": "4601:14:45",
2868
2868
  "stateVariable": false,
2869
2869
  "storageLocation": "default",
2870
2870
  "typeDescriptions": {
@@ -2875,7 +2875,7 @@
2875
2875
  "id": 17503,
2876
2876
  "name": "address",
2877
2877
  "nodeType": "ElementaryTypeName",
2878
- "src": "4566:7:45",
2878
+ "src": "4601:7:45",
2879
2879
  "stateMutability": "nonpayable",
2880
2880
  "typeDescriptions": {
2881
2881
  "typeIdentifier": "t_address",
@@ -2889,10 +2889,10 @@
2889
2889
  "id": 17506,
2890
2890
  "mutability": "mutable",
2891
2891
  "name": "recipient",
2892
- "nameLocation": "4590:9:45",
2892
+ "nameLocation": "4625:9:45",
2893
2893
  "nodeType": "VariableDeclaration",
2894
2894
  "scope": 17515,
2895
- "src": "4582:17:45",
2895
+ "src": "4617:17:45",
2896
2896
  "stateVariable": false,
2897
2897
  "storageLocation": "default",
2898
2898
  "typeDescriptions": {
@@ -2903,7 +2903,7 @@
2903
2903
  "id": 17505,
2904
2904
  "name": "address",
2905
2905
  "nodeType": "ElementaryTypeName",
2906
- "src": "4582:7:45",
2906
+ "src": "4617:7:45",
2907
2907
  "stateMutability": "nonpayable",
2908
2908
  "typeDescriptions": {
2909
2909
  "typeIdentifier": "t_address",
@@ -2917,10 +2917,10 @@
2917
2917
  "id": 17508,
2918
2918
  "mutability": "mutable",
2919
2919
  "name": "amount",
2920
- "nameLocation": "4609:6:45",
2920
+ "nameLocation": "4644:6:45",
2921
2921
  "nodeType": "VariableDeclaration",
2922
2922
  "scope": 17515,
2923
- "src": "4601:14:45",
2923
+ "src": "4636:14:45",
2924
2924
  "stateVariable": false,
2925
2925
  "storageLocation": "default",
2926
2926
  "typeDescriptions": {
@@ -2931,7 +2931,7 @@
2931
2931
  "id": 17507,
2932
2932
  "name": "uint256",
2933
2933
  "nodeType": "ElementaryTypeName",
2934
- "src": "4601:7:45",
2934
+ "src": "4636:7:45",
2935
2935
  "typeDescriptions": {
2936
2936
  "typeIdentifier": "t_uint256",
2937
2937
  "typeString": "uint256"
@@ -2940,7 +2940,7 @@
2940
2940
  "visibility": "internal"
2941
2941
  }
2942
2942
  ],
2943
- "src": "4565:51:45"
2943
+ "src": "4600:51:45"
2944
2944
  },
2945
2945
  "returnParameters": {
2946
2946
  "id": 17514,
@@ -2954,7 +2954,7 @@
2954
2954
  "nameLocation": "-1:-1:-1",
2955
2955
  "nodeType": "VariableDeclaration",
2956
2956
  "scope": 17515,
2957
- "src": "4652:4:45",
2957
+ "src": "4687:4:45",
2958
2958
  "stateVariable": false,
2959
2959
  "storageLocation": "default",
2960
2960
  "typeDescriptions": {
@@ -2965,7 +2965,7 @@
2965
2965
  "id": 17512,
2966
2966
  "name": "bool",
2967
2967
  "nodeType": "ElementaryTypeName",
2968
- "src": "4652:4:45",
2968
+ "src": "4687:4:45",
2969
2969
  "typeDescriptions": {
2970
2970
  "typeIdentifier": "t_bool",
2971
2971
  "typeString": "bool"
@@ -2974,10 +2974,10 @@
2974
2974
  "visibility": "internal"
2975
2975
  }
2976
2976
  ],
2977
- "src": "4651:6:45"
2977
+ "src": "4686:6:45"
2978
2978
  },
2979
2979
  "scope": 17761,
2980
- "src": "4544:114:45",
2980
+ "src": "4579:114:45",
2981
2981
  "stateMutability": "nonpayable",
2982
2982
  "virtual": false,
2983
2983
  "visibility": "external"
@@ -2986,8 +2986,8 @@
2986
2986
  "documentation": {
2987
2987
  "id": 17516,
2988
2988
  "nodeType": "StructuredDocumentation",
2989
- "src": "4664:384:45",
2990
- "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
2989
+ "src": "4699:393:45",
2990
+ "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n @custom:emits an {Approval} event indicating the updated allowance.\n @custom:requirements \n - `spender` cannot be the zero address."
2991
2991
  },
2992
2992
  "functionSelector": "39509351",
2993
2993
  "id": 17525,
@@ -2995,7 +2995,7 @@
2995
2995
  "kind": "function",
2996
2996
  "modifiers": [],
2997
2997
  "name": "increaseAllowance",
2998
- "nameLocation": "5062:17:45",
2998
+ "nameLocation": "5106:17:45",
2999
2999
  "nodeType": "FunctionDefinition",
3000
3000
  "parameters": {
3001
3001
  "id": 17521,
@@ -3006,10 +3006,10 @@
3006
3006
  "id": 17518,
3007
3007
  "mutability": "mutable",
3008
3008
  "name": "spender",
3009
- "nameLocation": "5088:7:45",
3009
+ "nameLocation": "5132:7:45",
3010
3010
  "nodeType": "VariableDeclaration",
3011
3011
  "scope": 17525,
3012
- "src": "5080:15:45",
3012
+ "src": "5124:15:45",
3013
3013
  "stateVariable": false,
3014
3014
  "storageLocation": "default",
3015
3015
  "typeDescriptions": {
@@ -3020,7 +3020,7 @@
3020
3020
  "id": 17517,
3021
3021
  "name": "address",
3022
3022
  "nodeType": "ElementaryTypeName",
3023
- "src": "5080:7:45",
3023
+ "src": "5124:7:45",
3024
3024
  "stateMutability": "nonpayable",
3025
3025
  "typeDescriptions": {
3026
3026
  "typeIdentifier": "t_address",
@@ -3034,10 +3034,10 @@
3034
3034
  "id": 17520,
3035
3035
  "mutability": "mutable",
3036
3036
  "name": "addedValue",
3037
- "nameLocation": "5105:10:45",
3037
+ "nameLocation": "5149:10:45",
3038
3038
  "nodeType": "VariableDeclaration",
3039
3039
  "scope": 17525,
3040
- "src": "5097:18:45",
3040
+ "src": "5141:18:45",
3041
3041
  "stateVariable": false,
3042
3042
  "storageLocation": "default",
3043
3043
  "typeDescriptions": {
@@ -3048,7 +3048,7 @@
3048
3048
  "id": 17519,
3049
3049
  "name": "uint256",
3050
3050
  "nodeType": "ElementaryTypeName",
3051
- "src": "5097:7:45",
3051
+ "src": "5141:7:45",
3052
3052
  "typeDescriptions": {
3053
3053
  "typeIdentifier": "t_uint256",
3054
3054
  "typeString": "uint256"
@@ -3057,7 +3057,7 @@
3057
3057
  "visibility": "internal"
3058
3058
  }
3059
3059
  ],
3060
- "src": "5079:37:45"
3060
+ "src": "5123:37:45"
3061
3061
  },
3062
3062
  "returnParameters": {
3063
3063
  "id": 17524,
@@ -3071,7 +3071,7 @@
3071
3071
  "nameLocation": "-1:-1:-1",
3072
3072
  "nodeType": "VariableDeclaration",
3073
3073
  "scope": 17525,
3074
- "src": "5135:4:45",
3074
+ "src": "5179:4:45",
3075
3075
  "stateVariable": false,
3076
3076
  "storageLocation": "default",
3077
3077
  "typeDescriptions": {
@@ -3082,7 +3082,7 @@
3082
3082
  "id": 17522,
3083
3083
  "name": "bool",
3084
3084
  "nodeType": "ElementaryTypeName",
3085
- "src": "5135:4:45",
3085
+ "src": "5179:4:45",
3086
3086
  "typeDescriptions": {
3087
3087
  "typeIdentifier": "t_bool",
3088
3088
  "typeString": "bool"
@@ -3091,10 +3091,10 @@
3091
3091
  "visibility": "internal"
3092
3092
  }
3093
3093
  ],
3094
- "src": "5134:6:45"
3094
+ "src": "5178:6:45"
3095
3095
  },
3096
3096
  "scope": 17761,
3097
- "src": "5053:88:45",
3097
+ "src": "5097:88:45",
3098
3098
  "stateMutability": "nonpayable",
3099
3099
  "virtual": false,
3100
3100
  "visibility": "external"
@@ -3103,8 +3103,8 @@
3103
3103
  "documentation": {
3104
3104
  "id": 17526,
3105
3105
  "nodeType": "StructuredDocumentation",
3106
- "src": "5147:476:45",
3107
- "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
3106
+ "src": "5191:485:45",
3107
+ "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n @custom:emits an {Approval} event indicating the updated allowance.\n @custom:requirements \n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
3108
3108
  },
3109
3109
  "functionSelector": "a457c2d7",
3110
3110
  "id": 17535,
@@ -3112,7 +3112,7 @@
3112
3112
  "kind": "function",
3113
3113
  "modifiers": [],
3114
3114
  "name": "decreaseAllowance",
3115
- "nameLocation": "5638:17:45",
3115
+ "nameLocation": "5691:17:45",
3116
3116
  "nodeType": "FunctionDefinition",
3117
3117
  "parameters": {
3118
3118
  "id": 17531,
@@ -3123,10 +3123,10 @@
3123
3123
  "id": 17528,
3124
3124
  "mutability": "mutable",
3125
3125
  "name": "spender",
3126
- "nameLocation": "5664:7:45",
3126
+ "nameLocation": "5717:7:45",
3127
3127
  "nodeType": "VariableDeclaration",
3128
3128
  "scope": 17535,
3129
- "src": "5656:15:45",
3129
+ "src": "5709:15:45",
3130
3130
  "stateVariable": false,
3131
3131
  "storageLocation": "default",
3132
3132
  "typeDescriptions": {
@@ -3137,7 +3137,7 @@
3137
3137
  "id": 17527,
3138
3138
  "name": "address",
3139
3139
  "nodeType": "ElementaryTypeName",
3140
- "src": "5656:7:45",
3140
+ "src": "5709:7:45",
3141
3141
  "stateMutability": "nonpayable",
3142
3142
  "typeDescriptions": {
3143
3143
  "typeIdentifier": "t_address",
@@ -3151,10 +3151,10 @@
3151
3151
  "id": 17530,
3152
3152
  "mutability": "mutable",
3153
3153
  "name": "subtractedValue",
3154
- "nameLocation": "5681:15:45",
3154
+ "nameLocation": "5734:15:45",
3155
3155
  "nodeType": "VariableDeclaration",
3156
3156
  "scope": 17535,
3157
- "src": "5673:23:45",
3157
+ "src": "5726:23:45",
3158
3158
  "stateVariable": false,
3159
3159
  "storageLocation": "default",
3160
3160
  "typeDescriptions": {
@@ -3165,7 +3165,7 @@
3165
3165
  "id": 17529,
3166
3166
  "name": "uint256",
3167
3167
  "nodeType": "ElementaryTypeName",
3168
- "src": "5673:7:45",
3168
+ "src": "5726:7:45",
3169
3169
  "typeDescriptions": {
3170
3170
  "typeIdentifier": "t_uint256",
3171
3171
  "typeString": "uint256"
@@ -3174,7 +3174,7 @@
3174
3174
  "visibility": "internal"
3175
3175
  }
3176
3176
  ],
3177
- "src": "5655:42:45"
3177
+ "src": "5708:42:45"
3178
3178
  },
3179
3179
  "returnParameters": {
3180
3180
  "id": 17534,
@@ -3188,7 +3188,7 @@
3188
3188
  "nameLocation": "-1:-1:-1",
3189
3189
  "nodeType": "VariableDeclaration",
3190
3190
  "scope": 17535,
3191
- "src": "5716:4:45",
3191
+ "src": "5769:4:45",
3192
3192
  "stateVariable": false,
3193
3193
  "storageLocation": "default",
3194
3194
  "typeDescriptions": {
@@ -3199,7 +3199,7 @@
3199
3199
  "id": 17532,
3200
3200
  "name": "bool",
3201
3201
  "nodeType": "ElementaryTypeName",
3202
- "src": "5716:4:45",
3202
+ "src": "5769:4:45",
3203
3203
  "typeDescriptions": {
3204
3204
  "typeIdentifier": "t_bool",
3205
3205
  "typeString": "bool"
@@ -3208,10 +3208,10 @@
3208
3208
  "visibility": "internal"
3209
3209
  }
3210
3210
  ],
3211
- "src": "5715:6:45"
3211
+ "src": "5768:6:45"
3212
3212
  },
3213
3213
  "scope": 17761,
3214
- "src": "5629:93:45",
3214
+ "src": "5682:93:45",
3215
3215
  "stateMutability": "nonpayable",
3216
3216
  "virtual": false,
3217
3217
  "visibility": "external"
@@ -3223,8 +3223,8 @@
3223
3223
  "documentation": {
3224
3224
  "id": 17536,
3225
3225
  "nodeType": "StructuredDocumentation",
3226
- "src": "5901:302:45",
3227
- "text": " @dev Returns the smallest part of the token that is not divisible. This\n means all token operations (creation, movement and destruction) must have\n amounts that are a multiple of this number.\n For super token contracts, this value is 1 always"
3226
+ "src": "5954:315:45",
3227
+ "text": " @dev Returns the smallest part of the token that is not divisible. This\n means all token operations (creation, movement and destruction) must have\n amounts that are a multiple of this number.\n @custom:note For super token contracts, this value is always 1"
3228
3228
  },
3229
3229
  "functionSelector": "556f0dc7",
3230
3230
  "id": 17543,
@@ -3232,7 +3232,7 @@
3232
3232
  "kind": "function",
3233
3233
  "modifiers": [],
3234
3234
  "name": "granularity",
3235
- "nameLocation": "6217:11:45",
3235
+ "nameLocation": "6283:11:45",
3236
3236
  "nodeType": "FunctionDefinition",
3237
3237
  "overrides": {
3238
3238
  "id": 17539,
@@ -3243,16 +3243,16 @@
3243
3243
  "name": "IERC777",
3244
3244
  "nodeType": "IdentifierPath",
3245
3245
  "referencedDeclaration": 2145,
3246
- "src": "6254:7:45"
3246
+ "src": "6320:7:45"
3247
3247
  }
3248
3248
  ],
3249
- "src": "6245:17:45"
3249
+ "src": "6311:17:45"
3250
3250
  },
3251
3251
  "parameters": {
3252
3252
  "id": 17537,
3253
3253
  "nodeType": "ParameterList",
3254
3254
  "parameters": [],
3255
- "src": "6228:2:45"
3255
+ "src": "6294:2:45"
3256
3256
  },
3257
3257
  "returnParameters": {
3258
3258
  "id": 17542,
@@ -3266,7 +3266,7 @@
3266
3266
  "nameLocation": "-1:-1:-1",
3267
3267
  "nodeType": "VariableDeclaration",
3268
3268
  "scope": 17543,
3269
- "src": "6272:7:45",
3269
+ "src": "6338:7:45",
3270
3270
  "stateVariable": false,
3271
3271
  "storageLocation": "default",
3272
3272
  "typeDescriptions": {
@@ -3277,7 +3277,7 @@
3277
3277
  "id": 17540,
3278
3278
  "name": "uint256",
3279
3279
  "nodeType": "ElementaryTypeName",
3280
- "src": "6272:7:45",
3280
+ "src": "6338:7:45",
3281
3281
  "typeDescriptions": {
3282
3282
  "typeIdentifier": "t_uint256",
3283
3283
  "typeString": "uint256"
@@ -3286,10 +3286,10 @@
3286
3286
  "visibility": "internal"
3287
3287
  }
3288
3288
  ],
3289
- "src": "6271:9:45"
3289
+ "src": "6337:9:45"
3290
3290
  },
3291
3291
  "scope": 17761,
3292
- "src": "6208:73:45",
3292
+ "src": "6274:73:45",
3293
3293
  "stateMutability": "view",
3294
3294
  "virtual": false,
3295
3295
  "visibility": "external"
@@ -3301,8 +3301,8 @@
3301
3301
  "documentation": {
3302
3302
  "id": 17544,
3303
3303
  "nodeType": "StructuredDocumentation",
3304
- "src": "6287:600:45",
3305
- "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n @dev If send or receive hooks are registered for the caller and `recipient`,\n the corresponding functions will be called with `data` and empty\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - the caller must have at least `amount` tokens.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."
3304
+ "src": "6353:610:45",
3305
+ "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n @dev If send or receive hooks are registered for the caller and `recipient`,\n the corresponding functions will be called with `data` and empty\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n @custom:emits a {Sent} event.\n @custom:requirements \n - the caller must have at least `amount` tokens.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."
3306
3306
  },
3307
3307
  "functionSelector": "9bd9bbc6",
3308
3308
  "id": 17555,
@@ -3310,7 +3310,7 @@
3310
3310
  "kind": "function",
3311
3311
  "modifiers": [],
3312
3312
  "name": "send",
3313
- "nameLocation": "6901:4:45",
3313
+ "nameLocation": "6977:4:45",
3314
3314
  "nodeType": "FunctionDefinition",
3315
3315
  "overrides": {
3316
3316
  "id": 17553,
@@ -3321,10 +3321,10 @@
3321
3321
  "name": "IERC777",
3322
3322
  "nodeType": "IdentifierPath",
3323
3323
  "referencedDeclaration": 2145,
3324
- "src": "6980:7:45"
3324
+ "src": "7056:7:45"
3325
3325
  }
3326
3326
  ],
3327
- "src": "6971:17:45"
3327
+ "src": "7047:17:45"
3328
3328
  },
3329
3329
  "parameters": {
3330
3330
  "id": 17551,
@@ -3335,10 +3335,10 @@
3335
3335
  "id": 17546,
3336
3336
  "mutability": "mutable",
3337
3337
  "name": "recipient",
3338
- "nameLocation": "6914:9:45",
3338
+ "nameLocation": "6990:9:45",
3339
3339
  "nodeType": "VariableDeclaration",
3340
3340
  "scope": 17555,
3341
- "src": "6906:17:45",
3341
+ "src": "6982:17:45",
3342
3342
  "stateVariable": false,
3343
3343
  "storageLocation": "default",
3344
3344
  "typeDescriptions": {
@@ -3349,7 +3349,7 @@
3349
3349
  "id": 17545,
3350
3350
  "name": "address",
3351
3351
  "nodeType": "ElementaryTypeName",
3352
- "src": "6906:7:45",
3352
+ "src": "6982:7:45",
3353
3353
  "stateMutability": "nonpayable",
3354
3354
  "typeDescriptions": {
3355
3355
  "typeIdentifier": "t_address",
@@ -3363,10 +3363,10 @@
3363
3363
  "id": 17548,
3364
3364
  "mutability": "mutable",
3365
3365
  "name": "amount",
3366
- "nameLocation": "6933:6:45",
3366
+ "nameLocation": "7009:6:45",
3367
3367
  "nodeType": "VariableDeclaration",
3368
3368
  "scope": 17555,
3369
- "src": "6925:14:45",
3369
+ "src": "7001:14:45",
3370
3370
  "stateVariable": false,
3371
3371
  "storageLocation": "default",
3372
3372
  "typeDescriptions": {
@@ -3377,7 +3377,7 @@
3377
3377
  "id": 17547,
3378
3378
  "name": "uint256",
3379
3379
  "nodeType": "ElementaryTypeName",
3380
- "src": "6925:7:45",
3380
+ "src": "7001:7:45",
3381
3381
  "typeDescriptions": {
3382
3382
  "typeIdentifier": "t_uint256",
3383
3383
  "typeString": "uint256"
@@ -3390,10 +3390,10 @@
3390
3390
  "id": 17550,
3391
3391
  "mutability": "mutable",
3392
3392
  "name": "data",
3393
- "nameLocation": "6956:4:45",
3393
+ "nameLocation": "7032:4:45",
3394
3394
  "nodeType": "VariableDeclaration",
3395
3395
  "scope": 17555,
3396
- "src": "6941:19:45",
3396
+ "src": "7017:19:45",
3397
3397
  "stateVariable": false,
3398
3398
  "storageLocation": "calldata",
3399
3399
  "typeDescriptions": {
@@ -3404,7 +3404,7 @@
3404
3404
  "id": 17549,
3405
3405
  "name": "bytes",
3406
3406
  "nodeType": "ElementaryTypeName",
3407
- "src": "6941:5:45",
3407
+ "src": "7017:5:45",
3408
3408
  "typeDescriptions": {
3409
3409
  "typeIdentifier": "t_bytes_storage_ptr",
3410
3410
  "typeString": "bytes"
@@ -3413,16 +3413,16 @@
3413
3413
  "visibility": "internal"
3414
3414
  }
3415
3415
  ],
3416
- "src": "6905:56:45"
3416
+ "src": "6981:56:45"
3417
3417
  },
3418
3418
  "returnParameters": {
3419
3419
  "id": 17554,
3420
3420
  "nodeType": "ParameterList",
3421
3421
  "parameters": [],
3422
- "src": "6988:0:45"
3422
+ "src": "7064:0:45"
3423
3423
  },
3424
3424
  "scope": 17761,
3425
- "src": "6892:97:45",
3425
+ "src": "6968:97:45",
3426
3426
  "stateMutability": "nonpayable",
3427
3427
  "virtual": false,
3428
3428
  "visibility": "external"
@@ -3434,8 +3434,8 @@
3434
3434
  "documentation": {
3435
3435
  "id": 17556,
3436
3436
  "nodeType": "StructuredDocumentation",
3437
- "src": "6995:404:45",
3438
- "text": " @dev Destroys `amount` tokens from the caller's account, reducing the\n total supply.\n If a send hook is registered for the caller, the corresponding function\n will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - the caller must have at least `amount` tokens."
3437
+ "src": "7071:414:45",
3438
+ "text": " @dev Destroys `amount` tokens from the caller's account, reducing the\n total supply.\n If a send hook is registered for the caller, the corresponding function\n will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n @custom:emits a {Burned} event.\n @custom:requirements \n - the caller must have at least `amount` tokens."
3439
3439
  },
3440
3440
  "functionSelector": "fe9d9303",
3441
3441
  "id": 17565,
@@ -3443,7 +3443,7 @@
3443
3443
  "kind": "function",
3444
3444
  "modifiers": [],
3445
3445
  "name": "burn",
3446
- "nameLocation": "7413:4:45",
3446
+ "nameLocation": "7499:4:45",
3447
3447
  "nodeType": "FunctionDefinition",
3448
3448
  "overrides": {
3449
3449
  "id": 17563,
@@ -3454,10 +3454,10 @@
3454
3454
  "name": "IERC777",
3455
3455
  "nodeType": "IdentifierPath",
3456
3456
  "referencedDeclaration": 2145,
3457
- "src": "7473:7:45"
3457
+ "src": "7559:7:45"
3458
3458
  }
3459
3459
  ],
3460
- "src": "7464:17:45"
3460
+ "src": "7550:17:45"
3461
3461
  },
3462
3462
  "parameters": {
3463
3463
  "id": 17561,
@@ -3468,10 +3468,10 @@
3468
3468
  "id": 17558,
3469
3469
  "mutability": "mutable",
3470
3470
  "name": "amount",
3471
- "nameLocation": "7426:6:45",
3471
+ "nameLocation": "7512:6:45",
3472
3472
  "nodeType": "VariableDeclaration",
3473
3473
  "scope": 17565,
3474
- "src": "7418:14:45",
3474
+ "src": "7504:14:45",
3475
3475
  "stateVariable": false,
3476
3476
  "storageLocation": "default",
3477
3477
  "typeDescriptions": {
@@ -3482,7 +3482,7 @@
3482
3482
  "id": 17557,
3483
3483
  "name": "uint256",
3484
3484
  "nodeType": "ElementaryTypeName",
3485
- "src": "7418:7:45",
3485
+ "src": "7504:7:45",
3486
3486
  "typeDescriptions": {
3487
3487
  "typeIdentifier": "t_uint256",
3488
3488
  "typeString": "uint256"
@@ -3495,10 +3495,10 @@
3495
3495
  "id": 17560,
3496
3496
  "mutability": "mutable",
3497
3497
  "name": "data",
3498
- "nameLocation": "7449:4:45",
3498
+ "nameLocation": "7535:4:45",
3499
3499
  "nodeType": "VariableDeclaration",
3500
3500
  "scope": 17565,
3501
- "src": "7434:19:45",
3501
+ "src": "7520:19:45",
3502
3502
  "stateVariable": false,
3503
3503
  "storageLocation": "calldata",
3504
3504
  "typeDescriptions": {
@@ -3509,7 +3509,7 @@
3509
3509
  "id": 17559,
3510
3510
  "name": "bytes",
3511
3511
  "nodeType": "ElementaryTypeName",
3512
- "src": "7434:5:45",
3512
+ "src": "7520:5:45",
3513
3513
  "typeDescriptions": {
3514
3514
  "typeIdentifier": "t_bytes_storage_ptr",
3515
3515
  "typeString": "bytes"
@@ -3518,16 +3518,16 @@
3518
3518
  "visibility": "internal"
3519
3519
  }
3520
3520
  ],
3521
- "src": "7417:37:45"
3521
+ "src": "7503:37:45"
3522
3522
  },
3523
3523
  "returnParameters": {
3524
3524
  "id": 17564,
3525
3525
  "nodeType": "ParameterList",
3526
3526
  "parameters": [],
3527
- "src": "7481:0:45"
3527
+ "src": "7567:0:45"
3528
3528
  },
3529
3529
  "scope": 17761,
3530
- "src": "7404:78:45",
3530
+ "src": "7490:78:45",
3531
3531
  "stateMutability": "nonpayable",
3532
3532
  "virtual": false,
3533
3533
  "visibility": "external"
@@ -3539,7 +3539,7 @@
3539
3539
  "documentation": {
3540
3540
  "id": 17566,
3541
3541
  "nodeType": "StructuredDocumentation",
3542
- "src": "7488:249:45",
3542
+ "src": "7574:249:45",
3543
3543
  "text": " @dev Returns true if an account is an operator of `tokenHolder`.\n Operators can send and burn tokens on behalf of their owners. All\n accounts are their own operator.\n See {operatorSend} and {operatorBurn}."
3544
3544
  },
3545
3545
  "functionSelector": "d95b6371",
@@ -3548,7 +3548,7 @@
3548
3548
  "kind": "function",
3549
3549
  "modifiers": [],
3550
3550
  "name": "isOperatorFor",
3551
- "nameLocation": "7751:13:45",
3551
+ "nameLocation": "7837:13:45",
3552
3552
  "nodeType": "FunctionDefinition",
3553
3553
  "overrides": {
3554
3554
  "id": 17573,
@@ -3559,10 +3559,10 @@
3559
3559
  "name": "IERC777",
3560
3560
  "nodeType": "IdentifierPath",
3561
3561
  "referencedDeclaration": 2145,
3562
- "src": "7822:7:45"
3562
+ "src": "7908:7:45"
3563
3563
  }
3564
3564
  ],
3565
- "src": "7813:17:45"
3565
+ "src": "7899:17:45"
3566
3566
  },
3567
3567
  "parameters": {
3568
3568
  "id": 17571,
@@ -3573,10 +3573,10 @@
3573
3573
  "id": 17568,
3574
3574
  "mutability": "mutable",
3575
3575
  "name": "operator",
3576
- "nameLocation": "7773:8:45",
3576
+ "nameLocation": "7859:8:45",
3577
3577
  "nodeType": "VariableDeclaration",
3578
3578
  "scope": 17577,
3579
- "src": "7765:16:45",
3579
+ "src": "7851:16:45",
3580
3580
  "stateVariable": false,
3581
3581
  "storageLocation": "default",
3582
3582
  "typeDescriptions": {
@@ -3587,7 +3587,7 @@
3587
3587
  "id": 17567,
3588
3588
  "name": "address",
3589
3589
  "nodeType": "ElementaryTypeName",
3590
- "src": "7765:7:45",
3590
+ "src": "7851:7:45",
3591
3591
  "stateMutability": "nonpayable",
3592
3592
  "typeDescriptions": {
3593
3593
  "typeIdentifier": "t_address",
@@ -3601,10 +3601,10 @@
3601
3601
  "id": 17570,
3602
3602
  "mutability": "mutable",
3603
3603
  "name": "tokenHolder",
3604
- "nameLocation": "7791:11:45",
3604
+ "nameLocation": "7877:11:45",
3605
3605
  "nodeType": "VariableDeclaration",
3606
3606
  "scope": 17577,
3607
- "src": "7783:19:45",
3607
+ "src": "7869:19:45",
3608
3608
  "stateVariable": false,
3609
3609
  "storageLocation": "default",
3610
3610
  "typeDescriptions": {
@@ -3615,7 +3615,7 @@
3615
3615
  "id": 17569,
3616
3616
  "name": "address",
3617
3617
  "nodeType": "ElementaryTypeName",
3618
- "src": "7783:7:45",
3618
+ "src": "7869:7:45",
3619
3619
  "stateMutability": "nonpayable",
3620
3620
  "typeDescriptions": {
3621
3621
  "typeIdentifier": "t_address",
@@ -3625,7 +3625,7 @@
3625
3625
  "visibility": "internal"
3626
3626
  }
3627
3627
  ],
3628
- "src": "7764:39:45"
3628
+ "src": "7850:39:45"
3629
3629
  },
3630
3630
  "returnParameters": {
3631
3631
  "id": 17576,
@@ -3639,7 +3639,7 @@
3639
3639
  "nameLocation": "-1:-1:-1",
3640
3640
  "nodeType": "VariableDeclaration",
3641
3641
  "scope": 17577,
3642
- "src": "7845:4:45",
3642
+ "src": "7931:4:45",
3643
3643
  "stateVariable": false,
3644
3644
  "storageLocation": "default",
3645
3645
  "typeDescriptions": {
@@ -3650,7 +3650,7 @@
3650
3650
  "id": 17574,
3651
3651
  "name": "bool",
3652
3652
  "nodeType": "ElementaryTypeName",
3653
- "src": "7845:4:45",
3653
+ "src": "7931:4:45",
3654
3654
  "typeDescriptions": {
3655
3655
  "typeIdentifier": "t_bool",
3656
3656
  "typeString": "bool"
@@ -3659,10 +3659,10 @@
3659
3659
  "visibility": "internal"
3660
3660
  }
3661
3661
  ],
3662
- "src": "7844:6:45"
3662
+ "src": "7930:6:45"
3663
3663
  },
3664
3664
  "scope": 17761,
3665
- "src": "7742:109:45",
3665
+ "src": "7828:109:45",
3666
3666
  "stateMutability": "view",
3667
3667
  "virtual": false,
3668
3668
  "visibility": "external"
@@ -3674,8 +3674,8 @@
3674
3674
  "documentation": {
3675
3675
  "id": 17578,
3676
3676
  "nodeType": "StructuredDocumentation",
3677
- "src": "7857:233:45",
3678
- "text": " @dev Make an account an operator of the caller.\n See {isOperatorFor}.\n Emits an {AuthorizedOperator} event.\n Requirements\n - `operator` cannot be calling address."
3677
+ "src": "7943:243:45",
3678
+ "text": " @dev Make an account an operator of the caller.\n See {isOperatorFor}.\n @custom:emits an {AuthorizedOperator} event.\n @custom:requirements \n - `operator` cannot be calling address."
3679
3679
  },
3680
3680
  "functionSelector": "959b8c3f",
3681
3681
  "id": 17585,
@@ -3683,7 +3683,7 @@
3683
3683
  "kind": "function",
3684
3684
  "modifiers": [],
3685
3685
  "name": "authorizeOperator",
3686
- "nameLocation": "8104:17:45",
3686
+ "nameLocation": "8200:17:45",
3687
3687
  "nodeType": "FunctionDefinition",
3688
3688
  "overrides": {
3689
3689
  "id": 17583,
@@ -3694,10 +3694,10 @@
3694
3694
  "name": "IERC777",
3695
3695
  "nodeType": "IdentifierPath",
3696
3696
  "referencedDeclaration": 2145,
3697
- "src": "8158:7:45"
3697
+ "src": "8254:7:45"
3698
3698
  }
3699
3699
  ],
3700
- "src": "8149:17:45"
3700
+ "src": "8245:17:45"
3701
3701
  },
3702
3702
  "parameters": {
3703
3703
  "id": 17581,
@@ -3708,10 +3708,10 @@
3708
3708
  "id": 17580,
3709
3709
  "mutability": "mutable",
3710
3710
  "name": "operator",
3711
- "nameLocation": "8130:8:45",
3711
+ "nameLocation": "8226:8:45",
3712
3712
  "nodeType": "VariableDeclaration",
3713
3713
  "scope": 17585,
3714
- "src": "8122:16:45",
3714
+ "src": "8218:16:45",
3715
3715
  "stateVariable": false,
3716
3716
  "storageLocation": "default",
3717
3717
  "typeDescriptions": {
@@ -3722,7 +3722,7 @@
3722
3722
  "id": 17579,
3723
3723
  "name": "address",
3724
3724
  "nodeType": "ElementaryTypeName",
3725
- "src": "8122:7:45",
3725
+ "src": "8218:7:45",
3726
3726
  "stateMutability": "nonpayable",
3727
3727
  "typeDescriptions": {
3728
3728
  "typeIdentifier": "t_address",
@@ -3732,16 +3732,16 @@
3732
3732
  "visibility": "internal"
3733
3733
  }
3734
3734
  ],
3735
- "src": "8121:18:45"
3735
+ "src": "8217:18:45"
3736
3736
  },
3737
3737
  "returnParameters": {
3738
3738
  "id": 17584,
3739
3739
  "nodeType": "ParameterList",
3740
3740
  "parameters": [],
3741
- "src": "8166:0:45"
3741
+ "src": "8262:0:45"
3742
3742
  },
3743
3743
  "scope": 17761,
3744
- "src": "8095:72:45",
3744
+ "src": "8191:72:45",
3745
3745
  "stateMutability": "nonpayable",
3746
3746
  "virtual": false,
3747
3747
  "visibility": "external"
@@ -3753,8 +3753,8 @@
3753
3753
  "documentation": {
3754
3754
  "id": 17586,
3755
3755
  "nodeType": "StructuredDocumentation",
3756
- "src": "8173:261:45",
3757
- "text": " @dev Revoke an account's operator status for the caller.\n See {isOperatorFor} and {defaultOperators}.\n Emits a {RevokedOperator} event.\n Requirements\n - `operator` cannot be calling address."
3756
+ "src": "8269:271:45",
3757
+ "text": " @dev Revoke an account's operator status for the caller.\n See {isOperatorFor} and {defaultOperators}.\n @custom:emits a {RevokedOperator} event.\n @custom:requirements \n - `operator` cannot be calling address."
3758
3758
  },
3759
3759
  "functionSelector": "fad8b32a",
3760
3760
  "id": 17593,
@@ -3762,7 +3762,7 @@
3762
3762
  "kind": "function",
3763
3763
  "modifiers": [],
3764
3764
  "name": "revokeOperator",
3765
- "nameLocation": "8448:14:45",
3765
+ "nameLocation": "8554:14:45",
3766
3766
  "nodeType": "FunctionDefinition",
3767
3767
  "overrides": {
3768
3768
  "id": 17591,
@@ -3773,10 +3773,10 @@
3773
3773
  "name": "IERC777",
3774
3774
  "nodeType": "IdentifierPath",
3775
3775
  "referencedDeclaration": 2145,
3776
- "src": "8499:7:45"
3776
+ "src": "8605:7:45"
3777
3777
  }
3778
3778
  ],
3779
- "src": "8490:17:45"
3779
+ "src": "8596:17:45"
3780
3780
  },
3781
3781
  "parameters": {
3782
3782
  "id": 17589,
@@ -3787,10 +3787,10 @@
3787
3787
  "id": 17588,
3788
3788
  "mutability": "mutable",
3789
3789
  "name": "operator",
3790
- "nameLocation": "8471:8:45",
3790
+ "nameLocation": "8577:8:45",
3791
3791
  "nodeType": "VariableDeclaration",
3792
3792
  "scope": 17593,
3793
- "src": "8463:16:45",
3793
+ "src": "8569:16:45",
3794
3794
  "stateVariable": false,
3795
3795
  "storageLocation": "default",
3796
3796
  "typeDescriptions": {
@@ -3801,7 +3801,7 @@
3801
3801
  "id": 17587,
3802
3802
  "name": "address",
3803
3803
  "nodeType": "ElementaryTypeName",
3804
- "src": "8463:7:45",
3804
+ "src": "8569:7:45",
3805
3805
  "stateMutability": "nonpayable",
3806
3806
  "typeDescriptions": {
3807
3807
  "typeIdentifier": "t_address",
@@ -3811,16 +3811,16 @@
3811
3811
  "visibility": "internal"
3812
3812
  }
3813
3813
  ],
3814
- "src": "8462:18:45"
3814
+ "src": "8568:18:45"
3815
3815
  },
3816
3816
  "returnParameters": {
3817
3817
  "id": 17592,
3818
3818
  "nodeType": "ParameterList",
3819
3819
  "parameters": [],
3820
- "src": "8507:0:45"
3820
+ "src": "8613:0:45"
3821
3821
  },
3822
3822
  "scope": 17761,
3823
- "src": "8439:69:45",
3823
+ "src": "8545:69:45",
3824
3824
  "stateMutability": "nonpayable",
3825
3825
  "virtual": false,
3826
3826
  "visibility": "external"
@@ -3832,7 +3832,7 @@
3832
3832
  "documentation": {
3833
3833
  "id": 17594,
3834
3834
  "nodeType": "StructuredDocumentation",
3835
- "src": "8514:338:45",
3835
+ "src": "8620:338:45",
3836
3836
  "text": " @dev Returns the list of default operators. These accounts are operators\n for all token holders, even if {authorizeOperator} was never called on\n them.\n This list is immutable, but individual holders may revoke these via\n {revokeOperator}, in which case {isOperatorFor} will return false."
3837
3837
  },
3838
3838
  "functionSelector": "06e48538",
@@ -3841,7 +3841,7 @@
3841
3841
  "kind": "function",
3842
3842
  "modifiers": [],
3843
3843
  "name": "defaultOperators",
3844
- "nameLocation": "8866:16:45",
3844
+ "nameLocation": "8972:16:45",
3845
3845
  "nodeType": "FunctionDefinition",
3846
3846
  "overrides": {
3847
3847
  "id": 17597,
@@ -3852,16 +3852,16 @@
3852
3852
  "name": "IERC777",
3853
3853
  "nodeType": "IdentifierPath",
3854
3854
  "referencedDeclaration": 2145,
3855
- "src": "8903:7:45"
3855
+ "src": "9009:7:45"
3856
3856
  }
3857
3857
  ],
3858
- "src": "8894:17:45"
3858
+ "src": "9000:17:45"
3859
3859
  },
3860
3860
  "parameters": {
3861
3861
  "id": 17595,
3862
3862
  "nodeType": "ParameterList",
3863
3863
  "parameters": [],
3864
- "src": "8882:2:45"
3864
+ "src": "8988:2:45"
3865
3865
  },
3866
3866
  "returnParameters": {
3867
3867
  "id": 17601,
@@ -3875,7 +3875,7 @@
3875
3875
  "nameLocation": "-1:-1:-1",
3876
3876
  "nodeType": "VariableDeclaration",
3877
3877
  "scope": 17602,
3878
- "src": "8926:16:45",
3878
+ "src": "9032:16:45",
3879
3879
  "stateVariable": false,
3880
3880
  "storageLocation": "memory",
3881
3881
  "typeDescriptions": {
@@ -3887,7 +3887,7 @@
3887
3887
  "id": 17598,
3888
3888
  "name": "address",
3889
3889
  "nodeType": "ElementaryTypeName",
3890
- "src": "8926:7:45",
3890
+ "src": "9032:7:45",
3891
3891
  "stateMutability": "nonpayable",
3892
3892
  "typeDescriptions": {
3893
3893
  "typeIdentifier": "t_address",
@@ -3896,7 +3896,7 @@
3896
3896
  },
3897
3897
  "id": 17599,
3898
3898
  "nodeType": "ArrayTypeName",
3899
- "src": "8926:9:45",
3899
+ "src": "9032:9:45",
3900
3900
  "typeDescriptions": {
3901
3901
  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
3902
3902
  "typeString": "address[]"
@@ -3905,10 +3905,10 @@
3905
3905
  "visibility": "internal"
3906
3906
  }
3907
3907
  ],
3908
- "src": "8925:18:45"
3908
+ "src": "9031:18:45"
3909
3909
  },
3910
3910
  "scope": 17761,
3911
- "src": "8857:87:45",
3911
+ "src": "8963:87:45",
3912
3912
  "stateMutability": "view",
3913
3913
  "virtual": false,
3914
3914
  "visibility": "external"
@@ -3920,8 +3920,8 @@
3920
3920
  "documentation": {
3921
3921
  "id": 17603,
3922
3922
  "nodeType": "StructuredDocumentation",
3923
- "src": "8950:714:45",
3924
- "text": " @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n be an operator of `sender`.\n If send or receive hooks are registered for `sender` and `recipient`,\n the corresponding functions will be called with `data` and\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - `sender` cannot be the zero address.\n - `sender` must have at least `amount` tokens.\n - the caller must be an operator for `sender`.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."
3923
+ "src": "9056:724:45",
3924
+ "text": " @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n be an operator of `sender`.\n If send or receive hooks are registered for `sender` and `recipient`,\n the corresponding functions will be called with `data` and\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n @custom:emits a {Sent} event.\n @custom:requirements \n - `sender` cannot be the zero address.\n - `sender` must have at least `amount` tokens.\n - the caller must be an operator for `sender`.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."
3925
3925
  },
3926
3926
  "functionSelector": "62ad1b83",
3927
3927
  "id": 17618,
@@ -3929,7 +3929,7 @@
3929
3929
  "kind": "function",
3930
3930
  "modifiers": [],
3931
3931
  "name": "operatorSend",
3932
- "nameLocation": "9678:12:45",
3932
+ "nameLocation": "9794:12:45",
3933
3933
  "nodeType": "FunctionDefinition",
3934
3934
  "overrides": {
3935
3935
  "id": 17616,
@@ -3940,10 +3940,10 @@
3940
3940
  "name": "IERC777",
3941
3941
  "nodeType": "IdentifierPath",
3942
3942
  "referencedDeclaration": 2145,
3943
- "src": "9856:7:45"
3943
+ "src": "9972:7:45"
3944
3944
  }
3945
3945
  ],
3946
- "src": "9847:17:45"
3946
+ "src": "9963:17:45"
3947
3947
  },
3948
3948
  "parameters": {
3949
3949
  "id": 17614,
@@ -3954,10 +3954,10 @@
3954
3954
  "id": 17605,
3955
3955
  "mutability": "mutable",
3956
3956
  "name": "sender",
3957
- "nameLocation": "9708:6:45",
3957
+ "nameLocation": "9824:6:45",
3958
3958
  "nodeType": "VariableDeclaration",
3959
3959
  "scope": 17618,
3960
- "src": "9700:14:45",
3960
+ "src": "9816:14:45",
3961
3961
  "stateVariable": false,
3962
3962
  "storageLocation": "default",
3963
3963
  "typeDescriptions": {
@@ -3968,7 +3968,7 @@
3968
3968
  "id": 17604,
3969
3969
  "name": "address",
3970
3970
  "nodeType": "ElementaryTypeName",
3971
- "src": "9700:7:45",
3971
+ "src": "9816:7:45",
3972
3972
  "stateMutability": "nonpayable",
3973
3973
  "typeDescriptions": {
3974
3974
  "typeIdentifier": "t_address",
@@ -3982,10 +3982,10 @@
3982
3982
  "id": 17607,
3983
3983
  "mutability": "mutable",
3984
3984
  "name": "recipient",
3985
- "nameLocation": "9732:9:45",
3985
+ "nameLocation": "9848:9:45",
3986
3986
  "nodeType": "VariableDeclaration",
3987
3987
  "scope": 17618,
3988
- "src": "9724:17:45",
3988
+ "src": "9840:17:45",
3989
3989
  "stateVariable": false,
3990
3990
  "storageLocation": "default",
3991
3991
  "typeDescriptions": {
@@ -3996,7 +3996,7 @@
3996
3996
  "id": 17606,
3997
3997
  "name": "address",
3998
3998
  "nodeType": "ElementaryTypeName",
3999
- "src": "9724:7:45",
3999
+ "src": "9840:7:45",
4000
4000
  "stateMutability": "nonpayable",
4001
4001
  "typeDescriptions": {
4002
4002
  "typeIdentifier": "t_address",
@@ -4010,10 +4010,10 @@
4010
4010
  "id": 17609,
4011
4011
  "mutability": "mutable",
4012
4012
  "name": "amount",
4013
- "nameLocation": "9759:6:45",
4013
+ "nameLocation": "9875:6:45",
4014
4014
  "nodeType": "VariableDeclaration",
4015
4015
  "scope": 17618,
4016
- "src": "9751:14:45",
4016
+ "src": "9867:14:45",
4017
4017
  "stateVariable": false,
4018
4018
  "storageLocation": "default",
4019
4019
  "typeDescriptions": {
@@ -4024,7 +4024,7 @@
4024
4024
  "id": 17608,
4025
4025
  "name": "uint256",
4026
4026
  "nodeType": "ElementaryTypeName",
4027
- "src": "9751:7:45",
4027
+ "src": "9867:7:45",
4028
4028
  "typeDescriptions": {
4029
4029
  "typeIdentifier": "t_uint256",
4030
4030
  "typeString": "uint256"
@@ -4037,10 +4037,10 @@
4037
4037
  "id": 17611,
4038
4038
  "mutability": "mutable",
4039
4039
  "name": "data",
4040
- "nameLocation": "9790:4:45",
4040
+ "nameLocation": "9906:4:45",
4041
4041
  "nodeType": "VariableDeclaration",
4042
4042
  "scope": 17618,
4043
- "src": "9775:19:45",
4043
+ "src": "9891:19:45",
4044
4044
  "stateVariable": false,
4045
4045
  "storageLocation": "calldata",
4046
4046
  "typeDescriptions": {
@@ -4051,7 +4051,7 @@
4051
4051
  "id": 17610,
4052
4052
  "name": "bytes",
4053
4053
  "nodeType": "ElementaryTypeName",
4054
- "src": "9775:5:45",
4054
+ "src": "9891:5:45",
4055
4055
  "typeDescriptions": {
4056
4056
  "typeIdentifier": "t_bytes_storage_ptr",
4057
4057
  "typeString": "bytes"
@@ -4064,10 +4064,10 @@
4064
4064
  "id": 17613,
4065
4065
  "mutability": "mutable",
4066
4066
  "name": "operatorData",
4067
- "nameLocation": "9819:12:45",
4067
+ "nameLocation": "9935:12:45",
4068
4068
  "nodeType": "VariableDeclaration",
4069
4069
  "scope": 17618,
4070
- "src": "9804:27:45",
4070
+ "src": "9920:27:45",
4071
4071
  "stateVariable": false,
4072
4072
  "storageLocation": "calldata",
4073
4073
  "typeDescriptions": {
@@ -4078,7 +4078,7 @@
4078
4078
  "id": 17612,
4079
4079
  "name": "bytes",
4080
4080
  "nodeType": "ElementaryTypeName",
4081
- "src": "9804:5:45",
4081
+ "src": "9920:5:45",
4082
4082
  "typeDescriptions": {
4083
4083
  "typeIdentifier": "t_bytes_storage_ptr",
4084
4084
  "typeString": "bytes"
@@ -4087,16 +4087,16 @@
4087
4087
  "visibility": "internal"
4088
4088
  }
4089
4089
  ],
4090
- "src": "9690:147:45"
4090
+ "src": "9806:147:45"
4091
4091
  },
4092
4092
  "returnParameters": {
4093
4093
  "id": 17617,
4094
4094
  "nodeType": "ParameterList",
4095
4095
  "parameters": [],
4096
- "src": "9864:0:45"
4096
+ "src": "9980:0:45"
4097
4097
  },
4098
4098
  "scope": 17761,
4099
- "src": "9669:196:45",
4099
+ "src": "9785:196:45",
4100
4100
  "stateMutability": "nonpayable",
4101
4101
  "virtual": false,
4102
4102
  "visibility": "external"
@@ -4108,8 +4108,8 @@
4108
4108
  "documentation": {
4109
4109
  "id": 17619,
4110
4110
  "nodeType": "StructuredDocumentation",
4111
- "src": "9871:532:45",
4112
- "text": " @dev Destroys `amount` tokens from `account`, reducing the total supply.\n The caller must be an operator of `account`.\n If a send hook is registered for `account`, the corresponding function\n will be called with `data` and `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens.\n - the caller must be an operator for `account`."
4111
+ "src": "9987:542:45",
4112
+ "text": " @dev Destroys `amount` tokens from `account`, reducing the total supply.\n The caller must be an operator of `account`.\n If a send hook is registered for `account`, the corresponding function\n will be called with `data` and `operatorData`. See {IERC777Sender}.\n @custom:emits a {Burned} event.\n @custom:requirements \n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens.\n - the caller must be an operator for `account`."
4113
4113
  },
4114
4114
  "functionSelector": "fc673c4f",
4115
4115
  "id": 17632,
@@ -4117,7 +4117,7 @@
4117
4117
  "kind": "function",
4118
4118
  "modifiers": [],
4119
4119
  "name": "operatorBurn",
4120
- "nameLocation": "10417:12:45",
4120
+ "nameLocation": "10543:12:45",
4121
4121
  "nodeType": "FunctionDefinition",
4122
4122
  "overrides": {
4123
4123
  "id": 17630,
@@ -4128,10 +4128,10 @@
4128
4128
  "name": "IERC777",
4129
4129
  "nodeType": "IdentifierPath",
4130
4130
  "referencedDeclaration": 2145,
4131
- "src": "10569:7:45"
4131
+ "src": "10695:7:45"
4132
4132
  }
4133
4133
  ],
4134
- "src": "10560:17:45"
4134
+ "src": "10686:17:45"
4135
4135
  },
4136
4136
  "parameters": {
4137
4137
  "id": 17628,
@@ -4142,10 +4142,10 @@
4142
4142
  "id": 17621,
4143
4143
  "mutability": "mutable",
4144
4144
  "name": "account",
4145
- "nameLocation": "10447:7:45",
4145
+ "nameLocation": "10573:7:45",
4146
4146
  "nodeType": "VariableDeclaration",
4147
4147
  "scope": 17632,
4148
- "src": "10439:15:45",
4148
+ "src": "10565:15:45",
4149
4149
  "stateVariable": false,
4150
4150
  "storageLocation": "default",
4151
4151
  "typeDescriptions": {
@@ -4156,7 +4156,7 @@
4156
4156
  "id": 17620,
4157
4157
  "name": "address",
4158
4158
  "nodeType": "ElementaryTypeName",
4159
- "src": "10439:7:45",
4159
+ "src": "10565:7:45",
4160
4160
  "stateMutability": "nonpayable",
4161
4161
  "typeDescriptions": {
4162
4162
  "typeIdentifier": "t_address",
@@ -4170,10 +4170,10 @@
4170
4170
  "id": 17623,
4171
4171
  "mutability": "mutable",
4172
4172
  "name": "amount",
4173
- "nameLocation": "10472:6:45",
4173
+ "nameLocation": "10598:6:45",
4174
4174
  "nodeType": "VariableDeclaration",
4175
4175
  "scope": 17632,
4176
- "src": "10464:14:45",
4176
+ "src": "10590:14:45",
4177
4177
  "stateVariable": false,
4178
4178
  "storageLocation": "default",
4179
4179
  "typeDescriptions": {
@@ -4184,7 +4184,7 @@
4184
4184
  "id": 17622,
4185
4185
  "name": "uint256",
4186
4186
  "nodeType": "ElementaryTypeName",
4187
- "src": "10464:7:45",
4187
+ "src": "10590:7:45",
4188
4188
  "typeDescriptions": {
4189
4189
  "typeIdentifier": "t_uint256",
4190
4190
  "typeString": "uint256"
@@ -4197,10 +4197,10 @@
4197
4197
  "id": 17625,
4198
4198
  "mutability": "mutable",
4199
4199
  "name": "data",
4200
- "nameLocation": "10503:4:45",
4200
+ "nameLocation": "10629:4:45",
4201
4201
  "nodeType": "VariableDeclaration",
4202
4202
  "scope": 17632,
4203
- "src": "10488:19:45",
4203
+ "src": "10614:19:45",
4204
4204
  "stateVariable": false,
4205
4205
  "storageLocation": "calldata",
4206
4206
  "typeDescriptions": {
@@ -4211,7 +4211,7 @@
4211
4211
  "id": 17624,
4212
4212
  "name": "bytes",
4213
4213
  "nodeType": "ElementaryTypeName",
4214
- "src": "10488:5:45",
4214
+ "src": "10614:5:45",
4215
4215
  "typeDescriptions": {
4216
4216
  "typeIdentifier": "t_bytes_storage_ptr",
4217
4217
  "typeString": "bytes"
@@ -4224,10 +4224,10 @@
4224
4224
  "id": 17627,
4225
4225
  "mutability": "mutable",
4226
4226
  "name": "operatorData",
4227
- "nameLocation": "10532:12:45",
4227
+ "nameLocation": "10658:12:45",
4228
4228
  "nodeType": "VariableDeclaration",
4229
4229
  "scope": 17632,
4230
- "src": "10517:27:45",
4230
+ "src": "10643:27:45",
4231
4231
  "stateVariable": false,
4232
4232
  "storageLocation": "calldata",
4233
4233
  "typeDescriptions": {
@@ -4238,7 +4238,7 @@
4238
4238
  "id": 17626,
4239
4239
  "name": "bytes",
4240
4240
  "nodeType": "ElementaryTypeName",
4241
- "src": "10517:5:45",
4241
+ "src": "10643:5:45",
4242
4242
  "typeDescriptions": {
4243
4243
  "typeIdentifier": "t_bytes_storage_ptr",
4244
4244
  "typeString": "bytes"
@@ -4247,16 +4247,16 @@
4247
4247
  "visibility": "internal"
4248
4248
  }
4249
4249
  ],
4250
- "src": "10429:121:45"
4250
+ "src": "10555:121:45"
4251
4251
  },
4252
4252
  "returnParameters": {
4253
4253
  "id": 17631,
4254
4254
  "nodeType": "ParameterList",
4255
4255
  "parameters": [],
4256
- "src": "10577:0:45"
4256
+ "src": "10703:0:45"
4257
4257
  },
4258
4258
  "scope": 17761,
4259
- "src": "10408:170:45",
4259
+ "src": "10534:170:45",
4260
4260
  "stateMutability": "nonpayable",
4261
4261
  "virtual": false,
4262
4262
  "visibility": "external"
@@ -4265,8 +4265,8 @@
4265
4265
  "documentation": {
4266
4266
  "id": 17633,
4267
4267
  "nodeType": "StructuredDocumentation",
4268
- "src": "10786:99:45",
4269
- "text": " @dev Mint new tokens for the account\n Modifiers:\n - onlySelf"
4268
+ "src": "10912:107:45",
4269
+ "text": " @dev Mint new tokens for the account\n @custom:modifiers \n - onlySelf"
4270
4270
  },
4271
4271
  "functionSelector": "c68d4283",
4272
4272
  "id": 17642,
@@ -4274,7 +4274,7 @@
4274
4274
  "kind": "function",
4275
4275
  "modifiers": [],
4276
4276
  "name": "selfMint",
4277
- "nameLocation": "10899:8:45",
4277
+ "nameLocation": "11033:8:45",
4278
4278
  "nodeType": "FunctionDefinition",
4279
4279
  "parameters": {
4280
4280
  "id": 17640,
@@ -4285,10 +4285,10 @@
4285
4285
  "id": 17635,
4286
4286
  "mutability": "mutable",
4287
4287
  "name": "account",
4288
- "nameLocation": "10925:7:45",
4288
+ "nameLocation": "11059:7:45",
4289
4289
  "nodeType": "VariableDeclaration",
4290
4290
  "scope": 17642,
4291
- "src": "10917:15:45",
4291
+ "src": "11051:15:45",
4292
4292
  "stateVariable": false,
4293
4293
  "storageLocation": "default",
4294
4294
  "typeDescriptions": {
@@ -4299,7 +4299,7 @@
4299
4299
  "id": 17634,
4300
4300
  "name": "address",
4301
4301
  "nodeType": "ElementaryTypeName",
4302
- "src": "10917:7:45",
4302
+ "src": "11051:7:45",
4303
4303
  "stateMutability": "nonpayable",
4304
4304
  "typeDescriptions": {
4305
4305
  "typeIdentifier": "t_address",
@@ -4313,10 +4313,10 @@
4313
4313
  "id": 17637,
4314
4314
  "mutability": "mutable",
4315
4315
  "name": "amount",
4316
- "nameLocation": "10950:6:45",
4316
+ "nameLocation": "11084:6:45",
4317
4317
  "nodeType": "VariableDeclaration",
4318
4318
  "scope": 17642,
4319
- "src": "10942:14:45",
4319
+ "src": "11076:14:45",
4320
4320
  "stateVariable": false,
4321
4321
  "storageLocation": "default",
4322
4322
  "typeDescriptions": {
@@ -4327,7 +4327,7 @@
4327
4327
  "id": 17636,
4328
4328
  "name": "uint256",
4329
4329
  "nodeType": "ElementaryTypeName",
4330
- "src": "10942:7:45",
4330
+ "src": "11076:7:45",
4331
4331
  "typeDescriptions": {
4332
4332
  "typeIdentifier": "t_uint256",
4333
4333
  "typeString": "uint256"
@@ -4340,10 +4340,10 @@
4340
4340
  "id": 17639,
4341
4341
  "mutability": "mutable",
4342
4342
  "name": "userData",
4343
- "nameLocation": "10979:8:45",
4343
+ "nameLocation": "11113:8:45",
4344
4344
  "nodeType": "VariableDeclaration",
4345
4345
  "scope": 17642,
4346
- "src": "10966:21:45",
4346
+ "src": "11100:21:45",
4347
4347
  "stateVariable": false,
4348
4348
  "storageLocation": "memory",
4349
4349
  "typeDescriptions": {
@@ -4354,7 +4354,7 @@
4354
4354
  "id": 17638,
4355
4355
  "name": "bytes",
4356
4356
  "nodeType": "ElementaryTypeName",
4357
- "src": "10966:5:45",
4357
+ "src": "11100:5:45",
4358
4358
  "typeDescriptions": {
4359
4359
  "typeIdentifier": "t_bytes_storage_ptr",
4360
4360
  "typeString": "bytes"
@@ -4363,16 +4363,16 @@
4363
4363
  "visibility": "internal"
4364
4364
  }
4365
4365
  ],
4366
- "src": "10907:86:45"
4366
+ "src": "11041:86:45"
4367
4367
  },
4368
4368
  "returnParameters": {
4369
4369
  "id": 17641,
4370
4370
  "nodeType": "ParameterList",
4371
4371
  "parameters": [],
4372
- "src": "11002:0:45"
4372
+ "src": "11136:0:45"
4373
4373
  },
4374
4374
  "scope": 17761,
4375
- "src": "10890:113:45",
4375
+ "src": "11024:113:45",
4376
4376
  "stateMutability": "nonpayable",
4377
4377
  "virtual": false,
4378
4378
  "visibility": "external"
@@ -4381,8 +4381,8 @@
4381
4381
  "documentation": {
4382
4382
  "id": 17643,
4383
4383
  "nodeType": "StructuredDocumentation",
4384
- "src": "11008:99:45",
4385
- "text": " @dev Burn existing tokens for the account\n Modifiers:\n - onlySelf"
4384
+ "src": "11142:107:45",
4385
+ "text": " @dev Burn existing tokens for the account\n @custom:modifiers \n - onlySelf"
4386
4386
  },
4387
4387
  "functionSelector": "9d876741",
4388
4388
  "id": 17652,
@@ -4390,7 +4390,7 @@
4390
4390
  "kind": "function",
4391
4391
  "modifiers": [],
4392
4392
  "name": "selfBurn",
4393
- "nameLocation": "11120:8:45",
4393
+ "nameLocation": "11262:8:45",
4394
4394
  "nodeType": "FunctionDefinition",
4395
4395
  "parameters": {
4396
4396
  "id": 17650,
@@ -4401,10 +4401,10 @@
4401
4401
  "id": 17645,
4402
4402
  "mutability": "mutable",
4403
4403
  "name": "account",
4404
- "nameLocation": "11145:7:45",
4404
+ "nameLocation": "11287:7:45",
4405
4405
  "nodeType": "VariableDeclaration",
4406
4406
  "scope": 17652,
4407
- "src": "11137:15:45",
4407
+ "src": "11279:15:45",
4408
4408
  "stateVariable": false,
4409
4409
  "storageLocation": "default",
4410
4410
  "typeDescriptions": {
@@ -4415,7 +4415,7 @@
4415
4415
  "id": 17644,
4416
4416
  "name": "address",
4417
4417
  "nodeType": "ElementaryTypeName",
4418
- "src": "11137:7:45",
4418
+ "src": "11279:7:45",
4419
4419
  "stateMutability": "nonpayable",
4420
4420
  "typeDescriptions": {
4421
4421
  "typeIdentifier": "t_address",
@@ -4429,10 +4429,10 @@
4429
4429
  "id": 17647,
4430
4430
  "mutability": "mutable",
4431
4431
  "name": "amount",
4432
- "nameLocation": "11169:6:45",
4432
+ "nameLocation": "11311:6:45",
4433
4433
  "nodeType": "VariableDeclaration",
4434
4434
  "scope": 17652,
4435
- "src": "11161:14:45",
4435
+ "src": "11303:14:45",
4436
4436
  "stateVariable": false,
4437
4437
  "storageLocation": "default",
4438
4438
  "typeDescriptions": {
@@ -4443,7 +4443,7 @@
4443
4443
  "id": 17646,
4444
4444
  "name": "uint256",
4445
4445
  "nodeType": "ElementaryTypeName",
4446
- "src": "11161:7:45",
4446
+ "src": "11303:7:45",
4447
4447
  "typeDescriptions": {
4448
4448
  "typeIdentifier": "t_uint256",
4449
4449
  "typeString": "uint256"
@@ -4456,10 +4456,10 @@
4456
4456
  "id": 17649,
4457
4457
  "mutability": "mutable",
4458
4458
  "name": "userData",
4459
- "nameLocation": "11197:8:45",
4459
+ "nameLocation": "11339:8:45",
4460
4460
  "nodeType": "VariableDeclaration",
4461
4461
  "scope": 17652,
4462
- "src": "11184:21:45",
4462
+ "src": "11326:21:45",
4463
4463
  "stateVariable": false,
4464
4464
  "storageLocation": "memory",
4465
4465
  "typeDescriptions": {
@@ -4470,7 +4470,7 @@
4470
4470
  "id": 17648,
4471
4471
  "name": "bytes",
4472
4472
  "nodeType": "ElementaryTypeName",
4473
- "src": "11184:5:45",
4473
+ "src": "11326:5:45",
4474
4474
  "typeDescriptions": {
4475
4475
  "typeIdentifier": "t_bytes_storage_ptr",
4476
4476
  "typeString": "bytes"
@@ -4479,16 +4479,16 @@
4479
4479
  "visibility": "internal"
4480
4480
  }
4481
4481
  ],
4482
- "src": "11128:82:45"
4482
+ "src": "11270:82:45"
4483
4483
  },
4484
4484
  "returnParameters": {
4485
4485
  "id": 17651,
4486
4486
  "nodeType": "ParameterList",
4487
4487
  "parameters": [],
4488
- "src": "11219:0:45"
4488
+ "src": "11361:0:45"
4489
4489
  },
4490
4490
  "scope": 17761,
4491
- "src": "11111:109:45",
4491
+ "src": "11253:109:45",
4492
4492
  "stateMutability": "nonpayable",
4493
4493
  "virtual": false,
4494
4494
  "visibility": "external"
@@ -4497,8 +4497,8 @@
4497
4497
  "documentation": {
4498
4498
  "id": 17653,
4499
4499
  "nodeType": "StructuredDocumentation",
4500
- "src": "11225:237:45",
4501
- "text": " @dev Transfer `amount` tokens from the `sender` to `recipient`.\n If `spender` isn't the same as `sender`, checks if `spender` has allowance to\n spend tokens of `sender`.\n Modifiers:\n - onlySelf"
4500
+ "src": "11367:245:45",
4501
+ "text": " @dev Transfer `amount` tokens from the `sender` to `recipient`.\n If `spender` isn't the same as `sender`, checks if `spender` has allowance to\n spend tokens of `sender`.\n @custom:modifiers \n - onlySelf"
4502
4502
  },
4503
4503
  "functionSelector": "41b706be",
4504
4504
  "id": 17664,
@@ -4506,7 +4506,7 @@
4506
4506
  "kind": "function",
4507
4507
  "modifiers": [],
4508
4508
  "name": "selfTransferFrom",
4509
- "nameLocation": "11475:16:45",
4509
+ "nameLocation": "11625:16:45",
4510
4510
  "nodeType": "FunctionDefinition",
4511
4511
  "parameters": {
4512
4512
  "id": 17662,
@@ -4517,10 +4517,10 @@
4517
4517
  "id": 17655,
4518
4518
  "mutability": "mutable",
4519
4519
  "name": "sender",
4520
- "nameLocation": "11509:6:45",
4520
+ "nameLocation": "11659:6:45",
4521
4521
  "nodeType": "VariableDeclaration",
4522
4522
  "scope": 17664,
4523
- "src": "11501:14:45",
4523
+ "src": "11651:14:45",
4524
4524
  "stateVariable": false,
4525
4525
  "storageLocation": "default",
4526
4526
  "typeDescriptions": {
@@ -4531,7 +4531,7 @@
4531
4531
  "id": 17654,
4532
4532
  "name": "address",
4533
4533
  "nodeType": "ElementaryTypeName",
4534
- "src": "11501:7:45",
4534
+ "src": "11651:7:45",
4535
4535
  "stateMutability": "nonpayable",
4536
4536
  "typeDescriptions": {
4537
4537
  "typeIdentifier": "t_address",
@@ -4545,10 +4545,10 @@
4545
4545
  "id": 17657,
4546
4546
  "mutability": "mutable",
4547
4547
  "name": "spender",
4548
- "nameLocation": "11533:7:45",
4548
+ "nameLocation": "11683:7:45",
4549
4549
  "nodeType": "VariableDeclaration",
4550
4550
  "scope": 17664,
4551
- "src": "11525:15:45",
4551
+ "src": "11675:15:45",
4552
4552
  "stateVariable": false,
4553
4553
  "storageLocation": "default",
4554
4554
  "typeDescriptions": {
@@ -4559,7 +4559,7 @@
4559
4559
  "id": 17656,
4560
4560
  "name": "address",
4561
4561
  "nodeType": "ElementaryTypeName",
4562
- "src": "11525:7:45",
4562
+ "src": "11675:7:45",
4563
4563
  "stateMutability": "nonpayable",
4564
4564
  "typeDescriptions": {
4565
4565
  "typeIdentifier": "t_address",
@@ -4573,10 +4573,10 @@
4573
4573
  "id": 17659,
4574
4574
  "mutability": "mutable",
4575
4575
  "name": "recipient",
4576
- "nameLocation": "11558:9:45",
4576
+ "nameLocation": "11708:9:45",
4577
4577
  "nodeType": "VariableDeclaration",
4578
4578
  "scope": 17664,
4579
- "src": "11550:17:45",
4579
+ "src": "11700:17:45",
4580
4580
  "stateVariable": false,
4581
4581
  "storageLocation": "default",
4582
4582
  "typeDescriptions": {
@@ -4587,7 +4587,7 @@
4587
4587
  "id": 17658,
4588
4588
  "name": "address",
4589
4589
  "nodeType": "ElementaryTypeName",
4590
- "src": "11550:7:45",
4590
+ "src": "11700:7:45",
4591
4591
  "stateMutability": "nonpayable",
4592
4592
  "typeDescriptions": {
4593
4593
  "typeIdentifier": "t_address",
@@ -4601,10 +4601,10 @@
4601
4601
  "id": 17661,
4602
4602
  "mutability": "mutable",
4603
4603
  "name": "amount",
4604
- "nameLocation": "11585:6:45",
4604
+ "nameLocation": "11735:6:45",
4605
4605
  "nodeType": "VariableDeclaration",
4606
4606
  "scope": 17664,
4607
- "src": "11577:14:45",
4607
+ "src": "11727:14:45",
4608
4608
  "stateVariable": false,
4609
4609
  "storageLocation": "default",
4610
4610
  "typeDescriptions": {
@@ -4615,7 +4615,7 @@
4615
4615
  "id": 17660,
4616
4616
  "name": "uint256",
4617
4617
  "nodeType": "ElementaryTypeName",
4618
- "src": "11577:7:45",
4618
+ "src": "11727:7:45",
4619
4619
  "typeDescriptions": {
4620
4620
  "typeIdentifier": "t_uint256",
4621
4621
  "typeString": "uint256"
@@ -4624,16 +4624,16 @@
4624
4624
  "visibility": "internal"
4625
4625
  }
4626
4626
  ],
4627
- "src": "11491:105:45"
4627
+ "src": "11641:105:45"
4628
4628
  },
4629
4629
  "returnParameters": {
4630
4630
  "id": 17663,
4631
4631
  "nodeType": "ParameterList",
4632
4632
  "parameters": [],
4633
- "src": "11605:0:45"
4633
+ "src": "11755:0:45"
4634
4634
  },
4635
4635
  "scope": 17761,
4636
- "src": "11466:140:45",
4636
+ "src": "11616:140:45",
4637
4637
  "stateMutability": "nonpayable",
4638
4638
  "virtual": false,
4639
4639
  "visibility": "external"
@@ -4642,8 +4642,8 @@
4642
4642
  "documentation": {
4643
4643
  "id": 17665,
4644
4644
  "nodeType": "StructuredDocumentation",
4645
- "src": "11611:137:45",
4646
- "text": " @dev Give `spender`, `amount` allowance to spend the tokens of\n `account`.\n Modifiers:\n - onlySelf"
4645
+ "src": "11761:145:45",
4646
+ "text": " @dev Give `spender`, `amount` allowance to spend the tokens of\n `account`.\n @custom:modifiers \n - onlySelf"
4647
4647
  },
4648
4648
  "functionSelector": "66a12fb6",
4649
4649
  "id": 17674,
@@ -4651,7 +4651,7 @@
4651
4651
  "kind": "function",
4652
4652
  "modifiers": [],
4653
4653
  "name": "selfApproveFor",
4654
- "nameLocation": "11761:14:45",
4654
+ "nameLocation": "11919:14:45",
4655
4655
  "nodeType": "FunctionDefinition",
4656
4656
  "parameters": {
4657
4657
  "id": 17672,
@@ -4662,10 +4662,10 @@
4662
4662
  "id": 17667,
4663
4663
  "mutability": "mutable",
4664
4664
  "name": "account",
4665
- "nameLocation": "11793:7:45",
4665
+ "nameLocation": "11951:7:45",
4666
4666
  "nodeType": "VariableDeclaration",
4667
4667
  "scope": 17674,
4668
- "src": "11785:15:45",
4668
+ "src": "11943:15:45",
4669
4669
  "stateVariable": false,
4670
4670
  "storageLocation": "default",
4671
4671
  "typeDescriptions": {
@@ -4676,7 +4676,7 @@
4676
4676
  "id": 17666,
4677
4677
  "name": "address",
4678
4678
  "nodeType": "ElementaryTypeName",
4679
- "src": "11785:7:45",
4679
+ "src": "11943:7:45",
4680
4680
  "stateMutability": "nonpayable",
4681
4681
  "typeDescriptions": {
4682
4682
  "typeIdentifier": "t_address",
@@ -4690,10 +4690,10 @@
4690
4690
  "id": 17669,
4691
4691
  "mutability": "mutable",
4692
4692
  "name": "spender",
4693
- "nameLocation": "11818:7:45",
4693
+ "nameLocation": "11976:7:45",
4694
4694
  "nodeType": "VariableDeclaration",
4695
4695
  "scope": 17674,
4696
- "src": "11810:15:45",
4696
+ "src": "11968:15:45",
4697
4697
  "stateVariable": false,
4698
4698
  "storageLocation": "default",
4699
4699
  "typeDescriptions": {
@@ -4704,7 +4704,7 @@
4704
4704
  "id": 17668,
4705
4705
  "name": "address",
4706
4706
  "nodeType": "ElementaryTypeName",
4707
- "src": "11810:7:45",
4707
+ "src": "11968:7:45",
4708
4708
  "stateMutability": "nonpayable",
4709
4709
  "typeDescriptions": {
4710
4710
  "typeIdentifier": "t_address",
@@ -4718,10 +4718,10 @@
4718
4718
  "id": 17671,
4719
4719
  "mutability": "mutable",
4720
4720
  "name": "amount",
4721
- "nameLocation": "11843:6:45",
4721
+ "nameLocation": "12001:6:45",
4722
4722
  "nodeType": "VariableDeclaration",
4723
4723
  "scope": 17674,
4724
- "src": "11835:14:45",
4724
+ "src": "11993:14:45",
4725
4725
  "stateVariable": false,
4726
4726
  "storageLocation": "default",
4727
4727
  "typeDescriptions": {
@@ -4732,7 +4732,7 @@
4732
4732
  "id": 17670,
4733
4733
  "name": "uint256",
4734
4734
  "nodeType": "ElementaryTypeName",
4735
- "src": "11835:7:45",
4735
+ "src": "11993:7:45",
4736
4736
  "typeDescriptions": {
4737
4737
  "typeIdentifier": "t_uint256",
4738
4738
  "typeString": "uint256"
@@ -4741,16 +4741,16 @@
4741
4741
  "visibility": "internal"
4742
4742
  }
4743
4743
  ],
4744
- "src": "11775:79:45"
4744
+ "src": "11933:79:45"
4745
4745
  },
4746
4746
  "returnParameters": {
4747
4747
  "id": 17673,
4748
4748
  "nodeType": "ParameterList",
4749
4749
  "parameters": [],
4750
- "src": "11863:0:45"
4750
+ "src": "12021:0:45"
4751
4751
  },
4752
4752
  "scope": 17761,
4753
- "src": "11752:112:45",
4753
+ "src": "11910:112:45",
4754
4754
  "stateMutability": "nonpayable",
4755
4755
  "virtual": false,
4756
4756
  "visibility": "external"
@@ -4759,7 +4759,7 @@
4759
4759
  "documentation": {
4760
4760
  "id": 17675,
4761
4761
  "nodeType": "StructuredDocumentation",
4762
- "src": "12065:87:45",
4762
+ "src": "12223:87:45",
4763
4763
  "text": " @dev Transfer all available balance from `msg.sender` to `recipient`"
4764
4764
  },
4765
4765
  "functionSelector": "a3a7e7f3",
@@ -4768,7 +4768,7 @@
4768
4768
  "kind": "function",
4769
4769
  "modifiers": [],
4770
4770
  "name": "transferAll",
4771
- "nameLocation": "12166:11:45",
4771
+ "nameLocation": "12324:11:45",
4772
4772
  "nodeType": "FunctionDefinition",
4773
4773
  "parameters": {
4774
4774
  "id": 17678,
@@ -4779,10 +4779,10 @@
4779
4779
  "id": 17677,
4780
4780
  "mutability": "mutable",
4781
4781
  "name": "recipient",
4782
- "nameLocation": "12186:9:45",
4782
+ "nameLocation": "12344:9:45",
4783
4783
  "nodeType": "VariableDeclaration",
4784
4784
  "scope": 17680,
4785
- "src": "12178:17:45",
4785
+ "src": "12336:17:45",
4786
4786
  "stateVariable": false,
4787
4787
  "storageLocation": "default",
4788
4788
  "typeDescriptions": {
@@ -4793,7 +4793,7 @@
4793
4793
  "id": 17676,
4794
4794
  "name": "address",
4795
4795
  "nodeType": "ElementaryTypeName",
4796
- "src": "12178:7:45",
4796
+ "src": "12336:7:45",
4797
4797
  "stateMutability": "nonpayable",
4798
4798
  "typeDescriptions": {
4799
4799
  "typeIdentifier": "t_address",
@@ -4803,16 +4803,16 @@
4803
4803
  "visibility": "internal"
4804
4804
  }
4805
4805
  ],
4806
- "src": "12177:19:45"
4806
+ "src": "12335:19:45"
4807
4807
  },
4808
4808
  "returnParameters": {
4809
4809
  "id": 17679,
4810
4810
  "nodeType": "ParameterList",
4811
4811
  "parameters": [],
4812
- "src": "12205:0:45"
4812
+ "src": "12363:0:45"
4813
4813
  },
4814
4814
  "scope": 17761,
4815
- "src": "12157:49:45",
4815
+ "src": "12315:49:45",
4816
4816
  "stateMutability": "nonpayable",
4817
4817
  "virtual": false,
4818
4818
  "visibility": "external"
@@ -4821,7 +4821,7 @@
4821
4821
  "documentation": {
4822
4822
  "id": 17681,
4823
4823
  "nodeType": "StructuredDocumentation",
4824
- "src": "12395:110:45",
4824
+ "src": "12553:110:45",
4825
4825
  "text": " @dev Return the underlying token contract\n @return tokenAddr Underlying token address"
4826
4826
  },
4827
4827
  "functionSelector": "ee719bc8",
@@ -4830,13 +4830,13 @@
4830
4830
  "kind": "function",
4831
4831
  "modifiers": [],
4832
4832
  "name": "getUnderlyingToken",
4833
- "nameLocation": "12519:18:45",
4833
+ "nameLocation": "12677:18:45",
4834
4834
  "nodeType": "FunctionDefinition",
4835
4835
  "parameters": {
4836
4836
  "id": 17682,
4837
4837
  "nodeType": "ParameterList",
4838
4838
  "parameters": [],
4839
- "src": "12537:2:45"
4839
+ "src": "12695:2:45"
4840
4840
  },
4841
4841
  "returnParameters": {
4842
4842
  "id": 17685,
@@ -4847,10 +4847,10 @@
4847
4847
  "id": 17684,
4848
4848
  "mutability": "mutable",
4849
4849
  "name": "tokenAddr",
4850
- "nameLocation": "12570:9:45",
4850
+ "nameLocation": "12728:9:45",
4851
4851
  "nodeType": "VariableDeclaration",
4852
4852
  "scope": 17686,
4853
- "src": "12562:17:45",
4853
+ "src": "12720:17:45",
4854
4854
  "stateVariable": false,
4855
4855
  "storageLocation": "default",
4856
4856
  "typeDescriptions": {
@@ -4861,7 +4861,7 @@
4861
4861
  "id": 17683,
4862
4862
  "name": "address",
4863
4863
  "nodeType": "ElementaryTypeName",
4864
- "src": "12562:7:45",
4864
+ "src": "12720:7:45",
4865
4865
  "stateMutability": "nonpayable",
4866
4866
  "typeDescriptions": {
4867
4867
  "typeIdentifier": "t_address",
@@ -4871,10 +4871,10 @@
4871
4871
  "visibility": "internal"
4872
4872
  }
4873
4873
  ],
4874
- "src": "12561:19:45"
4874
+ "src": "12719:19:45"
4875
4875
  },
4876
4876
  "scope": 17761,
4877
- "src": "12510:71:45",
4877
+ "src": "12668:71:45",
4878
4878
  "stateMutability": "view",
4879
4879
  "virtual": false,
4880
4880
  "visibility": "external"
@@ -4883,8 +4883,8 @@
4883
4883
  "documentation": {
4884
4884
  "id": 17687,
4885
4885
  "nodeType": "StructuredDocumentation",
4886
- "src": "12587:259:45",
4887
- "text": " @dev Upgrade ERC20 to SuperToken.\n @param amount Number of tokens to be upgraded (in 18 decimals)\n NOTE: It will use ´transferFrom´ to get tokens. Before calling this\n function you should ´approve´ this contract"
4886
+ "src": "12745:262:45",
4887
+ "text": " @dev Upgrade ERC20 to SuperToken.\n @param amount Number of tokens to be upgraded (in 18 decimals)\n @custom:note It will use `transferFrom` to get tokens. Before calling this\n function you should `approve` this contract"
4888
4888
  },
4889
4889
  "functionSelector": "45977d03",
4890
4890
  "id": 17692,
@@ -4892,7 +4892,7 @@
4892
4892
  "kind": "function",
4893
4893
  "modifiers": [],
4894
4894
  "name": "upgrade",
4895
- "nameLocation": "12860:7:45",
4895
+ "nameLocation": "13021:7:45",
4896
4896
  "nodeType": "FunctionDefinition",
4897
4897
  "parameters": {
4898
4898
  "id": 17690,
@@ -4903,10 +4903,10 @@
4903
4903
  "id": 17689,
4904
4904
  "mutability": "mutable",
4905
4905
  "name": "amount",
4906
- "nameLocation": "12876:6:45",
4906
+ "nameLocation": "13037:6:45",
4907
4907
  "nodeType": "VariableDeclaration",
4908
4908
  "scope": 17692,
4909
- "src": "12868:14:45",
4909
+ "src": "13029:14:45",
4910
4910
  "stateVariable": false,
4911
4911
  "storageLocation": "default",
4912
4912
  "typeDescriptions": {
@@ -4917,7 +4917,7 @@
4917
4917
  "id": 17688,
4918
4918
  "name": "uint256",
4919
4919
  "nodeType": "ElementaryTypeName",
4920
- "src": "12868:7:45",
4920
+ "src": "13029:7:45",
4921
4921
  "typeDescriptions": {
4922
4922
  "typeIdentifier": "t_uint256",
4923
4923
  "typeString": "uint256"
@@ -4926,16 +4926,16 @@
4926
4926
  "visibility": "internal"
4927
4927
  }
4928
4928
  ],
4929
- "src": "12867:16:45"
4929
+ "src": "13028:16:45"
4930
4930
  },
4931
4931
  "returnParameters": {
4932
4932
  "id": 17691,
4933
4933
  "nodeType": "ParameterList",
4934
4934
  "parameters": [],
4935
- "src": "12892:0:45"
4935
+ "src": "13053:0:45"
4936
4936
  },
4937
4937
  "scope": 17761,
4938
- "src": "12851:42:45",
4938
+ "src": "13012:42:45",
4939
4939
  "stateMutability": "nonpayable",
4940
4940
  "virtual": false,
4941
4941
  "visibility": "external"
@@ -4944,8 +4944,8 @@
4944
4944
  "documentation": {
4945
4945
  "id": 17693,
4946
4946
  "nodeType": "StructuredDocumentation",
4947
- "src": "12899:402:45",
4948
- "text": " @dev Upgrade ERC20 to SuperToken and transfer immediately\n @param to The account to received upgraded tokens\n @param amount Number of tokens to be upgraded (in 18 decimals)\n @param data User data for the TokensRecipient callback\n NOTE: It will use ´transferFrom´ to get tokens. Before calling this\n function you should ´approve´ this contract"
4947
+ "src": "13060:405:45",
4948
+ "text": " @dev Upgrade ERC20 to SuperToken and transfer immediately\n @param to The account to received upgraded tokens\n @param amount Number of tokens to be upgraded (in 18 decimals)\n @param data User data for the TokensRecipient callback\n @custom:note It will use `transferFrom` to get tokens. Before calling this\n function you should `approve` this contract"
4949
4949
  },
4950
4950
  "functionSelector": "5b9d09cc",
4951
4951
  "id": 17702,
@@ -4953,7 +4953,7 @@
4953
4953
  "kind": "function",
4954
4954
  "modifiers": [],
4955
4955
  "name": "upgradeTo",
4956
- "nameLocation": "13315:9:45",
4956
+ "nameLocation": "13479:9:45",
4957
4957
  "nodeType": "FunctionDefinition",
4958
4958
  "parameters": {
4959
4959
  "id": 17700,
@@ -4964,10 +4964,10 @@
4964
4964
  "id": 17695,
4965
4965
  "mutability": "mutable",
4966
4966
  "name": "to",
4967
- "nameLocation": "13333:2:45",
4967
+ "nameLocation": "13497:2:45",
4968
4968
  "nodeType": "VariableDeclaration",
4969
4969
  "scope": 17702,
4970
- "src": "13325:10:45",
4970
+ "src": "13489:10:45",
4971
4971
  "stateVariable": false,
4972
4972
  "storageLocation": "default",
4973
4973
  "typeDescriptions": {
@@ -4978,7 +4978,7 @@
4978
4978
  "id": 17694,
4979
4979
  "name": "address",
4980
4980
  "nodeType": "ElementaryTypeName",
4981
- "src": "13325:7:45",
4981
+ "src": "13489:7:45",
4982
4982
  "stateMutability": "nonpayable",
4983
4983
  "typeDescriptions": {
4984
4984
  "typeIdentifier": "t_address",
@@ -4992,10 +4992,10 @@
4992
4992
  "id": 17697,
4993
4993
  "mutability": "mutable",
4994
4994
  "name": "amount",
4995
- "nameLocation": "13345:6:45",
4995
+ "nameLocation": "13509:6:45",
4996
4996
  "nodeType": "VariableDeclaration",
4997
4997
  "scope": 17702,
4998
- "src": "13337:14:45",
4998
+ "src": "13501:14:45",
4999
4999
  "stateVariable": false,
5000
5000
  "storageLocation": "default",
5001
5001
  "typeDescriptions": {
@@ -5006,7 +5006,7 @@
5006
5006
  "id": 17696,
5007
5007
  "name": "uint256",
5008
5008
  "nodeType": "ElementaryTypeName",
5009
- "src": "13337:7:45",
5009
+ "src": "13501:7:45",
5010
5010
  "typeDescriptions": {
5011
5011
  "typeIdentifier": "t_uint256",
5012
5012
  "typeString": "uint256"
@@ -5019,10 +5019,10 @@
5019
5019
  "id": 17699,
5020
5020
  "mutability": "mutable",
5021
5021
  "name": "data",
5022
- "nameLocation": "13368:4:45",
5022
+ "nameLocation": "13532:4:45",
5023
5023
  "nodeType": "VariableDeclaration",
5024
5024
  "scope": 17702,
5025
- "src": "13353:19:45",
5025
+ "src": "13517:19:45",
5026
5026
  "stateVariable": false,
5027
5027
  "storageLocation": "calldata",
5028
5028
  "typeDescriptions": {
@@ -5033,7 +5033,7 @@
5033
5033
  "id": 17698,
5034
5034
  "name": "bytes",
5035
5035
  "nodeType": "ElementaryTypeName",
5036
- "src": "13353:5:45",
5036
+ "src": "13517:5:45",
5037
5037
  "typeDescriptions": {
5038
5038
  "typeIdentifier": "t_bytes_storage_ptr",
5039
5039
  "typeString": "bytes"
@@ -5042,16 +5042,16 @@
5042
5042
  "visibility": "internal"
5043
5043
  }
5044
5044
  ],
5045
- "src": "13324:49:45"
5045
+ "src": "13488:49:45"
5046
5046
  },
5047
5047
  "returnParameters": {
5048
5048
  "id": 17701,
5049
5049
  "nodeType": "ParameterList",
5050
5050
  "parameters": [],
5051
- "src": "13382:0:45"
5051
+ "src": "13546:0:45"
5052
5052
  },
5053
5053
  "scope": 17761,
5054
- "src": "13306:77:45",
5054
+ "src": "13470:77:45",
5055
5055
  "stateMutability": "nonpayable",
5056
5056
  "virtual": false,
5057
5057
  "visibility": "external"
@@ -5061,13 +5061,13 @@
5061
5061
  "documentation": {
5062
5062
  "id": 17703,
5063
5063
  "nodeType": "StructuredDocumentation",
5064
- "src": "13389:166:45",
5064
+ "src": "13553:166:45",
5065
5065
  "text": " @dev Token upgrade event\n @param account Account where tokens are upgraded to\n @param amount Amount of tokens upgraded (in 18 decimals)"
5066
5066
  },
5067
5067
  "eventSelector": "25ca84076773b0455db53621c459ddc84fe40840e4932a62706a032566f399df",
5068
5068
  "id": 17709,
5069
5069
  "name": "TokenUpgraded",
5070
- "nameLocation": "13566:13:45",
5070
+ "nameLocation": "13730:13:45",
5071
5071
  "nodeType": "EventDefinition",
5072
5072
  "parameters": {
5073
5073
  "id": 17708,
@@ -5079,10 +5079,10 @@
5079
5079
  "indexed": true,
5080
5080
  "mutability": "mutable",
5081
5081
  "name": "account",
5082
- "nameLocation": "13605:7:45",
5082
+ "nameLocation": "13769:7:45",
5083
5083
  "nodeType": "VariableDeclaration",
5084
5084
  "scope": 17709,
5085
- "src": "13589:23:45",
5085
+ "src": "13753:23:45",
5086
5086
  "stateVariable": false,
5087
5087
  "storageLocation": "default",
5088
5088
  "typeDescriptions": {
@@ -5093,7 +5093,7 @@
5093
5093
  "id": 17704,
5094
5094
  "name": "address",
5095
5095
  "nodeType": "ElementaryTypeName",
5096
- "src": "13589:7:45",
5096
+ "src": "13753:7:45",
5097
5097
  "stateMutability": "nonpayable",
5098
5098
  "typeDescriptions": {
5099
5099
  "typeIdentifier": "t_address",
@@ -5108,10 +5108,10 @@
5108
5108
  "indexed": false,
5109
5109
  "mutability": "mutable",
5110
5110
  "name": "amount",
5111
- "nameLocation": "13630:6:45",
5111
+ "nameLocation": "13794:6:45",
5112
5112
  "nodeType": "VariableDeclaration",
5113
5113
  "scope": 17709,
5114
- "src": "13622:14:45",
5114
+ "src": "13786:14:45",
5115
5115
  "stateVariable": false,
5116
5116
  "storageLocation": "default",
5117
5117
  "typeDescriptions": {
@@ -5122,7 +5122,7 @@
5122
5122
  "id": 17706,
5123
5123
  "name": "uint256",
5124
5124
  "nodeType": "ElementaryTypeName",
5125
- "src": "13622:7:45",
5125
+ "src": "13786:7:45",
5126
5126
  "typeDescriptions": {
5127
5127
  "typeIdentifier": "t_uint256",
5128
5128
  "typeString": "uint256"
@@ -5131,15 +5131,15 @@
5131
5131
  "visibility": "internal"
5132
5132
  }
5133
5133
  ],
5134
- "src": "13579:63:45"
5134
+ "src": "13743:63:45"
5135
5135
  },
5136
- "src": "13560:83:45"
5136
+ "src": "13724:83:45"
5137
5137
  },
5138
5138
  {
5139
5139
  "documentation": {
5140
5140
  "id": 17710,
5141
5141
  "nodeType": "StructuredDocumentation",
5142
- "src": "13649:158:45",
5142
+ "src": "13813:158:45",
5143
5143
  "text": " @dev Downgrade SuperToken to ERC20.\n @dev It will call transfer to send tokens\n @param amount Number of tokens to be downgraded"
5144
5144
  },
5145
5145
  "functionSelector": "11bcc81e",
@@ -5148,7 +5148,7 @@
5148
5148
  "kind": "function",
5149
5149
  "modifiers": [],
5150
5150
  "name": "downgrade",
5151
- "nameLocation": "13821:9:45",
5151
+ "nameLocation": "13985:9:45",
5152
5152
  "nodeType": "FunctionDefinition",
5153
5153
  "parameters": {
5154
5154
  "id": 17713,
@@ -5159,10 +5159,10 @@
5159
5159
  "id": 17712,
5160
5160
  "mutability": "mutable",
5161
5161
  "name": "amount",
5162
- "nameLocation": "13839:6:45",
5162
+ "nameLocation": "14003:6:45",
5163
5163
  "nodeType": "VariableDeclaration",
5164
5164
  "scope": 17715,
5165
- "src": "13831:14:45",
5165
+ "src": "13995:14:45",
5166
5166
  "stateVariable": false,
5167
5167
  "storageLocation": "default",
5168
5168
  "typeDescriptions": {
@@ -5173,7 +5173,7 @@
5173
5173
  "id": 17711,
5174
5174
  "name": "uint256",
5175
5175
  "nodeType": "ElementaryTypeName",
5176
- "src": "13831:7:45",
5176
+ "src": "13995:7:45",
5177
5177
  "typeDescriptions": {
5178
5178
  "typeIdentifier": "t_uint256",
5179
5179
  "typeString": "uint256"
@@ -5182,16 +5182,16 @@
5182
5182
  "visibility": "internal"
5183
5183
  }
5184
5184
  ],
5185
- "src": "13830:16:45"
5185
+ "src": "13994:16:45"
5186
5186
  },
5187
5187
  "returnParameters": {
5188
5188
  "id": 17714,
5189
5189
  "nodeType": "ParameterList",
5190
5190
  "parameters": [],
5191
- "src": "13855:0:45"
5191
+ "src": "14019:0:45"
5192
5192
  },
5193
5193
  "scope": 17761,
5194
- "src": "13812:44:45",
5194
+ "src": "13976:44:45",
5195
5195
  "stateMutability": "nonpayable",
5196
5196
  "virtual": false,
5197
5197
  "visibility": "external"
@@ -5201,13 +5201,13 @@
5201
5201
  "documentation": {
5202
5202
  "id": 17716,
5203
5203
  "nodeType": "StructuredDocumentation",
5204
- "src": "13862:150:45",
5204
+ "src": "14026:150:45",
5205
5205
  "text": " @dev Token downgrade event\n @param account Account whose tokens are upgraded\n @param amount Amount of tokens downgraded"
5206
5206
  },
5207
5207
  "eventSelector": "3bc27981aebbb57f9247dc00fde9d6cd91e4b230083fec3238fedbcba1f9ab3d",
5208
5208
  "id": 17722,
5209
5209
  "name": "TokenDowngraded",
5210
- "nameLocation": "14023:15:45",
5210
+ "nameLocation": "14187:15:45",
5211
5211
  "nodeType": "EventDefinition",
5212
5212
  "parameters": {
5213
5213
  "id": 17721,
@@ -5219,10 +5219,10 @@
5219
5219
  "indexed": true,
5220
5220
  "mutability": "mutable",
5221
5221
  "name": "account",
5222
- "nameLocation": "14064:7:45",
5222
+ "nameLocation": "14228:7:45",
5223
5223
  "nodeType": "VariableDeclaration",
5224
5224
  "scope": 17722,
5225
- "src": "14048:23:45",
5225
+ "src": "14212:23:45",
5226
5226
  "stateVariable": false,
5227
5227
  "storageLocation": "default",
5228
5228
  "typeDescriptions": {
@@ -5233,7 +5233,7 @@
5233
5233
  "id": 17717,
5234
5234
  "name": "address",
5235
5235
  "nodeType": "ElementaryTypeName",
5236
- "src": "14048:7:45",
5236
+ "src": "14212:7:45",
5237
5237
  "stateMutability": "nonpayable",
5238
5238
  "typeDescriptions": {
5239
5239
  "typeIdentifier": "t_address",
@@ -5248,10 +5248,10 @@
5248
5248
  "indexed": false,
5249
5249
  "mutability": "mutable",
5250
5250
  "name": "amount",
5251
- "nameLocation": "14089:6:45",
5251
+ "nameLocation": "14253:6:45",
5252
5252
  "nodeType": "VariableDeclaration",
5253
5253
  "scope": 17722,
5254
- "src": "14081:14:45",
5254
+ "src": "14245:14:45",
5255
5255
  "stateVariable": false,
5256
5256
  "storageLocation": "default",
5257
5257
  "typeDescriptions": {
@@ -5262,7 +5262,7 @@
5262
5262
  "id": 17719,
5263
5263
  "name": "uint256",
5264
5264
  "nodeType": "ElementaryTypeName",
5265
- "src": "14081:7:45",
5265
+ "src": "14245:7:45",
5266
5266
  "typeDescriptions": {
5267
5267
  "typeIdentifier": "t_uint256",
5268
5268
  "typeString": "uint256"
@@ -5271,16 +5271,16 @@
5271
5271
  "visibility": "internal"
5272
5272
  }
5273
5273
  ],
5274
- "src": "14038:63:45"
5274
+ "src": "14202:63:45"
5275
5275
  },
5276
- "src": "14017:85:45"
5276
+ "src": "14181:85:45"
5277
5277
  },
5278
5278
  {
5279
5279
  "documentation": {
5280
5280
  "id": 17723,
5281
5281
  "nodeType": "StructuredDocumentation",
5282
- "src": "14291:269:45",
5283
- "text": " @dev Perform ERC20 approve by host contract.\n @param account The account owner to be approved.\n @param spender The spender of account owner's funds.\n @param amount Number of tokens to be approved.\n Modifiers:\n - onlyHost"
5282
+ "src": "14455:277:45",
5283
+ "text": " @dev Perform ERC20 approve by host contract.\n @param account The account owner to be approved.\n @param spender The spender of account owner's funds.\n @param amount Number of tokens to be approved.\n @custom:modifiers \n - onlyHost"
5284
5284
  },
5285
5285
  "functionSelector": "62aa5287",
5286
5286
  "id": 17732,
@@ -5288,7 +5288,7 @@
5288
5288
  "kind": "function",
5289
5289
  "modifiers": [],
5290
5290
  "name": "operationApprove",
5291
- "nameLocation": "14574:16:45",
5291
+ "nameLocation": "14746:16:45",
5292
5292
  "nodeType": "FunctionDefinition",
5293
5293
  "parameters": {
5294
5294
  "id": 17730,
@@ -5299,10 +5299,10 @@
5299
5299
  "id": 17725,
5300
5300
  "mutability": "mutable",
5301
5301
  "name": "account",
5302
- "nameLocation": "14608:7:45",
5302
+ "nameLocation": "14780:7:45",
5303
5303
  "nodeType": "VariableDeclaration",
5304
5304
  "scope": 17732,
5305
- "src": "14600:15:45",
5305
+ "src": "14772:15:45",
5306
5306
  "stateVariable": false,
5307
5307
  "storageLocation": "default",
5308
5308
  "typeDescriptions": {
@@ -5313,7 +5313,7 @@
5313
5313
  "id": 17724,
5314
5314
  "name": "address",
5315
5315
  "nodeType": "ElementaryTypeName",
5316
- "src": "14600:7:45",
5316
+ "src": "14772:7:45",
5317
5317
  "stateMutability": "nonpayable",
5318
5318
  "typeDescriptions": {
5319
5319
  "typeIdentifier": "t_address",
@@ -5327,10 +5327,10 @@
5327
5327
  "id": 17727,
5328
5328
  "mutability": "mutable",
5329
5329
  "name": "spender",
5330
- "nameLocation": "14633:7:45",
5330
+ "nameLocation": "14805:7:45",
5331
5331
  "nodeType": "VariableDeclaration",
5332
5332
  "scope": 17732,
5333
- "src": "14625:15:45",
5333
+ "src": "14797:15:45",
5334
5334
  "stateVariable": false,
5335
5335
  "storageLocation": "default",
5336
5336
  "typeDescriptions": {
@@ -5341,7 +5341,7 @@
5341
5341
  "id": 17726,
5342
5342
  "name": "address",
5343
5343
  "nodeType": "ElementaryTypeName",
5344
- "src": "14625:7:45",
5344
+ "src": "14797:7:45",
5345
5345
  "stateMutability": "nonpayable",
5346
5346
  "typeDescriptions": {
5347
5347
  "typeIdentifier": "t_address",
@@ -5355,10 +5355,10 @@
5355
5355
  "id": 17729,
5356
5356
  "mutability": "mutable",
5357
5357
  "name": "amount",
5358
- "nameLocation": "14658:6:45",
5358
+ "nameLocation": "14830:6:45",
5359
5359
  "nodeType": "VariableDeclaration",
5360
5360
  "scope": 17732,
5361
- "src": "14650:14:45",
5361
+ "src": "14822:14:45",
5362
5362
  "stateVariable": false,
5363
5363
  "storageLocation": "default",
5364
5364
  "typeDescriptions": {
@@ -5369,7 +5369,7 @@
5369
5369
  "id": 17728,
5370
5370
  "name": "uint256",
5371
5371
  "nodeType": "ElementaryTypeName",
5372
- "src": "14650:7:45",
5372
+ "src": "14822:7:45",
5373
5373
  "typeDescriptions": {
5374
5374
  "typeIdentifier": "t_uint256",
5375
5375
  "typeString": "uint256"
@@ -5378,16 +5378,16 @@
5378
5378
  "visibility": "internal"
5379
5379
  }
5380
5380
  ],
5381
- "src": "14590:80:45"
5381
+ "src": "14762:80:45"
5382
5382
  },
5383
5383
  "returnParameters": {
5384
5384
  "id": 17731,
5385
5385
  "nodeType": "ParameterList",
5386
5386
  "parameters": [],
5387
- "src": "14679:0:45"
5387
+ "src": "14851:0:45"
5388
5388
  },
5389
5389
  "scope": 17761,
5390
- "src": "14565:115:45",
5390
+ "src": "14737:115:45",
5391
5391
  "stateMutability": "nonpayable",
5392
5392
  "virtual": false,
5393
5393
  "visibility": "external"
@@ -5396,8 +5396,8 @@
5396
5396
  "documentation": {
5397
5397
  "id": 17733,
5398
5398
  "nodeType": "StructuredDocumentation",
5399
- "src": "14686:336:45",
5400
- "text": " @dev Perform ERC20 transfer from by host contract.\n @param account The account to spend sender's funds.\n @param spender The account where the funds is sent from.\n @param recipient The recipient of thefunds.\n @param amount Number of tokens to be transferred.\n Modifiers:\n - onlyHost"
5399
+ "src": "14858:344:45",
5400
+ "text": " @dev Perform ERC20 transfer from by host contract.\n @param account The account to spend sender's funds.\n @param spender The account where the funds is sent from.\n @param recipient The recipient of thefunds.\n @param amount Number of tokens to be transferred.\n @custom:modifiers \n - onlyHost"
5401
5401
  },
5402
5402
  "functionSelector": "16d055d6",
5403
5403
  "id": 17744,
@@ -5405,7 +5405,7 @@
5405
5405
  "kind": "function",
5406
5406
  "modifiers": [],
5407
5407
  "name": "operationTransferFrom",
5408
- "nameLocation": "15036:21:45",
5408
+ "nameLocation": "15216:21:45",
5409
5409
  "nodeType": "FunctionDefinition",
5410
5410
  "parameters": {
5411
5411
  "id": 17742,
@@ -5416,10 +5416,10 @@
5416
5416
  "id": 17735,
5417
5417
  "mutability": "mutable",
5418
5418
  "name": "account",
5419
- "nameLocation": "15075:7:45",
5419
+ "nameLocation": "15255:7:45",
5420
5420
  "nodeType": "VariableDeclaration",
5421
5421
  "scope": 17744,
5422
- "src": "15067:15:45",
5422
+ "src": "15247:15:45",
5423
5423
  "stateVariable": false,
5424
5424
  "storageLocation": "default",
5425
5425
  "typeDescriptions": {
@@ -5430,7 +5430,7 @@
5430
5430
  "id": 17734,
5431
5431
  "name": "address",
5432
5432
  "nodeType": "ElementaryTypeName",
5433
- "src": "15067:7:45",
5433
+ "src": "15247:7:45",
5434
5434
  "stateMutability": "nonpayable",
5435
5435
  "typeDescriptions": {
5436
5436
  "typeIdentifier": "t_address",
@@ -5444,10 +5444,10 @@
5444
5444
  "id": 17737,
5445
5445
  "mutability": "mutable",
5446
5446
  "name": "spender",
5447
- "nameLocation": "15100:7:45",
5447
+ "nameLocation": "15280:7:45",
5448
5448
  "nodeType": "VariableDeclaration",
5449
5449
  "scope": 17744,
5450
- "src": "15092:15:45",
5450
+ "src": "15272:15:45",
5451
5451
  "stateVariable": false,
5452
5452
  "storageLocation": "default",
5453
5453
  "typeDescriptions": {
@@ -5458,7 +5458,7 @@
5458
5458
  "id": 17736,
5459
5459
  "name": "address",
5460
5460
  "nodeType": "ElementaryTypeName",
5461
- "src": "15092:7:45",
5461
+ "src": "15272:7:45",
5462
5462
  "stateMutability": "nonpayable",
5463
5463
  "typeDescriptions": {
5464
5464
  "typeIdentifier": "t_address",
@@ -5472,10 +5472,10 @@
5472
5472
  "id": 17739,
5473
5473
  "mutability": "mutable",
5474
5474
  "name": "recipient",
5475
- "nameLocation": "15125:9:45",
5475
+ "nameLocation": "15305:9:45",
5476
5476
  "nodeType": "VariableDeclaration",
5477
5477
  "scope": 17744,
5478
- "src": "15117:17:45",
5478
+ "src": "15297:17:45",
5479
5479
  "stateVariable": false,
5480
5480
  "storageLocation": "default",
5481
5481
  "typeDescriptions": {
@@ -5486,7 +5486,7 @@
5486
5486
  "id": 17738,
5487
5487
  "name": "address",
5488
5488
  "nodeType": "ElementaryTypeName",
5489
- "src": "15117:7:45",
5489
+ "src": "15297:7:45",
5490
5490
  "stateMutability": "nonpayable",
5491
5491
  "typeDescriptions": {
5492
5492
  "typeIdentifier": "t_address",
@@ -5500,10 +5500,10 @@
5500
5500
  "id": 17741,
5501
5501
  "mutability": "mutable",
5502
5502
  "name": "amount",
5503
- "nameLocation": "15152:6:45",
5503
+ "nameLocation": "15332:6:45",
5504
5504
  "nodeType": "VariableDeclaration",
5505
5505
  "scope": 17744,
5506
- "src": "15144:14:45",
5506
+ "src": "15324:14:45",
5507
5507
  "stateVariable": false,
5508
5508
  "storageLocation": "default",
5509
5509
  "typeDescriptions": {
@@ -5514,7 +5514,7 @@
5514
5514
  "id": 17740,
5515
5515
  "name": "uint256",
5516
5516
  "nodeType": "ElementaryTypeName",
5517
- "src": "15144:7:45",
5517
+ "src": "15324:7:45",
5518
5518
  "typeDescriptions": {
5519
5519
  "typeIdentifier": "t_uint256",
5520
5520
  "typeString": "uint256"
@@ -5523,16 +5523,16 @@
5523
5523
  "visibility": "internal"
5524
5524
  }
5525
5525
  ],
5526
- "src": "15057:107:45"
5526
+ "src": "15237:107:45"
5527
5527
  },
5528
5528
  "returnParameters": {
5529
5529
  "id": 17743,
5530
5530
  "nodeType": "ParameterList",
5531
5531
  "parameters": [],
5532
- "src": "15173:0:45"
5532
+ "src": "15353:0:45"
5533
5533
  },
5534
5534
  "scope": 17761,
5535
- "src": "15027:147:45",
5535
+ "src": "15207:147:45",
5536
5536
  "stateMutability": "nonpayable",
5537
5537
  "virtual": false,
5538
5538
  "visibility": "external"
@@ -5541,8 +5541,8 @@
5541
5541
  "documentation": {
5542
5542
  "id": 17745,
5543
5543
  "nodeType": "StructuredDocumentation",
5544
- "src": "15180:225:45",
5545
- "text": " @dev Upgrade ERC20 to SuperToken by host contract.\n @param account The account to be changed.\n @param amount Number of tokens to be upgraded (in 18 decimals)\n Modifiers:\n - onlyHost"
5544
+ "src": "15360:233:45",
5545
+ "text": " @dev Upgrade ERC20 to SuperToken by host contract.\n @param account The account to be changed.\n @param amount Number of tokens to be upgraded (in 18 decimals)\n @custom:modifiers \n - onlyHost"
5546
5546
  },
5547
5547
  "functionSelector": "ca789464",
5548
5548
  "id": 17752,
@@ -5550,7 +5550,7 @@
5550
5550
  "kind": "function",
5551
5551
  "modifiers": [],
5552
5552
  "name": "operationUpgrade",
5553
- "nameLocation": "15419:16:45",
5553
+ "nameLocation": "15607:16:45",
5554
5554
  "nodeType": "FunctionDefinition",
5555
5555
  "parameters": {
5556
5556
  "id": 17750,
@@ -5561,10 +5561,10 @@
5561
5561
  "id": 17747,
5562
5562
  "mutability": "mutable",
5563
5563
  "name": "account",
5564
- "nameLocation": "15444:7:45",
5564
+ "nameLocation": "15632:7:45",
5565
5565
  "nodeType": "VariableDeclaration",
5566
5566
  "scope": 17752,
5567
- "src": "15436:15:45",
5567
+ "src": "15624:15:45",
5568
5568
  "stateVariable": false,
5569
5569
  "storageLocation": "default",
5570
5570
  "typeDescriptions": {
@@ -5575,7 +5575,7 @@
5575
5575
  "id": 17746,
5576
5576
  "name": "address",
5577
5577
  "nodeType": "ElementaryTypeName",
5578
- "src": "15436:7:45",
5578
+ "src": "15624:7:45",
5579
5579
  "stateMutability": "nonpayable",
5580
5580
  "typeDescriptions": {
5581
5581
  "typeIdentifier": "t_address",
@@ -5589,10 +5589,10 @@
5589
5589
  "id": 17749,
5590
5590
  "mutability": "mutable",
5591
5591
  "name": "amount",
5592
- "nameLocation": "15461:6:45",
5592
+ "nameLocation": "15649:6:45",
5593
5593
  "nodeType": "VariableDeclaration",
5594
5594
  "scope": 17752,
5595
- "src": "15453:14:45",
5595
+ "src": "15641:14:45",
5596
5596
  "stateVariable": false,
5597
5597
  "storageLocation": "default",
5598
5598
  "typeDescriptions": {
@@ -5603,7 +5603,7 @@
5603
5603
  "id": 17748,
5604
5604
  "name": "uint256",
5605
5605
  "nodeType": "ElementaryTypeName",
5606
- "src": "15453:7:45",
5606
+ "src": "15641:7:45",
5607
5607
  "typeDescriptions": {
5608
5608
  "typeIdentifier": "t_uint256",
5609
5609
  "typeString": "uint256"
@@ -5612,16 +5612,16 @@
5612
5612
  "visibility": "internal"
5613
5613
  }
5614
5614
  ],
5615
- "src": "15435:33:45"
5615
+ "src": "15623:33:45"
5616
5616
  },
5617
5617
  "returnParameters": {
5618
5618
  "id": 17751,
5619
5619
  "nodeType": "ParameterList",
5620
5620
  "parameters": [],
5621
- "src": "15477:0:45"
5621
+ "src": "15665:0:45"
5622
5622
  },
5623
5623
  "scope": 17761,
5624
- "src": "15410:68:45",
5624
+ "src": "15598:68:45",
5625
5625
  "stateMutability": "nonpayable",
5626
5626
  "virtual": false,
5627
5627
  "visibility": "external"
@@ -5630,8 +5630,8 @@
5630
5630
  "documentation": {
5631
5631
  "id": 17753,
5632
5632
  "nodeType": "StructuredDocumentation",
5633
- "src": "15484:229:45",
5634
- "text": " @dev Downgrade ERC20 to SuperToken by host contract.\n @param account The account to be changed.\n @param amount Number of tokens to be downgraded (in 18 decimals)\n Modifiers:\n - onlyHost"
5633
+ "src": "15672:237:45",
5634
+ "text": " @dev Downgrade ERC20 to SuperToken by host contract.\n @param account The account to be changed.\n @param amount Number of tokens to be downgraded (in 18 decimals)\n @custom:modifiers \n - onlyHost"
5635
5635
  },
5636
5636
  "functionSelector": "245887fc",
5637
5637
  "id": 17760,
@@ -5639,7 +5639,7 @@
5639
5639
  "kind": "function",
5640
5640
  "modifiers": [],
5641
5641
  "name": "operationDowngrade",
5642
- "nameLocation": "15727:18:45",
5642
+ "nameLocation": "15923:18:45",
5643
5643
  "nodeType": "FunctionDefinition",
5644
5644
  "parameters": {
5645
5645
  "id": 17758,
@@ -5650,10 +5650,10 @@
5650
5650
  "id": 17755,
5651
5651
  "mutability": "mutable",
5652
5652
  "name": "account",
5653
- "nameLocation": "15754:7:45",
5653
+ "nameLocation": "15950:7:45",
5654
5654
  "nodeType": "VariableDeclaration",
5655
5655
  "scope": 17760,
5656
- "src": "15746:15:45",
5656
+ "src": "15942:15:45",
5657
5657
  "stateVariable": false,
5658
5658
  "storageLocation": "default",
5659
5659
  "typeDescriptions": {
@@ -5664,7 +5664,7 @@
5664
5664
  "id": 17754,
5665
5665
  "name": "address",
5666
5666
  "nodeType": "ElementaryTypeName",
5667
- "src": "15746:7:45",
5667
+ "src": "15942:7:45",
5668
5668
  "stateMutability": "nonpayable",
5669
5669
  "typeDescriptions": {
5670
5670
  "typeIdentifier": "t_address",
@@ -5678,10 +5678,10 @@
5678
5678
  "id": 17757,
5679
5679
  "mutability": "mutable",
5680
5680
  "name": "amount",
5681
- "nameLocation": "15771:6:45",
5681
+ "nameLocation": "15967:6:45",
5682
5682
  "nodeType": "VariableDeclaration",
5683
5683
  "scope": 17760,
5684
- "src": "15763:14:45",
5684
+ "src": "15959:14:45",
5685
5685
  "stateVariable": false,
5686
5686
  "storageLocation": "default",
5687
5687
  "typeDescriptions": {
@@ -5692,7 +5692,7 @@
5692
5692
  "id": 17756,
5693
5693
  "name": "uint256",
5694
5694
  "nodeType": "ElementaryTypeName",
5695
- "src": "15763:7:45",
5695
+ "src": "15959:7:45",
5696
5696
  "typeDescriptions": {
5697
5697
  "typeIdentifier": "t_uint256",
5698
5698
  "typeString": "uint256"
@@ -5701,35 +5701,35 @@
5701
5701
  "visibility": "internal"
5702
5702
  }
5703
5703
  ],
5704
- "src": "15745:33:45"
5704
+ "src": "15941:33:45"
5705
5705
  },
5706
5706
  "returnParameters": {
5707
5707
  "id": 17759,
5708
5708
  "nodeType": "ParameterList",
5709
5709
  "parameters": [],
5710
- "src": "15787:0:45"
5710
+ "src": "15983:0:45"
5711
5711
  },
5712
5712
  "scope": 17761,
5713
- "src": "15718:70:45",
5713
+ "src": "15914:70:45",
5714
5714
  "stateMutability": "nonpayable",
5715
5715
  "virtual": false,
5716
5716
  "visibility": "external"
5717
5717
  }
5718
5718
  ],
5719
5719
  "scope": 17762,
5720
- "src": "471:15847:45",
5720
+ "src": "471:16043:45",
5721
5721
  "usedErrors": []
5722
5722
  }
5723
5723
  ],
5724
- "src": "35:16284:45"
5724
+ "src": "35:16480:45"
5725
5725
  },
5726
5726
  "compiler": {
5727
5727
  "name": "solc",
5728
- "version": "0.8.13+commit.abaa5c0e.Emscripten.clang"
5728
+ "version": "0.8.14+commit.80d49f37.Emscripten.clang"
5729
5729
  },
5730
5730
  "networks": {},
5731
5731
  "schemaVersion": "3.4.7",
5732
- "updatedAt": "2022-06-03T09:45:13.993Z",
5732
+ "updatedAt": "2022-06-20T11:32:29.696Z",
5733
5733
  "devdoc": {
5734
5734
  "author": "Superfluid",
5735
5735
  "events": {
@@ -5751,22 +5751,28 @@
5751
5751
  "kind": "dev",
5752
5752
  "methods": {
5753
5753
  "allowance(address,address)": {
5754
- "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
5754
+ "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default."
5755
5755
  },
5756
5756
  "approve(address,uint256)": {
5757
+ "custom:emits": "an {Approval} event.",
5758
+ "custom:note": "Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729",
5757
5759
  "details": "Sets `amount` as the allowance of `spender` over the caller's tokens.",
5758
5760
  "returns": {
5759
- "_0": "Returns Success a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
5761
+ "_0": "Returns Success a boolean value indicating whether the operation succeeded."
5760
5762
  }
5761
5763
  },
5762
5764
  "authorizeOperator(address)": {
5763
- "details": "Make an account an operator of the caller. See {isOperatorFor}. Emits an {AuthorizedOperator} event. Requirements - `operator` cannot be calling address."
5765
+ "custom:emits": "an {AuthorizedOperator} event.",
5766
+ "custom:requirements": " - `operator` cannot be calling address.",
5767
+ "details": "Make an account an operator of the caller. See {isOperatorFor}."
5764
5768
  },
5765
5769
  "balanceOf(address)": {
5766
5770
  "details": "Returns the amount of tokens owned by an account (`owner`)."
5767
5771
  },
5768
5772
  "burn(uint256,bytes)": {
5769
- "details": "Destroys `amount` tokens from the caller's account, reducing the total supply. If a send hook is registered for the caller, the corresponding function will be called with `data` and empty `operatorData`. See {IERC777Sender}. Emits a {Burned} event. Requirements - the caller must have at least `amount` tokens."
5773
+ "custom:emits": "a {Burned} event.",
5774
+ "custom:requirements": " - the caller must have at least `amount` tokens.",
5775
+ "details": "Destroys `amount` tokens from the caller's account, reducing the total supply. If a send hook is registered for the caller, the corresponding function will be called with `data` and empty `operatorData`. See {IERC777Sender}."
5770
5776
  },
5771
5777
  "createAgreement(bytes32,bytes32[])": {
5772
5778
  "details": "Create a new agreement",
@@ -5776,10 +5782,13 @@
5776
5782
  }
5777
5783
  },
5778
5784
  "decimals()": {
5779
- "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: SuperToken always uses 18 decimals. Note: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
5785
+ "custom:note": "SuperToken always uses 18 decimals. This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.",
5786
+ "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called."
5780
5787
  },
5781
5788
  "decreaseAllowance(address,uint256)": {
5782
- "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
5789
+ "custom:emits": "an {Approval} event indicating the updated allowance.",
5790
+ "custom:requirements": " - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.",
5791
+ "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}."
5783
5792
  },
5784
5793
  "defaultOperators()": {
5785
5794
  "details": "Returns the list of default operators. These accounts are operators for all token holders, even if {authorizeOperator} was never called on them. This list is immutable, but individual holders may revoke these via {revokeOperator}, in which case {isOperatorFor} will return false."
@@ -5828,10 +5837,13 @@
5828
5837
  }
5829
5838
  },
5830
5839
  "granularity()": {
5831
- "details": "Returns the smallest part of the token that is not divisible. This means all token operations (creation, movement and destruction) must have amounts that are a multiple of this number. For super token contracts, this value is 1 always"
5840
+ "custom:note": "For super token contracts, this value is always 1",
5841
+ "details": "Returns the smallest part of the token that is not divisible. This means all token operations (creation, movement and destruction) must have amounts that are a multiple of this number."
5832
5842
  },
5833
5843
  "increaseAllowance(address,uint256)": {
5834
- "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
5844
+ "custom:emits": "an {Approval} event indicating the updated allowance.",
5845
+ "custom:requirements": " - `spender` cannot be the zero address.",
5846
+ "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}."
5835
5847
  },
5836
5848
  "initialize(address,uint8,string,string)": {
5837
5849
  "details": "Initialize the contract"
@@ -5862,7 +5874,7 @@
5862
5874
  "timestamp": "The time we'd like to check if the account is solvent (should use future)"
5863
5875
  },
5864
5876
  "returns": {
5865
- "isSolvent": "isSolvent"
5877
+ "isSolvent": "True if the account is solvent, false otherwise"
5866
5878
  }
5867
5879
  },
5868
5880
  "isAccountSolventNow(address)": {
@@ -5871,13 +5883,15 @@
5871
5883
  "account": "The account to check"
5872
5884
  },
5873
5885
  "returns": {
5874
- "isSolvent": "isSolvent"
5886
+ "isSolvent": "True if the account is solvent, false otherwise"
5875
5887
  }
5876
5888
  },
5877
5889
  "isOperatorFor(address,address)": {
5878
5890
  "details": "Returns true if an account is an operator of `tokenHolder`. Operators can send and burn tokens on behalf of their owners. All accounts are their own operator. See {operatorSend} and {operatorBurn}."
5879
5891
  },
5880
5892
  "makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)": {
5893
+ "custom:modifiers": " - onlyAgreement",
5894
+ "custom:note": " - If a bailout is required (bailoutAmount > 0) - the actual reward (single deposit) goes to the executor, - while the reward account becomes the bailout account - total bailout include: bailout amount + reward amount - the targetAccount will be bailed out - If a bailout is not required - the targetAccount will pay the rewardAmount - the liquidator (reward account in PIC period) will receive the rewardAmount",
5881
5895
  "details": "Make liquidation payouts (v2)",
5882
5896
  "params": {
5883
5897
  "id": "Agreement ID",
@@ -5885,7 +5899,7 @@
5885
5899
  "liquidatorAccount": "Address of the executor of the liquidation",
5886
5900
  "rewardAmount": "The amount the rewarded account will receive",
5887
5901
  "targetAccount": "Account to be liquidated",
5888
- "targetAccountBalanceDelta": "The delta amount the target account balance should change by - If a bailout is required (bailoutAmount > 0) - the actual reward (single deposit) goes to the executor, - while the reward account becomes the bailout account - total bailout include: bailout amount + reward amount - the targetAccount will be bailed out - If a bailout is not required - the targetAccount will pay the rewardAmount - the liquidator (reward account in PIC period) will receive the rewardAmount Modifiers: - onlyAgreement",
5902
+ "targetAccountBalanceDelta": "The delta amount the target account balance should change by",
5889
5903
  "useDefaultRewardAccount": "Whether or not the default reward account receives the rewardAmount"
5890
5904
  }
5891
5905
  },
@@ -5893,41 +5907,49 @@
5893
5907
  "details": "Returns the name of the token."
5894
5908
  },
5895
5909
  "operationApprove(address,address,uint256)": {
5910
+ "custom:modifiers": " - onlyHost",
5896
5911
  "details": "Perform ERC20 approve by host contract.",
5897
5912
  "params": {
5898
5913
  "account": "The account owner to be approved.",
5899
- "amount": "Number of tokens to be approved. Modifiers: - onlyHost",
5914
+ "amount": "Number of tokens to be approved.",
5900
5915
  "spender": "The spender of account owner's funds."
5901
5916
  }
5902
5917
  },
5903
5918
  "operationDowngrade(address,uint256)": {
5919
+ "custom:modifiers": " - onlyHost",
5904
5920
  "details": "Downgrade ERC20 to SuperToken by host contract.",
5905
5921
  "params": {
5906
5922
  "account": "The account to be changed.",
5907
- "amount": "Number of tokens to be downgraded (in 18 decimals) Modifiers: - onlyHost"
5923
+ "amount": "Number of tokens to be downgraded (in 18 decimals)"
5908
5924
  }
5909
5925
  },
5910
5926
  "operationTransferFrom(address,address,address,uint256)": {
5927
+ "custom:modifiers": " - onlyHost",
5911
5928
  "details": "Perform ERC20 transfer from by host contract.",
5912
5929
  "params": {
5913
5930
  "account": "The account to spend sender's funds.",
5914
- "amount": "Number of tokens to be transferred. Modifiers: - onlyHost",
5931
+ "amount": "Number of tokens to be transferred.",
5915
5932
  "recipient": "The recipient of thefunds.",
5916
5933
  "spender": "The account where the funds is sent from."
5917
5934
  }
5918
5935
  },
5919
5936
  "operationUpgrade(address,uint256)": {
5937
+ "custom:modifiers": " - onlyHost",
5920
5938
  "details": "Upgrade ERC20 to SuperToken by host contract.",
5921
5939
  "params": {
5922
5940
  "account": "The account to be changed.",
5923
- "amount": "Number of tokens to be upgraded (in 18 decimals) Modifiers: - onlyHost"
5941
+ "amount": "Number of tokens to be upgraded (in 18 decimals)"
5924
5942
  }
5925
5943
  },
5926
5944
  "operatorBurn(address,uint256,bytes,bytes)": {
5927
- "details": "Destroys `amount` tokens from `account`, reducing the total supply. The caller must be an operator of `account`. If a send hook is registered for `account`, the corresponding function will be called with `data` and `operatorData`. See {IERC777Sender}. Emits a {Burned} event. Requirements - `account` cannot be the zero address. - `account` must have at least `amount` tokens. - the caller must be an operator for `account`."
5945
+ "custom:emits": "a {Burned} event.",
5946
+ "custom:requirements": " - `account` cannot be the zero address. - `account` must have at least `amount` tokens. - the caller must be an operator for `account`.",
5947
+ "details": "Destroys `amount` tokens from `account`, reducing the total supply. The caller must be an operator of `account`. If a send hook is registered for `account`, the corresponding function will be called with `data` and `operatorData`. See {IERC777Sender}."
5928
5948
  },
5929
5949
  "operatorSend(address,address,uint256,bytes,bytes)": {
5930
- "details": "Moves `amount` tokens from `sender` to `recipient`. The caller must be an operator of `sender`. If send or receive hooks are registered for `sender` and `recipient`, the corresponding functions will be called with `data` and `operatorData`. See {IERC777Sender} and {IERC777Recipient}. Emits a {Sent} event. Requirements - `sender` cannot be the zero address. - `sender` must have at least `amount` tokens. - the caller must be an operator for `sender`. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface."
5950
+ "custom:emits": "a {Sent} event.",
5951
+ "custom:requirements": " - `sender` cannot be the zero address. - `sender` must have at least `amount` tokens. - the caller must be an operator for `sender`. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.",
5952
+ "details": "Moves `amount` tokens from `sender` to `recipient`. The caller must be an operator of `sender`. If send or receive hooks are registered for `sender` and `recipient`, the corresponding functions will be called with `data` and `operatorData`. See {IERC777Sender} and {IERC777Recipient}."
5931
5953
  },
5932
5954
  "realtimeBalanceOf(address,uint256)": {
5933
5955
  "details": "Calculate the real balance of a user, taking in consideration all agreements of the account",
@@ -5953,28 +5975,37 @@
5953
5975
  }
5954
5976
  },
5955
5977
  "revokeOperator(address)": {
5956
- "details": "Revoke an account's operator status for the caller. See {isOperatorFor} and {defaultOperators}. Emits a {RevokedOperator} event. Requirements - `operator` cannot be calling address."
5978
+ "custom:emits": "a {RevokedOperator} event.",
5979
+ "custom:requirements": " - `operator` cannot be calling address.",
5980
+ "details": "Revoke an account's operator status for the caller. See {isOperatorFor} and {defaultOperators}."
5957
5981
  },
5958
5982
  "selfApproveFor(address,address,uint256)": {
5959
- "details": "Give `spender`, `amount` allowance to spend the tokens of `account`. Modifiers: - onlySelf"
5983
+ "custom:modifiers": " - onlySelf",
5984
+ "details": "Give `spender`, `amount` allowance to spend the tokens of `account`."
5960
5985
  },
5961
5986
  "selfBurn(address,uint256,bytes)": {
5962
- "details": "Burn existing tokens for the account Modifiers: - onlySelf"
5987
+ "custom:modifiers": " - onlySelf",
5988
+ "details": "Burn existing tokens for the account"
5963
5989
  },
5964
5990
  "selfMint(address,uint256,bytes)": {
5965
- "details": "Mint new tokens for the account Modifiers: - onlySelf"
5991
+ "custom:modifiers": " - onlySelf",
5992
+ "details": "Mint new tokens for the account"
5966
5993
  },
5967
5994
  "selfTransferFrom(address,address,address,uint256)": {
5968
- "details": "Transfer `amount` tokens from the `sender` to `recipient`. If `spender` isn't the same as `sender`, checks if `spender` has allowance to spend tokens of `sender`. Modifiers: - onlySelf"
5995
+ "custom:modifiers": " - onlySelf",
5996
+ "details": "Transfer `amount` tokens from the `sender` to `recipient`. If `spender` isn't the same as `sender`, checks if `spender` has allowance to spend tokens of `sender`."
5969
5997
  },
5970
5998
  "send(address,uint256,bytes)": {
5971
- "details": "Moves `amount` tokens from the caller's account to `recipient`.If send or receive hooks are registered for the caller and `recipient`, the corresponding functions will be called with `data` and empty `operatorData`. See {IERC777Sender} and {IERC777Recipient}. Emits a {Sent} event. Requirements - the caller must have at least `amount` tokens. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface."
5999
+ "custom:emits": "a {Sent} event.",
6000
+ "custom:requirements": " - the caller must have at least `amount` tokens. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.",
6001
+ "details": "Moves `amount` tokens from the caller's account to `recipient`.If send or receive hooks are registered for the caller and `recipient`, the corresponding functions will be called with `data` and empty `operatorData`. See {IERC777Sender} and {IERC777Recipient}."
5972
6002
  },
5973
6003
  "settleBalance(address,int256)": {
6004
+ "custom:modifiers": " - onlyAgreement",
5974
6005
  "details": "The agreement needs to make sure that the balance delta is balanced afterwards",
5975
6006
  "params": {
5976
6007
  "account": "Account to query.",
5977
- "delta": "Amount of balance delta to be settled Modifiers: - onlyAgreement"
6008
+ "delta": "Amount of balance delta to be settled"
5978
6009
  }
5979
6010
  },
5980
6011
  "symbol()": {
@@ -5990,18 +6021,20 @@
5990
6021
  "details": "See {IERC20-totalSupply}."
5991
6022
  },
5992
6023
  "transfer(address,uint256)": {
6024
+ "custom:emits": "a {Transfer} event.",
5993
6025
  "details": "Moves `amount` tokens from the caller's account to `recipient`.",
5994
6026
  "returns": {
5995
- "_0": "Returns Success a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
6027
+ "_0": "Returns Success a boolean value indicating whether the operation succeeded."
5996
6028
  }
5997
6029
  },
5998
6030
  "transferAll(address)": {
5999
6031
  "details": "Transfer all available balance from `msg.sender` to `recipient`"
6000
6032
  },
6001
6033
  "transferFrom(address,address,uint256)": {
6034
+ "custom:emits": "a {Transfer} event.",
6002
6035
  "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance.",
6003
6036
  "returns": {
6004
- "_0": "Returns Success a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
6037
+ "_0": "Returns Success a boolean value indicating whether the operation succeeded."
6005
6038
  }
6006
6039
  },
6007
6040
  "updateAgreementData(bytes32,bytes32[])": {
@@ -6012,22 +6045,25 @@
6012
6045
  }
6013
6046
  },
6014
6047
  "updateAgreementStateSlot(address,uint256,bytes32[])": {
6048
+ "custom:note": " - To clear the storage out, provide zero-ed array of intended length",
6015
6049
  "details": "Update agreement state slot",
6016
6050
  "params": {
6017
- "account": "Account to be updated NOTE - To clear the storage out, provide zero-ed array of intended length"
6051
+ "account": "Account to be updated"
6018
6052
  }
6019
6053
  },
6020
6054
  "upgrade(uint256)": {
6055
+ "custom:note": "It will use `transferFrom` to get tokens. Before calling this function you should `approve` this contract",
6021
6056
  "details": "Upgrade ERC20 to SuperToken.",
6022
6057
  "params": {
6023
- "amount": "Number of tokens to be upgraded (in 18 decimals) NOTE: It will use ´transferFrom´ to get tokens. Before calling this function you should ´approve´ this contract"
6058
+ "amount": "Number of tokens to be upgraded (in 18 decimals)"
6024
6059
  }
6025
6060
  },
6026
6061
  "upgradeTo(address,uint256,bytes)": {
6062
+ "custom:note": "It will use `transferFrom` to get tokens. Before calling this function you should `approve` this contract",
6027
6063
  "details": "Upgrade ERC20 to SuperToken and transfer immediately",
6028
6064
  "params": {
6029
6065
  "amount": "Number of tokens to be upgraded (in 18 decimals)",
6030
- "data": "User data for the TokensRecipient callback NOTE: It will use ´transferFrom´ to get tokens. Before calling this function you should ´approve´ this contract",
6066
+ "data": "User data for the TokensRecipient callback",
6031
6067
  "to": "The account to received upgraded tokens"
6032
6068
  }
6033
6069
  }
@@ -6038,6 +6074,9 @@
6038
6074
  "userdoc": {
6039
6075
  "kind": "user",
6040
6076
  "methods": {
6077
+ "allowance(address,address)": {
6078
+ "notice": "This value changes when {approve} or {transferFrom} are called."
6079
+ },
6041
6080
  "getAccountActiveAgreements(address)": {
6042
6081
  "notice": "Get a list of agreements that is active for the account"
6043
6082
  },