@superfluid-finance/ethereum-contracts 1.2.3-dev.3df6de8.0 → 1.2.3-dev.4eebafa.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 (118) hide show
  1. package/build/contracts/AccessControl.json +1 -1
  2. package/build/contracts/AccessControlEnumerable.json +1 -1
  3. package/build/contracts/Address.json +1 -1
  4. package/build/contracts/AgreementBase.json +10 -10
  5. package/build/contracts/AgreementLibrary.json +4 -4
  6. package/build/contracts/BaseRelayRecipient.json +1 -1
  7. package/build/contracts/BatchLiquidator.json +1385 -1242
  8. package/build/contracts/BatchOperation.json +1 -1
  9. package/build/contracts/CFAv1Library.json +3437 -3625
  10. package/build/contracts/CallUtils.json +1 -1
  11. package/build/contracts/ClosingOnUpdateFlowTestApp.json +4440 -4451
  12. package/build/contracts/ConstantFlowAgreementV1.json +5204 -5204
  13. package/build/contracts/Context.json +1 -1
  14. package/build/contracts/ContextDefinitions.json +1 -1
  15. package/build/contracts/Create2.json +1 -1
  16. package/build/contracts/CustomSuperTokenBase.json +2 -2
  17. package/build/contracts/ERC165.json +1 -1
  18. package/build/contracts/ERC1820Implementer.json +79 -79
  19. package/build/contracts/ERC1820RegistryCompiled.json +1 -1
  20. package/build/contracts/ERC20.json +1008 -1008
  21. package/build/contracts/ERC20Burnable.json +1 -1
  22. package/build/contracts/ERC20Pausable.json +1 -1
  23. package/build/contracts/ERC20PresetMinterPauser.json +1816 -1816
  24. package/build/contracts/ERC20WithTokenInfo.json +1 -1
  25. package/build/contracts/ERC777Helper.json +1 -1
  26. package/build/contracts/ERC777RecipientDrainingGas.json +1874 -1874
  27. package/build/contracts/ERC777RecipientReverting.json +1896 -1896
  28. package/build/contracts/EnumerableSet.json +1 -1
  29. package/build/contracts/EventsEmitter.json +414 -0
  30. package/build/contracts/ExclusiveInflowTestApp.json +4468 -4479
  31. package/build/contracts/FixedSizeData.json +405 -405
  32. package/build/contracts/FlowExchangeTestApp.json +4578 -4589
  33. package/build/contracts/FlowOperatorDefinitions.json +1 -1
  34. package/build/contracts/FullUpgradableSuperTokenProxy.json +319 -319
  35. package/build/contracts/IAccessControl.json +1 -1
  36. package/build/contracts/IAccessControlEnumerable.json +1 -1
  37. package/build/contracts/IConstantFlowAgreementV1.json +2 -2
  38. package/build/contracts/IDAv1Library.json +3227 -3403
  39. package/build/contracts/IERC165.json +1 -1
  40. package/build/contracts/IERC1820Implementer.json +1 -1
  41. package/build/contracts/IERC1820Registry.json +1 -1
  42. package/build/contracts/IERC20.json +1 -1
  43. package/build/contracts/IERC20Metadata.json +1 -1
  44. package/build/contracts/IERC777.json +1 -1
  45. package/build/contracts/IERC777Recipient.json +1 -1
  46. package/build/contracts/IERC777Sender.json +1 -1
  47. package/build/contracts/IInstantDistributionAgreementV1.json +2 -2
  48. package/build/contracts/IMaticBridgedNativeSuperToken.json +6 -6
  49. package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +2 -2
  50. package/build/contracts/IMultiSigWallet.json +1 -1
  51. package/build/contracts/IPureSuperToken.json +6 -6
  52. package/build/contracts/IPureSuperTokenCustom.json +2 -2
  53. package/build/contracts/IRelayRecipient.json +1 -1
  54. package/build/contracts/IResolver.json +1 -1
  55. package/build/contracts/ISETH.json +6 -6
  56. package/build/contracts/ISETHCustom.json +2 -2
  57. package/build/contracts/ISuperAgreement.json +2 -2
  58. package/build/contracts/ISuperApp.json +2 -2
  59. package/build/contracts/ISuperToken.json +6 -6
  60. package/build/contracts/ISuperTokenFactory.json +2 -2
  61. package/build/contracts/ISuperfluid.json +2 -2
  62. package/build/contracts/ISuperfluidGovernance.json +2 -2
  63. package/build/contracts/ISuperfluidToken.json +122 -122
  64. package/build/contracts/ITOGAv1.json +2689 -2739
  65. package/build/contracts/ITOGAv2.json +2689 -2739
  66. package/build/contracts/Initializable.json +1 -1
  67. package/build/contracts/InstantDistributionAgreementV1.json +5387 -5387
  68. package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +971 -971
  69. package/build/contracts/NonClosableOutflowTestApp.json +4343 -4354
  70. package/build/contracts/Ownable.json +1 -1
  71. package/build/contracts/Pausable.json +1 -1
  72. package/build/contracts/Proxy.json +1 -1
  73. package/build/contracts/PureSuperToken.json +694 -694
  74. package/build/contracts/Resolver.json +1058 -1058
  75. package/build/contracts/SETHProxy.json +661 -661
  76. package/build/contracts/SafeCast.json +1 -1
  77. package/build/contracts/SafeERC20.json +1 -1
  78. package/build/contracts/SafeMath.json +1 -1
  79. package/build/contracts/SelfDeletingFlowTestApp.json +4440 -4451
  80. package/build/contracts/SlotsBitmapLibrary.json +1757 -1757
  81. package/build/contracts/Strings.json +1 -1
  82. package/build/contracts/SuperAppBase.json +2 -2
  83. package/build/contracts/SuperAppDefinitions.json +1 -1
  84. package/build/contracts/SuperToken.json +9757 -9515
  85. package/build/contracts/SuperTokenFactory.json +2074 -2074
  86. package/build/contracts/SuperTokenFactoryBase.json +989 -989
  87. package/build/contracts/SuperTokenFactoryHelper.json +1095 -1095
  88. package/build/contracts/SuperUpgrader.json +2495 -2495
  89. package/build/contracts/Superfluid.json +12978 -12978
  90. package/build/contracts/SuperfluidFrameworkDeployer.json +2042 -2042
  91. package/build/contracts/SuperfluidGovernanceBase.json +9 -9
  92. package/build/contracts/SuperfluidGovernanceConfigs.json +1 -1
  93. package/build/contracts/SuperfluidGovernanceII.json +2022 -2022
  94. package/build/contracts/SuperfluidGovernanceIIProxy.json +227 -227
  95. package/build/contracts/SuperfluidLoader.json +752 -752
  96. package/build/contracts/SuperfluidToken.json +3476 -2953
  97. package/build/contracts/TOGA.json +4681 -4731
  98. package/build/contracts/TestGovernance.json +2402 -2402
  99. package/build/contracts/TestToken.json +1267 -1267
  100. package/build/contracts/TokenCustodian.json +903 -903
  101. package/build/contracts/TokenInfo.json +1 -1
  102. package/build/contracts/UUPSProxiable.json +233 -233
  103. package/build/contracts/UUPSProxy.json +257 -257
  104. package/build/contracts/UUPSUtils.json +85 -85
  105. package/build/contracts-sizes.txt +6 -6
  106. package/contracts/apps/CFAv1Library.sol +147 -111
  107. package/contracts/apps/IDAv1Library.sol +133 -101
  108. package/contracts/interfaces/superfluid/ISuperfluidToken.sol +8 -8
  109. package/contracts/libs/EventsEmitter.sol +16 -0
  110. package/contracts/mocks/CFAAppMocks.sol +52 -36
  111. package/contracts/mocks/CustomSuperTokenMock.sol +11 -4
  112. package/contracts/mocks/IDASuperAppTester.sol +24 -18
  113. package/contracts/mocks/MultiFlowTesterApp.sol +33 -24
  114. package/contracts/mocks/SuperAppMocks.sol +54 -40
  115. package/contracts/superfluid/SuperfluidToken.sol +33 -31
  116. package/contracts/utils/BatchLiquidator.sol +15 -11
  117. package/contracts/utils/TOGA.sol +40 -30
  118. package/package.json +2 -2
@@ -1036,7 +1036,7 @@
1036
1036
  },
1037
1037
  "networks": {},
1038
1038
  "schemaVersion": "3.4.7",
1039
- "updatedAt": "2022-05-27T08:56:18.643Z",
1039
+ "updatedAt": "2022-06-06T10:25:55.024Z",
1040
1040
  "devdoc": {
1041
1041
  "details": "External interface of AccessControl declared to support ERC165 detection.",
1042
1042
  "events": {
@@ -519,7 +519,7 @@
519
519
  },
520
520
  "networks": {},
521
521
  "schemaVersion": "3.4.7",
522
- "updatedAt": "2022-05-27T08:56:18.643Z",
522
+ "updatedAt": "2022-06-06T10:25:55.024Z",
523
523
  "devdoc": {
524
524
  "details": "External interface of AccessControlEnumerable declared to support ERC165 detection.",
525
525
  "kind": "dev",
@@ -790,7 +790,7 @@
790
790
  "type": "function"
791
791
  }
792
792
  ],
793
- "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"name\":\"FlowOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalSenderFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalReceiverFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"FlowUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"FlowUpdatedExtension\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"agreementType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"authorizeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountFlowInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"name\":\"getDepositRequiredForFlowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"getFlow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"}],\"name\":\"getFlowByID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"}],\"name\":\"getFlowOperatorData\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"}],\"name\":\"getFlowOperatorDataByID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"getMaximumFlowRateFromDeposit\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNetFlow\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isPatricianPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPatricianPeriodNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCurrentlyPatricianPeriod\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"dynamicBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"revokeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowOperatorPermissions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"FlowOperatorUpdated(address,address,address,uint8,int96)\":{\"details\":\"Flow operator updated event\",\"params\":{\"flowOperator\":\"Flow operator address\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"Octo bitmask representation of permissions\",\"sender\":\"Flow sender address\",\"token\":\"Super token address\"}},\"FlowUpdated(address,address,address,int96,int256,int256,bytes)\":{\"details\":\"Flow updated event\",\"params\":{\"flowRate\":\"Flow rate in amount per second for this flow\",\"receiver\":\"Flow recipient address\",\"sender\":\"Flow sender address\",\"token\":\"Super token address\",\"totalReceiverFlowRate\":\"Total flow rate in amount per second for the receiver\",\"totalSenderFlowRate\":\"Total flow rate in amount per second for the sender\",\"userData\":\"The user provided data\"}},\"FlowUpdatedExtension(address,uint256)\":{\"details\":\"Flow updated extension event\",\"params\":{\"deposit\":\"The deposit amount for the stream\",\"flowOperator\":\"Flow operator address - the Context.msgSender\"}}},\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"ISuperAgreement.agreementType implementation\"},\"authorizeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"msgSender from `ctx` grants `flowOperator` all permissions with flowRateAllowance as type(int96).max\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"token\":\"Super token address\"}},\"createFlow(address,address,int96,bytes)\":{\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct) # App callbacks - AgreementCreated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver) NOTE: - A deposit is taken as safety margin for the solvency agents - A extra gas fee may be taken to pay for solvency agent liquidations\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"createFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"A flow created by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"sender\":\"Flow sender address (has granted permissions)\",\"token\":\"Super token address\"}},\"deleteFlow(address,address,address,bytes)\":{\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"receiver\":\"Flow receiver address # App callbacks - AgreementTerminated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver) NOTE: - Both flow sender and receiver may delete the flow - If Sender account is insolvent or in critical state, a solvency agent may also terminate the agreement - Gas fee may be returned to the sender\",\"token\":\"Super token address\"}},\"deleteFlowByOperator(address,address,address,bytes)\":{\"details\":\"A flow deleted by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"getAccountFlowInfo(address,address)\":{\"details\":\"Get the aggregated flow info of the account\",\"params\":{\"account\":\"Account for the query\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The sum of all deposits for account's flows\",\"flowRate\":\"The net flow rate of token for account\",\"owedDeposit\":\"The sum of all owed deposits for account's flows\",\"timestamp\":\"Timestamp of when a flow was last updated for account\"}},\"getDepositRequiredForFlowRate(address,int96)\":{\"details\":\"Calculates the deposit based on the liquidationPeriod and flowRate\",\"params\":{\"flowRate\":\"Flow rate to be tested\"},\"returns\":{\"deposit\":\"The deposit amount based on flowRate and liquidationPeriod NOTE: - if calculated deposit (flowRate * liquidationPeriod) is less than the minimum deposit, we use the minimum deposit otherwise we use the calculated deposit\"}},\"getFlow(address,address,address)\":{\"details\":\"Get the flow data between `sender` and `receiver` of `token`\",\"params\":{\"receiver\":\"Flow sender\",\"sender\":\"Flow receiver\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The amount of deposit the flow\",\"flowRate\":\"The flow rate\",\"owedDeposit\":\"The amount of owed deposit of the flow\",\"timestamp\":\"Timestamp of when the flow is updated\"}},\"getFlowByID(address,bytes32)\":{\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"agreementId\":\"The agreement ID\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The deposit amount of the flow\",\"flowRate\":\"The flow rate\",\"owedDeposit\":\"The owed deposit amount of the flow\",\"timestamp\":\"Timestamp of when the flow is updated\"}},\"getFlowOperatorData(address,address,address)\":{\"params\":{\"flowOperator\":\"The permission grantee address\",\"sender\":\"The permission granter address\",\"token\":\"Super token address\"},\"returns\":{\"flowOperatorId\":\"The keccak256 hash of encoded string \\\"flowOperator\\\", sender and flowOperator\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\"}},\"getFlowOperatorDataByID(address,bytes32)\":{\"params\":{\"flowOperatorId\":\"The keccak256 hash of encoded string \\\"flowOperator\\\", sender and flowOperator\",\"token\":\"Super token address\"},\"returns\":{\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\"}},\"getMaximumFlowRateFromDeposit(address,uint256)\":{\"details\":\"The deposit is clipped and rounded down\",\"params\":{\"deposit\":\"Deposit amount used for creating the flow\"},\"returns\":{\"flowRate\":\"The maximum flow rate\"}},\"getNetFlow(address,address)\":{\"details\":\"Get the net flow rate of the account\",\"params\":{\"account\":\"Account for the query\",\"token\":\"Super token address\"},\"returns\":{\"flowRate\":\"Net flow rate\"}},\"isPatricianPeriod(address,address,uint256)\":{\"details\":\"Returns whether it is the patrician period based on timestamp\",\"params\":{\"account\":\"The account we are interested in\",\"timestamp\":\"The timestamp we are interested in observing the result of isPatricianPeriod\"},\"returns\":{\"_0\":\"bool Whether it is currently the patrician period dictated by governance\"}},\"isPatricianPeriodNow(address,address)\":{\"details\":\"Returns whether it is the patrician period based on host.getNow()\",\"params\":{\"account\":\"The account we are interested in\"},\"returns\":{\"isCurrentlyPatricianPeriod\":\"Whether it is currently the patrician period dictated by governance\",\"timestamp\":\"The value of host.getNow()\"}},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"Calculate the real-time balance for the account of this agreement class\",\"params\":{\"account\":\"Account the state belongs to\",\"time\":\"Time used for the calculation\"},\"returns\":{\"deposit\":\"Account deposit amount of this agreement\",\"dynamicBalance\":\"Dynamic balance portion of real-time balance of this agreement\",\"owedDeposit\":\"Account owed deposit amount of this agreement\"}},\"revokeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"`permissions` and `flowRateAllowance` will both be set to 0\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"token\":\"Super token address\"}},\"updateFlow(address,address,int96,bytes)\":{\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct) # App callbacks - AgreementUpdated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver) NOTE: - Only the flow sender may update the flow rate - Even if the flow rate is zero, the flow is not deleted from the system - Deposit amount will be adjusted accordingly - No new gas fee is charged\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"updateFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"A flow updated by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"sender\":\"Flow sender address (has granted permissions)\",\"token\":\"Super token address\"}},\"updateFlowOperatorPermissions(address,address,uint8,int96,bytes)\":{\"details\":\"msgSender from `ctx` updates permissions for the `flowOperator` with `flowRateAllowance`\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\",\"token\":\"Super token address\"}}},\"title\":\"Constant Flow Agreement interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createFlow(address,address,int96,bytes)\":{\"notice\":\"Create a flow betwen ctx.msgSender and receiver\"},\"createFlowByOperator(address,address,address,int96,bytes)\":{\"notice\":\"Create a flow between sender and receiver\"},\"deleteFlow(address,address,address,bytes)\":{\"notice\":\"Delete the flow between sender and receiver\"},\"deleteFlowByOperator(address,address,address,bytes)\":{\"notice\":\"Delete the flow between sender and receiver\"},\"getDepositRequiredForFlowRate(address,int96)\":{\"notice\":\"Get the deposit required for creating the flow\"},\"getFlowByID(address,bytes32)\":{\"notice\":\"Get flow data using agreementId\"},\"getFlowOperatorData(address,address,address)\":{\"notice\":\"Get the permissions of a flow operator between `sender` and `flowOperator` for `token`\"},\"getFlowOperatorDataByID(address,bytes32)\":{\"notice\":\"Get flow operator using flowOperatorId\"},\"getMaximumFlowRateFromDeposit(address,uint256)\":{\"notice\":\"Get the maximum flow rate allowed with the deposit\"},\"revokeFlowOperatorWithFullControl(address,address,bytes)\":{\"notice\":\"msgSender from `ctx` revokes `flowOperator` create/update/delete permissions\"},\"updateFlow(address,address,int96,bytes)\":{\"notice\":\"Update the flow rate between ctx.msgSender and receiver\"},\"updateFlowByOperator(address,address,address,int96,bytes)\":{\"notice\":\"Update a flow between sender and receiver\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":\"IConstantFlowAgreementV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb96bb6cb0fe88ddf5b890b6826f7f7585cf6e94223c76d8e2fb269779afe4445\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://b864597ae952222f0f43c66943492966013021c4171d5ef4f7357c047dfd737c\",\"dweb:/ipfs/Qmcr7xicfmPDD343B34ETP3XrdU9Vi1z3zxJSgqLipfQmY\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9189eaba9e856cc4932ea29eeaf4e89a09448dde13860591691ec122856fdc75\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7d5991b906bba706373f5bfe3c2c8789a7a45360a41eee50574272b393c4ab70\",\"dweb:/ipfs/QmVCXVnYA13vMNxa7rGzNB129sUXiGE1asuHdnEMEPVZsp\"]}},\"version\":1}",
793
+ "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"name\":\"FlowOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalSenderFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalReceiverFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"FlowUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"FlowUpdatedExtension\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"agreementType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"authorizeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountFlowInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"name\":\"getDepositRequiredForFlowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"getFlow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"}],\"name\":\"getFlowByID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"}],\"name\":\"getFlowOperatorData\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"}],\"name\":\"getFlowOperatorDataByID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"getMaximumFlowRateFromDeposit\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNetFlow\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isPatricianPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPatricianPeriodNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCurrentlyPatricianPeriod\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"dynamicBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"revokeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowOperatorPermissions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"FlowOperatorUpdated(address,address,address,uint8,int96)\":{\"details\":\"Flow operator updated event\",\"params\":{\"flowOperator\":\"Flow operator address\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"Octo bitmask representation of permissions\",\"sender\":\"Flow sender address\",\"token\":\"Super token address\"}},\"FlowUpdated(address,address,address,int96,int256,int256,bytes)\":{\"details\":\"Flow updated event\",\"params\":{\"flowRate\":\"Flow rate in amount per second for this flow\",\"receiver\":\"Flow recipient address\",\"sender\":\"Flow sender address\",\"token\":\"Super token address\",\"totalReceiverFlowRate\":\"Total flow rate in amount per second for the receiver\",\"totalSenderFlowRate\":\"Total flow rate in amount per second for the sender\",\"userData\":\"The user provided data\"}},\"FlowUpdatedExtension(address,uint256)\":{\"details\":\"Flow updated extension event\",\"params\":{\"deposit\":\"The deposit amount for the stream\",\"flowOperator\":\"Flow operator address - the Context.msgSender\"}}},\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"ISuperAgreement.agreementType implementation\"},\"authorizeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"msgSender from `ctx` grants `flowOperator` all permissions with flowRateAllowance as type(int96).max\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"token\":\"Super token address\"}},\"createFlow(address,address,int96,bytes)\":{\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct) # App callbacks - AgreementCreated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver) NOTE: - A deposit is taken as safety margin for the solvency agents - A extra gas fee may be taken to pay for solvency agent liquidations\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"createFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"A flow created by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"sender\":\"Flow sender address (has granted permissions)\",\"token\":\"Super token address\"}},\"deleteFlow(address,address,address,bytes)\":{\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"receiver\":\"Flow receiver address # App callbacks - AgreementTerminated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver) NOTE: - Both flow sender and receiver may delete the flow - If Sender account is insolvent or in critical state, a solvency agent may also terminate the agreement - Gas fee may be returned to the sender\",\"token\":\"Super token address\"}},\"deleteFlowByOperator(address,address,address,bytes)\":{\"details\":\"A flow deleted by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"getAccountFlowInfo(address,address)\":{\"details\":\"Get the aggregated flow info of the account\",\"params\":{\"account\":\"Account for the query\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The sum of all deposits for account's flows\",\"flowRate\":\"The net flow rate of token for account\",\"owedDeposit\":\"The sum of all owed deposits for account's flows\",\"timestamp\":\"Timestamp of when a flow was last updated for account\"}},\"getDepositRequiredForFlowRate(address,int96)\":{\"details\":\"Calculates the deposit based on the liquidationPeriod and flowRate\",\"params\":{\"flowRate\":\"Flow rate to be tested\"},\"returns\":{\"deposit\":\"The deposit amount based on flowRate and liquidationPeriod NOTE: - if calculated deposit (flowRate * liquidationPeriod) is less than the minimum deposit, we use the minimum deposit otherwise we use the calculated deposit\"}},\"getFlow(address,address,address)\":{\"details\":\"Get the flow data between `sender` and `receiver` of `token`\",\"params\":{\"receiver\":\"Flow sender\",\"sender\":\"Flow receiver\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The amount of deposit the flow\",\"flowRate\":\"The flow rate\",\"owedDeposit\":\"The amount of owed deposit of the flow\",\"timestamp\":\"Timestamp of when the flow is updated\"}},\"getFlowByID(address,bytes32)\":{\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"agreementId\":\"The agreement ID\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The deposit amount of the flow\",\"flowRate\":\"The flow rate\",\"owedDeposit\":\"The owed deposit amount of the flow\",\"timestamp\":\"Timestamp of when the flow is updated\"}},\"getFlowOperatorData(address,address,address)\":{\"params\":{\"flowOperator\":\"The permission grantee address\",\"sender\":\"The permission granter address\",\"token\":\"Super token address\"},\"returns\":{\"flowOperatorId\":\"The keccak256 hash of encoded string \\\"flowOperator\\\", sender and flowOperator\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\"}},\"getFlowOperatorDataByID(address,bytes32)\":{\"params\":{\"flowOperatorId\":\"The keccak256 hash of encoded string \\\"flowOperator\\\", sender and flowOperator\",\"token\":\"Super token address\"},\"returns\":{\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\"}},\"getMaximumFlowRateFromDeposit(address,uint256)\":{\"details\":\"The deposit is clipped and rounded down\",\"params\":{\"deposit\":\"Deposit amount used for creating the flow\"},\"returns\":{\"flowRate\":\"The maximum flow rate\"}},\"getNetFlow(address,address)\":{\"details\":\"Get the net flow rate of the account\",\"params\":{\"account\":\"Account for the query\",\"token\":\"Super token address\"},\"returns\":{\"flowRate\":\"Net flow rate\"}},\"isPatricianPeriod(address,address,uint256)\":{\"details\":\"Returns whether it is the patrician period based on timestamp\",\"params\":{\"account\":\"The account we are interested in\",\"timestamp\":\"The timestamp we are interested in observing the result of isPatricianPeriod\"},\"returns\":{\"_0\":\"bool Whether it is currently the patrician period dictated by governance\"}},\"isPatricianPeriodNow(address,address)\":{\"details\":\"Returns whether it is the patrician period based on host.getNow()\",\"params\":{\"account\":\"The account we are interested in\"},\"returns\":{\"isCurrentlyPatricianPeriod\":\"Whether it is currently the patrician period dictated by governance\",\"timestamp\":\"The value of host.getNow()\"}},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"Calculate the real-time balance for the account of this agreement class\",\"params\":{\"account\":\"Account the state belongs to\",\"time\":\"Time used for the calculation\"},\"returns\":{\"deposit\":\"Account deposit amount of this agreement\",\"dynamicBalance\":\"Dynamic balance portion of real-time balance of this agreement\",\"owedDeposit\":\"Account owed deposit amount of this agreement\"}},\"revokeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"`permissions` and `flowRateAllowance` will both be set to 0\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"token\":\"Super token address\"}},\"updateFlow(address,address,int96,bytes)\":{\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct) # App callbacks - AgreementUpdated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver) NOTE: - Only the flow sender may update the flow rate - Even if the flow rate is zero, the flow is not deleted from the system - Deposit amount will be adjusted accordingly - No new gas fee is charged\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"updateFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"A flow updated by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"sender\":\"Flow sender address (has granted permissions)\",\"token\":\"Super token address\"}},\"updateFlowOperatorPermissions(address,address,uint8,int96,bytes)\":{\"details\":\"msgSender from `ctx` updates permissions for the `flowOperator` with `flowRateAllowance`\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\",\"token\":\"Super token address\"}}},\"title\":\"Constant Flow Agreement interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createFlow(address,address,int96,bytes)\":{\"notice\":\"Create a flow betwen ctx.msgSender and receiver\"},\"createFlowByOperator(address,address,address,int96,bytes)\":{\"notice\":\"Create a flow between sender and receiver\"},\"deleteFlow(address,address,address,bytes)\":{\"notice\":\"Delete the flow between sender and receiver\"},\"deleteFlowByOperator(address,address,address,bytes)\":{\"notice\":\"Delete the flow between sender and receiver\"},\"getDepositRequiredForFlowRate(address,int96)\":{\"notice\":\"Get the deposit required for creating the flow\"},\"getFlowByID(address,bytes32)\":{\"notice\":\"Get flow data using agreementId\"},\"getFlowOperatorData(address,address,address)\":{\"notice\":\"Get the permissions of a flow operator between `sender` and `flowOperator` for `token`\"},\"getFlowOperatorDataByID(address,bytes32)\":{\"notice\":\"Get flow operator using flowOperatorId\"},\"getMaximumFlowRateFromDeposit(address,uint256)\":{\"notice\":\"Get the maximum flow rate allowed with the deposit\"},\"revokeFlowOperatorWithFullControl(address,address,bytes)\":{\"notice\":\"msgSender from `ctx` revokes `flowOperator` create/update/delete permissions\"},\"updateFlow(address,address,int96,bytes)\":{\"notice\":\"Update the flow rate between ctx.msgSender and receiver\"},\"updateFlowByOperator(address,address,address,int96,bytes)\":{\"notice\":\"Update a flow between sender and receiver\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":\"IConstantFlowAgreementV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb96bb6cb0fe88ddf5b890b6826f7f7585cf6e94223c76d8e2fb269779afe4445\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://b864597ae952222f0f43c66943492966013021c4171d5ef4f7357c047dfd737c\",\"dweb:/ipfs/Qmcr7xicfmPDD343B34ETP3XrdU9Vi1z3zxJSgqLipfQmY\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x518b869178aafffde40c654a1e24b3b1a2b5e42e5e8f17562556f404db8b9434\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://458ce84666b418fa3a7569c0e109db4d920fb6d1cb67ebc4c497c9c71107d93b\",\"dweb:/ipfs/QmV9nqhRF7MDGkV6UW3WWcqeXov2vmqHuRcvbqaaV8yP6u\"]}},\"version\":1}",
794
794
  "bytecode": "0x",
795
795
  "deployedBytecode": "0x",
796
796
  "immutableReferences": {},
@@ -4842,7 +4842,7 @@
4842
4842
  },
4843
4843
  "networks": {},
4844
4844
  "schemaVersion": "3.4.7",
4845
- "updatedAt": "2022-05-27T08:56:18.778Z",
4845
+ "updatedAt": "2022-06-06T10:25:55.151Z",
4846
4846
  "devdoc": {
4847
4847
  "author": "Superfluid",
4848
4848
  "events": {