@superfluid-finance/ethereum-contracts 1.1.2-dev.6e6d5ef.0 → 1.1.2-dev.9b08025.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 (109) hide show
  1. package/README.md +11 -39
  2. package/build/contracts/AccessControl.json +1 -1
  3. package/build/contracts/AccessControlEnumerable.json +1 -1
  4. package/build/contracts/Address.json +1 -1
  5. package/build/contracts/AgreementBase.json +1 -1
  6. package/build/contracts/AgreementLibrary.json +1 -1
  7. package/build/contracts/BaseRelayRecipient.json +1 -1
  8. package/build/contracts/BatchLiquidator.json +1 -1
  9. package/build/contracts/BatchOperation.json +1 -1
  10. package/build/contracts/CFAv1Library.json +1 -1
  11. package/build/contracts/CallUtils.json +1 -1
  12. package/build/contracts/ClosingOnUpdateFlowTestApp.json +1 -1
  13. package/build/contracts/ConstantFlowAgreementV1.json +1 -1
  14. package/build/contracts/Context.json +1 -1
  15. package/build/contracts/ContextDefinitions.json +1 -1
  16. package/build/contracts/Create2.json +1 -1
  17. package/build/contracts/CustomSuperTokenBase.json +1 -1
  18. package/build/contracts/ERC165.json +1 -1
  19. package/build/contracts/ERC1820Implementer.json +1 -1
  20. package/build/contracts/ERC20.json +1 -1
  21. package/build/contracts/ERC20WithTokenInfo.json +1 -1
  22. package/build/contracts/ERC721.json +1 -1
  23. package/build/contracts/ERC777Helper.json +1 -1
  24. package/build/contracts/ERC777RecipientDrainingGas.json +1 -1
  25. package/build/contracts/ERC777RecipientReverting.json +1 -1
  26. package/build/contracts/EnumerableSet.json +1 -1
  27. package/build/contracts/ExclusiveInflowTestApp.json +1 -1
  28. package/build/contracts/FixedSizeData.json +1 -1
  29. package/build/contracts/FlowExchangeTestApp.json +1 -1
  30. package/build/contracts/FullUpgradableSuperTokenProxy.json +1 -1
  31. package/build/contracts/IAccessControl.json +1 -1
  32. package/build/contracts/IAccessControlEnumerable.json +1 -1
  33. package/build/contracts/IConstantFlowAgreementV1.json +1 -1
  34. package/build/contracts/IDAv1Library.json +1 -1
  35. package/build/contracts/IERC165.json +1 -1
  36. package/build/contracts/IERC1820Implementer.json +1 -1
  37. package/build/contracts/IERC1820Registry.json +1 -1
  38. package/build/contracts/IERC20.json +1 -1
  39. package/build/contracts/IERC20Metadata.json +1 -1
  40. package/build/contracts/IERC721.json +1 -1
  41. package/build/contracts/IERC721Metadata.json +1 -1
  42. package/build/contracts/IERC721Receiver.json +1 -1
  43. package/build/contracts/IERC777.json +1 -1
  44. package/build/contracts/IERC777Recipient.json +1 -1
  45. package/build/contracts/IERC777Sender.json +1 -1
  46. package/build/contracts/IInstantDistributionAgreementV1.json +1 -1
  47. package/build/contracts/IMaticBridgedNativeSuperToken.json +1 -1
  48. package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +1 -1
  49. package/build/contracts/IMultiSigWallet.json +1 -1
  50. package/build/contracts/INativeSuperToken.json +1 -1
  51. package/build/contracts/INativeSuperTokenCustom.json +1 -1
  52. package/build/contracts/IRelayRecipient.json +1 -1
  53. package/build/contracts/IResolver.json +1 -1
  54. package/build/contracts/ISETH.json +1 -1
  55. package/build/contracts/ISETHCustom.json +1 -1
  56. package/build/contracts/ISuperAgreement.json +1 -1
  57. package/build/contracts/ISuperApp.json +1 -1
  58. package/build/contracts/ISuperToken.json +1 -1
  59. package/build/contracts/ISuperTokenFactory.json +1 -1
  60. package/build/contracts/ISuperfluid.json +1 -1
  61. package/build/contracts/ISuperfluidGovernance.json +1 -1
  62. package/build/contracts/ISuperfluidToken.json +1 -1
  63. package/build/contracts/ITOGAv1.json +1 -1
  64. package/build/contracts/ITOGAv2.json +1 -1
  65. package/build/contracts/Initializable.json +1 -1
  66. package/build/contracts/InstantDistributionAgreementV1.json +1 -1
  67. package/build/contracts/Int96SafeMath.json +1 -1
  68. package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +1 -1
  69. package/build/contracts/MultiFlowApp.json +1 -1
  70. package/build/contracts/NativeSuperTokenProxy.json +1 -1
  71. package/build/contracts/NonClosableOutflowTestApp.json +1 -1
  72. package/build/contracts/Ownable.json +1 -1
  73. package/build/contracts/Proxy.json +1 -1
  74. package/build/contracts/Resolver.json +1 -1
  75. package/build/contracts/SETHProxy.json +1 -1
  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 +1 -1
  80. package/build/contracts/SlotsBitmapLibrary.json +1 -1
  81. package/build/contracts/Strings.json +1 -1
  82. package/build/contracts/SuperAppBase.json +1 -1
  83. package/build/contracts/SuperAppDefinitions.json +1 -1
  84. package/build/contracts/SuperToken.json +1 -1
  85. package/build/contracts/SuperTokenFactory.json +1 -1
  86. package/build/contracts/SuperTokenFactoryBase.json +1 -1
  87. package/build/contracts/SuperTokenFactoryHelper.json +1 -1
  88. package/build/contracts/SuperUpgrader.json +1 -1
  89. package/build/contracts/Superfluid.json +1 -1
  90. package/build/contracts/SuperfluidGovernanceBase.json +1 -1
  91. package/build/contracts/SuperfluidGovernanceConfigs.json +1 -1
  92. package/build/contracts/SuperfluidGovernanceII.json +1 -1
  93. package/build/contracts/SuperfluidGovernanceIIProxy.json +1 -1
  94. package/build/contracts/SuperfluidLoader.json +1 -1
  95. package/build/contracts/SuperfluidToken.json +1 -1
  96. package/build/contracts/TOGA.json +1 -1
  97. package/build/contracts/TestGovernance.json +1 -1
  98. package/build/contracts/TestToken.json +1 -1
  99. package/build/contracts/TokenCustodian.json +1 -1
  100. package/build/contracts/TokenInfo.json +1 -1
  101. package/build/contracts/UInt128SafeMath.json +1 -1
  102. package/build/contracts/UUPSProxiable.json +1 -1
  103. package/build/contracts/UUPSProxy.json +1 -1
  104. package/build/contracts/UUPSUtils.json +1 -1
  105. package/build/contracts-sizes.txt +4 -4
  106. package/package.json +13 -5
  107. package/scripts/deploy-erc1820.js +16 -3
  108. package/scripts/deploy-framework.js +32 -11
  109. package/artifacts/ERC1820Registry.json +0 -5
package/README.md CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  ## Usage
30
30
 
31
- If you're building a dapp using existing protocol or Super Token contracts, then you should use [`@superfluid-finance/js-sdk`](/packages/js-sdk). [Here](https://docs.superfluid.finance/superfluid/networks/networks) you can find a list of networks where the Superfluid protocol is already deployed.
31
+ If you're building a dapp using existing protocol or Super Token contracts, then you should use [`@superfluid-finance/sdk-core`](/packages/sdk-core). [Here](https://docs.superfluid.finance/superfluid/networks/networks) you can find a list of networks where the Superfluid protocol is already deployed.
32
32
 
33
33
  If you're building a smart contract that uses Superfluid protocol, or even your own [SuperApp](https://docs.superfluid.finance/), then great! This is definitely the place to be.
34
34
 
@@ -81,8 +81,9 @@ contract("My Test", accounts => {
81
81
  from: admin
82
82
  });
83
83
  });
84
+ }
84
85
  ```
85
- In order to write concise testing code, we further recommend the use of [`@superfluid-finance/js-sdk`](/packages/js-sdk) not only in your UI code, but also in JS contract tests.
86
+ In order to write concise testing code, we further recommend the use of [`@superfluid-finance/sdk-core`](/packages/sdk-core) not only in your UI code, but also in JS contract tests.
86
87
 
87
88
  ### Examples
88
89
 
@@ -163,53 +164,24 @@ yarn test
163
164
  Run a specific test using the [exclusive tests](https://mochajs.org/#exclusive-tests) feature of MochaJS:
164
165
  ```sh
165
166
  yarn pretest
166
- npx truffle test test/contracts/agreements/ConstantFlowAgreementV1.test.js
167
+ npx hardhat test test/contracts/agreements/ConstantFlowAgreementV1.test.js
167
168
  yarn posttest
168
169
  ```
169
170
 
170
171
  Run the test suite for core contracts:
171
172
  ```sh
172
- yarn pretest
173
- npx truffle test testsuites/superfluid-core.js
174
- yarn posttest
173
+ npx hardhat test testsuites/superfluid-core.js
175
174
  ```
176
175
 
177
176
  The `pretest` script starts a ganache instance with deterministic accounts in the background, the `posttest` script stops it.
178
177
  When running tests with `yarn test`, those get executed automatically (see [npm docs](https://docs.npmjs.com/cli/v7/using-npm/scripts#pre--post-scripts)).
178
+ > NOTE: You don't need to run the `pretest` and `posttest` scripts when running hardhat tests, but you do when running tests with truffle.
179
179
 
180
180
  ### TDD Session
181
181
 
182
182
  When working on the contracts, a test driven approach is recommended.
183
- In order to facilitate that, you can easily set up a test environment which uses ganache with snapshots for much faster test executions and thus iterations:
184
-
185
- First, start ganache configured as needed in a terminal window:
186
- ```sh
187
- yarn testenv:start
188
- ```
189
-
190
- Then open another terminal window and continue there.
191
- If you're not planning to modify core contracts, set an environment variable:
192
- ```sh
193
- export TESTENV_SNAPSHOT_VARS=testenv.ignore.vars
194
- ```
195
- This env variable will be used by the deploy script executed in the next step to persist a resolver address and a ganache snapshot id to the configured file.
196
- Without this variable set, the protocol contracts will be re-deployed for every new test run, making the process considerably slower.
197
- Note: if you want to modify core contracts, you **need** to have them re-deployed after every change, thus should **not** set this env variable.
198
-
199
- Next, deploy a test environment:
200
- ```sh
201
- yarn testenv:deploy
202
- ```
203
- This will deploy the protocol contracts and a Super Token named _TEST_ (which is needed by many test cases).
204
- If you have set the env `TESTENV_SNAPSHOT_VARS` before, the file it's set to should now exist and look something like this:
205
- ```sh
206
- $ cat testenv.ignore.vars
207
- RESOLVER_ADDRESS=0xF12b5dd4EAD5F743C6BaA640B0216200e89B60Da
208
- TESTENV_EVM_SNAPSHOT_ID=0x1
209
- ```
210
-
211
- Next, you should choose the tests relevant for what you're working on using the [only keyword](https://mochajs.org/#exclusive-tests).
212
- You can put the `only` keyword at any level between whole test suites (`only` appended to a top level `describe`) and individual testcases (`it`).
183
+ You should choose the tests relevant for what you're working on using the [only keyword](https://mochajs.org/#exclusive-tests).
184
+ You can put the `only` keyword at any level between whole test suites (`only` appended to a top level `describe`, e.g. `describe.only`) and individual testcases (`it`, e.g. `it.only`).
213
185
  With the testing scope defined, run:
214
186
  ```
215
187
  yarn dev
@@ -217,14 +189,14 @@ yarn dev
217
189
  This has [testsuites/all-contracts.js](testsuites/all-contracts.js) as its entrypoint, but if there's an `only` keyword at any nesting level in any of the tests traversed, only that selected subset of tests will be executed.
218
190
  The selected test(s) will run once when starting the session and re-run everytime you save changes in a relevant file.
219
191
 
220
- After finishing the session, you can stop the ganache instance you started in the first step (Ctrl-C).
192
+ After finishing the session, you can stop the hardhat instance you started in the first step (Ctrl-C).
221
193
  Also, don't forget to remove `only` keywords from test files before making git commits.
222
194
 
223
- To generate jpeg image charts from the test output run first install these dependencies: numpy , pandas , plotly and kaleido by running:
195
+ To generate jpeg image charts from the test output run first install these dependencies: numpy, pandas, plotly and kaleido by running:
224
196
  ```
225
197
  python3 -m pip install -U libraryName
226
198
  ```
227
- After that is done , just simply run the testDataToCharts script and put the folder containing the csv files as the first argument e.g
199
+ After that is done, just simply run the testDataToCharts script and put the folder containing the csv files as the first argument e.g
228
200
  ```
229
201
  python3 testDataToCharts.py output
230
202
  ```
@@ -7906,7 +7906,7 @@
7906
7906
  },
7907
7907
  "networks": {},
7908
7908
  "schemaVersion": "3.4.4",
7909
- "updatedAt": "2022-03-24T16:33:05.506Z",
7909
+ "updatedAt": "2022-04-07T10:25:44.088Z",
7910
7910
  "devdoc": {
7911
7911
  "details": "Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.",
7912
7912
  "kind": "dev",
@@ -3223,7 +3223,7 @@
3223
3223
  },
3224
3224
  "networks": {},
3225
3225
  "schemaVersion": "3.4.4",
3226
- "updatedAt": "2022-03-24T16:33:05.510Z",
3226
+ "updatedAt": "2022-04-07T10:25:44.091Z",
3227
3227
  "devdoc": {
3228
3228
  "details": "Extension of {AccessControl} that allows enumerating the members of each role.",
3229
3229
  "kind": "dev",
@@ -7923,7 +7923,7 @@
7923
7923
  },
7924
7924
  "networks": {},
7925
7925
  "schemaVersion": "3.4.4",
7926
- "updatedAt": "2022-03-24T16:33:05.554Z",
7926
+ "updatedAt": "2022-04-07T10:25:44.144Z",
7927
7927
  "devdoc": {
7928
7928
  "details": "Collection of functions related to the address type",
7929
7929
  "kind": "dev",
@@ -1470,7 +1470,7 @@
1470
1470
  },
1471
1471
  "networks": {},
1472
1472
  "schemaVersion": "3.4.4",
1473
- "updatedAt": "2022-03-24T16:33:05.610Z",
1473
+ "updatedAt": "2022-04-07T10:25:44.195Z",
1474
1474
  "devdoc": {
1475
1475
  "author": "Superfluid",
1476
1476
  "kind": "dev",
@@ -13727,7 +13727,7 @@
13727
13727
  },
13728
13728
  "networks": {},
13729
13729
  "schemaVersion": "3.4.4",
13730
- "updatedAt": "2022-03-24T16:33:05.611Z",
13730
+ "updatedAt": "2022-04-07T10:25:44.196Z",
13731
13731
  "devdoc": {
13732
13732
  "author": "Superfluid",
13733
13733
  "details": "Helper library for building super agreement",
@@ -1156,7 +1156,7 @@
1156
1156
  },
1157
1157
  "networks": {},
1158
1158
  "schemaVersion": "3.4.4",
1159
- "updatedAt": "2022-03-24T16:33:06.666Z",
1159
+ "updatedAt": "2022-04-07T10:25:45.171Z",
1160
1160
  "devdoc": {
1161
1161
  "author": "Superfluid",
1162
1162
  "details": "A base contract to be inherited by any contract that want to receive relayed transactions A subclass must use \"_msgSender()\" instead of \"msg.sender\" MODIFIED FROM: https://github.com/opengsn/forwarder/blob/master/contracts/BaseRelayRecipient.sol",
@@ -7551,7 +7551,7 @@
7551
7551
  },
7552
7552
  "networks": {},
7553
7553
  "schemaVersion": "3.4.4",
7554
- "updatedAt": "2022-03-24T16:33:06.623Z",
7554
+ "updatedAt": "2022-04-07T10:25:45.130Z",
7555
7555
  "devdoc": {
7556
7556
  "author": "Superfluid",
7557
7557
  "kind": "dev",
@@ -10399,7 +10399,7 @@
10399
10399
  },
10400
10400
  "networks": {},
10401
10401
  "schemaVersion": "3.4.4",
10402
- "updatedAt": "2022-03-24T16:33:05.792Z",
10402
+ "updatedAt": "2022-04-07T10:25:44.372Z",
10403
10403
  "devdoc": {
10404
10404
  "author": "Superfluid",
10405
10405
  "kind": "dev",
@@ -22413,7 +22413,7 @@
22413
22413
  },
22414
22414
  "networks": {},
22415
22415
  "schemaVersion": "3.4.4",
22416
- "updatedAt": "2022-03-24T16:33:05.732Z",
22416
+ "updatedAt": "2022-04-07T10:25:44.313Z",
22417
22417
  "devdoc": {
22418
22418
  "author": "Superfluid",
22419
22419
  "details": "for working with the constant flow agreement within soliditythe first set of functions are each for callAgreement()the second set of functions are each for use in callAgreementWithContext()",
@@ -4929,7 +4929,7 @@
4929
4929
  },
4930
4930
  "networks": {},
4931
4931
  "schemaVersion": "3.4.4",
4932
- "updatedAt": "2022-03-24T16:33:05.835Z",
4932
+ "updatedAt": "2022-04-07T10:25:44.412Z",
4933
4933
  "devdoc": {
4934
4934
  "author": "Superfluid",
4935
4935
  "kind": "dev",
@@ -31558,7 +31558,7 @@
31558
31558
  },
31559
31559
  "networks": {},
31560
31560
  "schemaVersion": "3.4.4",
31561
- "updatedAt": "2022-03-24T16:33:05.863Z",
31561
+ "updatedAt": "2022-04-07T10:25:44.439Z",
31562
31562
  "devdoc": {
31563
31563
  "details": "This is CFA SuperApp that closes an updated flow.",
31564
31564
  "kind": "dev",
@@ -95421,7 +95421,7 @@
95421
95421
  },
95422
95422
  "networks": {},
95423
95423
  "schemaVersion": "3.4.4",
95424
- "updatedAt": "2022-03-24T16:33:05.618Z",
95424
+ "updatedAt": "2022-04-07T10:25:44.203Z",
95425
95425
  "devdoc": {
95426
95426
  "author": "Superfluid",
95427
95427
  "details": "Please read IConstantFlowAgreementV1 for implementation notes.For more technical notes, please visit protocol-monorepo wiki area.",
@@ -493,7 +493,7 @@
493
493
  },
494
494
  "networks": {},
495
495
  "schemaVersion": "3.4.4",
496
- "updatedAt": "2022-03-24T16:33:05.558Z",
496
+ "updatedAt": "2022-04-07T10:25:44.148Z",
497
497
  "devdoc": {
498
498
  "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.",
499
499
  "kind": "dev",
@@ -10399,7 +10399,7 @@
10399
10399
  },
10400
10400
  "networks": {},
10401
10401
  "schemaVersion": "3.4.4",
10402
- "updatedAt": "2022-03-24T16:33:05.796Z",
10402
+ "updatedAt": "2022-04-07T10:25:44.376Z",
10403
10403
  "devdoc": {
10404
10404
  "author": "Superfluid",
10405
10405
  "kind": "dev",
@@ -3231,7 +3231,7 @@
3231
3231
  },
3232
3232
  "networks": {},
3233
3233
  "schemaVersion": "3.4.4",
3234
- "updatedAt": "2022-03-24T16:33:05.559Z",
3234
+ "updatedAt": "2022-04-07T10:25:44.149Z",
3235
3235
  "devdoc": {
3236
3236
  "details": "Helper to make usage of the `CREATE2` EVM opcode easier and safer. `CREATE2` can be used to compute in advance the address where a smart contract will be deployed, which allows for interesting new mechanisms known as 'counterfactual interactions'. See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more information.",
3237
3237
  "kind": "dev",
@@ -279,7 +279,7 @@
279
279
  },
280
280
  "networks": {},
281
281
  "schemaVersion": "3.4.4",
282
- "updatedAt": "2022-03-24T16:33:05.792Z",
282
+ "updatedAt": "2022-04-07T10:25:44.371Z",
283
283
  "devdoc": {
284
284
  "author": "Superfluid NOTE: - Because of how solidity lays out its storage variables and how custom super tokens inherit the SuperToken standard implementation, it is required that the custom token proxy pads its implementation with reserved storage used by the Super Token implementation. - You will need to append your own proxy implementation after the base - Refer to SETH.sol for an example how it is used.",
285
285
  "kind": "dev",
@@ -603,7 +603,7 @@
603
603
  },
604
604
  "networks": {},
605
605
  "schemaVersion": "3.4.4",
606
- "updatedAt": "2022-03-24T16:33:05.590Z",
606
+ "updatedAt": "2022-04-07T10:25:44.177Z",
607
607
  "devdoc": {
608
608
  "details": "Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.",
609
609
  "kind": "dev",
@@ -1887,7 +1887,7 @@
1887
1887
  },
1888
1888
  "networks": {},
1889
1889
  "schemaVersion": "3.4.4",
1890
- "updatedAt": "2022-03-24T16:33:05.590Z",
1890
+ "updatedAt": "2022-04-07T10:25:44.177Z",
1891
1891
  "devdoc": {
1892
1892
  "details": "Implementation of the {IERC1820Implementer} interface. Contracts may inherit from this and call {_registerInterfaceForAddress} to declare their willingness to be implementers. {IERC1820Registry-setInterfaceImplementer} should then be called for the registration to be complete.",
1893
1893
  "kind": "dev",
@@ -20792,7 +20792,7 @@
20792
20792
  },
20793
20793
  "networks": {},
20794
20794
  "schemaVersion": "3.4.4",
20795
- "updatedAt": "2022-03-24T16:33:05.517Z",
20795
+ "updatedAt": "2022-04-07T10:25:44.098Z",
20796
20796
  "devdoc": {
20797
20797
  "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.",
20798
20798
  "kind": "dev",
@@ -506,7 +506,7 @@
506
506
  },
507
507
  "networks": {},
508
508
  "schemaVersion": "3.4.4",
509
- "updatedAt": "2022-03-24T16:33:05.827Z",
509
+ "updatedAt": "2022-04-07T10:25:44.405Z",
510
510
  "devdoc": {
511
511
  "author": "Superfluid",
512
512
  "details": "Using abstract contract instead of interfaces because old solidity does not support interface inheriting other interfaces solhint-disable-next-line no-empty-blocks",
@@ -33164,7 +33164,7 @@
33164
33164
  },
33165
33165
  "networks": {},
33166
33166
  "schemaVersion": "3.4.4",
33167
- "updatedAt": "2022-03-24T16:33:05.532Z",
33167
+ "updatedAt": "2022-04-07T10:25:44.123Z",
33168
33168
  "devdoc": {
33169
33169
  "details": "Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.",
33170
33170
  "kind": "dev",
@@ -6243,7 +6243,7 @@
6243
6243
  },
6244
6244
  "networks": {},
6245
6245
  "schemaVersion": "3.4.4",
6246
- "updatedAt": "2022-03-24T16:33:05.837Z",
6246
+ "updatedAt": "2022-04-07T10:25:44.415Z",
6247
6247
  "devdoc": {
6248
6248
  "author": "Superfluid",
6249
6249
  "kind": "dev",
@@ -17678,7 +17678,7 @@
17678
17678
  },
17679
17679
  "networks": {},
17680
17680
  "schemaVersion": "3.4.4",
17681
- "updatedAt": "2022-03-24T16:33:06.006Z",
17681
+ "updatedAt": "2022-04-07T10:25:44.567Z",
17682
17682
  "devdoc": {
17683
17683
  "kind": "dev",
17684
17684
  "methods": {},
@@ -17787,7 +17787,7 @@
17787
17787
  },
17788
17788
  "networks": {},
17789
17789
  "schemaVersion": "3.4.4",
17790
- "updatedAt": "2022-03-24T16:33:06.013Z",
17790
+ "updatedAt": "2022-04-07T10:25:44.573Z",
17791
17791
  "devdoc": {
17792
17792
  "kind": "dev",
17793
17793
  "methods": {},
@@ -14101,7 +14101,7 @@
14101
14101
  },
14102
14102
  "networks": {},
14103
14103
  "schemaVersion": "3.4.4",
14104
- "updatedAt": "2022-03-24T16:33:05.603Z",
14104
+ "updatedAt": "2022-04-07T10:25:44.189Z",
14105
14105
  "devdoc": {
14106
14106
  "details": "Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.",
14107
14107
  "kind": "dev",
@@ -31712,7 +31712,7 @@
31712
31712
  },
31713
31713
  "networks": {},
31714
31714
  "schemaVersion": "3.4.4",
31715
- "updatedAt": "2022-03-24T16:33:05.876Z",
31715
+ "updatedAt": "2022-04-07T10:25:44.451Z",
31716
31716
  "devdoc": {
31717
31717
  "details": "This is a CFA SuperApp that maintains at most one inflow from a sender at any moment. This can test the deposit allowance logic in the deleteFlow as a recipient.",
31718
31718
  "kind": "dev",
@@ -3659,7 +3659,7 @@
3659
3659
  },
3660
3660
  "networks": {},
3661
3661
  "schemaVersion": "3.4.4",
3662
- "updatedAt": "2022-03-24T16:33:05.840Z",
3662
+ "updatedAt": "2022-04-07T10:25:44.418Z",
3663
3663
  "devdoc": {
3664
3664
  "author": "Superfluid When using solidity dynamic array, first word is used to store the length of the array. For use cases that the length doesn't change, it is better to use a fixed size data premitive. To use this library: - The pointer to the storage is `slot`, the user could use `keccak256(abi.encode(...))` scheme to create collision-free slot ID for locating the data. - To load data, or erase data and get all gas refund, data length is always required.",
3665
3665
  "kind": "dev",
@@ -32343,7 +32343,7 @@
32343
32343
  },
32344
32344
  "networks": {},
32345
32345
  "schemaVersion": "3.4.4",
32346
- "updatedAt": "2022-03-24T16:33:05.892Z",
32346
+ "updatedAt": "2022-04-07T10:25:44.466Z",
32347
32347
  "devdoc": {
32348
32348
  "kind": "dev",
32349
32349
  "methods": {},
@@ -2811,7 +2811,7 @@
2811
2811
  },
2812
2812
  "networks": {},
2813
2813
  "schemaVersion": "3.4.4",
2814
- "updatedAt": "2022-03-24T16:33:06.610Z",
2814
+ "updatedAt": "2022-04-07T10:25:45.118Z",
2815
2815
  "devdoc": {
2816
2816
  "author": "Superfluid",
2817
2817
  "kind": "dev",
@@ -1882,7 +1882,7 @@
1882
1882
  },
1883
1883
  "networks": {},
1884
1884
  "schemaVersion": "3.4.4",
1885
- "updatedAt": "2022-03-24T16:33:05.512Z",
1885
+ "updatedAt": "2022-04-07T10:25:44.093Z",
1886
1886
  "devdoc": {
1887
1887
  "details": "External interface of AccessControl declared to support ERC165 detection.",
1888
1888
  "events": {
@@ -805,7 +805,7 @@
805
805
  },
806
806
  "networks": {},
807
807
  "schemaVersion": "3.4.4",
808
- "updatedAt": "2022-03-24T16:33:05.513Z",
808
+ "updatedAt": "2022-04-07T10:25:44.094Z",
809
809
  "devdoc": {
810
810
  "details": "External interface of AccessControlEnumerable declared to support ERC165 detection.",
811
811
  "kind": "dev",
@@ -5137,7 +5137,7 @@
5137
5137
  },
5138
5138
  "networks": {},
5139
5139
  "schemaVersion": "3.4.4",
5140
- "updatedAt": "2022-03-24T16:33:05.784Z",
5140
+ "updatedAt": "2022-04-07T10:25:44.364Z",
5141
5141
  "devdoc": {
5142
5142
  "author": "Superfluid",
5143
5143
  "events": {
@@ -35541,7 +35541,7 @@
35541
35541
  },
35542
35542
  "networks": {},
35543
35543
  "schemaVersion": "3.4.4",
35544
- "updatedAt": "2022-03-24T16:33:05.744Z",
35544
+ "updatedAt": "2022-04-07T10:25:44.324Z",
35545
35545
  "devdoc": {
35546
35546
  "author": "Superfluid",
35547
35547
  "details": "Set a variable of type `InitData` in the contract, then call this library's functions directly `initData.functionName()`.",
@@ -317,7 +317,7 @@
317
317
  },
318
318
  "networks": {},
319
319
  "schemaVersion": "3.4.4",
320
- "updatedAt": "2022-03-24T16:33:05.591Z",
320
+ "updatedAt": "2022-04-07T10:25:44.178Z",
321
321
  "devdoc": {
322
322
  "details": "Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.",
323
323
  "kind": "dev",
@@ -378,7 +378,7 @@
378
378
  },
379
379
  "networks": {},
380
380
  "schemaVersion": "3.4.4",
381
- "updatedAt": "2022-03-24T16:33:05.592Z",
381
+ "updatedAt": "2022-04-07T10:25:44.179Z",
382
382
  "devdoc": {
383
383
  "details": "Interface for an ERC1820 implementer, as defined in the https://eips.ethereum.org/EIPS/eip-1820#interface-implementation-erc1820implementerinterface[EIP]. Used by contracts that will be registered as implementers in the {IERC1820Registry}.",
384
384
  "kind": "dev",
@@ -2341,7 +2341,7 @@
2341
2341
  },
2342
2342
  "networks": {},
2343
2343
  "schemaVersion": "3.4.4",
2344
- "updatedAt": "2022-03-24T16:33:05.592Z",
2344
+ "updatedAt": "2022-04-07T10:25:44.179Z",
2345
2345
  "devdoc": {
2346
2346
  "details": "Interface of the global ERC1820 Registry, as defined in the https://eips.ethereum.org/EIPS/eip-1820[EIP]. Accounts may register implementers for interfaces in this registry, as well as query support. Implementers may be shared by multiple accounts, and can also implement more than a single interface for each account. Contracts can implement interfaces for themselves, but externally-owned accounts (EOA) must delegate this to a contract. {IERC165} interfaces can also be queried via the registry. For an in-depth explanation and source code analysis, see the EIP text.",
2347
2347
  "kind": "dev",
@@ -2031,7 +2031,7 @@
2031
2031
  },
2032
2032
  "networks": {},
2033
2033
  "schemaVersion": "3.4.4",
2034
- "updatedAt": "2022-03-24T16:33:05.526Z",
2034
+ "updatedAt": "2022-04-07T10:25:44.118Z",
2035
2035
  "devdoc": {
2036
2036
  "details": "Interface of the ERC20 standard as defined in the EIP.",
2037
2037
  "events": {
@@ -766,7 +766,7 @@
766
766
  },
767
767
  "networks": {},
768
768
  "schemaVersion": "3.4.4",
769
- "updatedAt": "2022-03-24T16:33:05.528Z",
769
+ "updatedAt": "2022-04-07T10:25:44.119Z",
770
770
  "devdoc": {
771
771
  "details": "Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._",
772
772
  "kind": "dev",
@@ -2999,7 +2999,7 @@
2999
2999
  },
3000
3000
  "networks": {},
3001
3001
  "schemaVersion": "3.4.4",
3002
- "updatedAt": "2022-03-24T16:33:05.547Z",
3002
+ "updatedAt": "2022-04-07T10:25:44.138Z",
3003
3003
  "devdoc": {
3004
3004
  "details": "Required interface of an ERC721 compliant contract.",
3005
3005
  "events": {
@@ -938,7 +938,7 @@
938
938
  },
939
939
  "networks": {},
940
940
  "schemaVersion": "3.4.4",
941
- "updatedAt": "2022-03-24T16:33:05.550Z",
941
+ "updatedAt": "2022-04-07T10:25:44.141Z",
942
942
  "devdoc": {
943
943
  "details": "See https://eips.ethereum.org/EIPS/eip-721",
944
944
  "kind": "dev",
@@ -498,7 +498,7 @@
498
498
  },
499
499
  "networks": {},
500
500
  "schemaVersion": "3.4.4",
501
- "updatedAt": "2022-03-24T16:33:05.549Z",
501
+ "updatedAt": "2022-04-07T10:25:44.140Z",
502
502
  "devdoc": {
503
503
  "details": "Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.",
504
504
  "kind": "dev",
@@ -4143,7 +4143,7 @@
4143
4143
  },
4144
4144
  "networks": {},
4145
4145
  "schemaVersion": "3.4.4",
4146
- "updatedAt": "2022-03-24T16:33:05.551Z",
4146
+ "updatedAt": "2022-04-07T10:25:44.141Z",
4147
4147
  "devdoc": {
4148
4148
  "details": "Interface of the ERC777Token standard as defined in the EIP. This contract uses the https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let token holders and recipients react to token movements by using setting implementers for the associated interfaces in said registry. See {IERC1820Registry} and {ERC1820Implementer}.",
4149
4149
  "kind": "dev",
@@ -556,7 +556,7 @@
556
556
  },
557
557
  "networks": {},
558
558
  "schemaVersion": "3.4.4",
559
- "updatedAt": "2022-03-24T16:33:05.553Z",
559
+ "updatedAt": "2022-04-07T10:25:44.143Z",
560
560
  "devdoc": {
561
561
  "details": "Interface of the ERC777TokensRecipient standard as defined in the EIP. Accounts can be notified of {IERC777} tokens being sent to them by having a contract implement this interface (contract holders can be their own implementer) and registering it on the https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry]. See {IERC1820Registry} and {ERC1820Implementer}.",
562
562
  "kind": "dev",
@@ -556,7 +556,7 @@
556
556
  },
557
557
  "networks": {},
558
558
  "schemaVersion": "3.4.4",
559
- "updatedAt": "2022-03-24T16:33:05.553Z",
559
+ "updatedAt": "2022-04-07T10:25:44.144Z",
560
560
  "devdoc": {
561
561
  "details": "Interface of the ERC777TokensSender standard as defined in the EIP. {IERC777} Token holders can be notified of operations performed on their tokens by having a contract implement this interface (contract holders can be their own implementer) and registering it on the https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry]. See {IERC1820Registry} and {ERC1820Implementer}.",
562
562
  "kind": "dev",
@@ -10332,7 +10332,7 @@
10332
10332
  },
10333
10333
  "networks": {},
10334
10334
  "schemaVersion": "3.4.4",
10335
- "updatedAt": "2022-03-24T16:33:05.787Z",
10335
+ "updatedAt": "2022-04-07T10:25:44.366Z",
10336
10336
  "devdoc": {
10337
10337
  "author": "Superfluid Notes: - A publisher can create as many as indices as possibly identifiable with `indexId`. - `indexId` is deliberately limited to 32 bits, to avoid the chance for sha-3 collision. Despite knowing sha-3 collision is only theoretical. - A publisher can create a subscription to an index for any subscriber. - A subscription consists of: - The index it subscribes to. - Number of units subscribed. - An index consists of: - Current value as `uint128 indexValue`. - Total units of the approved subscriptions as `uint128 totalUnitsApproved`. - Total units of the non approved subscription as `uint128 totalUnitsPending`. - A publisher can update an index with a new value that doesn't decrease. - A publisher can update a subscription with any number of units. - A publisher or a subscriber can delete a subscription and reset its units to zero. - A subscriber must approve the index in order to receive distributions from the publisher each time the index is updated. - The amount distributed is $$\\Delta{index} * units$$ - Distributions to a non approved subscription stays in the publisher's deposit until: - the subscriber approves the subscription (side effect), - the publisher updates the subscription (side effect), - the subscriber deletes the subscription even if it is never approved (side effect), - or the subscriber can explicitly claim them.",
10338
10338
  "events": {
@@ -2446,7 +2446,7 @@
2446
2446
  },
2447
2447
  "networks": {},
2448
2448
  "schemaVersion": "3.4.4",
2449
- "updatedAt": "2022-03-24T16:33:05.828Z",
2449
+ "updatedAt": "2022-04-07T10:25:44.406Z",
2450
2450
  "devdoc": {
2451
2451
  "author": "Superfluid",
2452
2452
  "details": "Matic Bridged Native SuperToken full interface",
@@ -877,7 +877,7 @@
877
877
  },
878
878
  "networks": {},
879
879
  "schemaVersion": "3.4.4",
880
- "updatedAt": "2022-03-24T16:33:05.829Z",
880
+ "updatedAt": "2022-04-07T10:25:44.407Z",
881
881
  "devdoc": {
882
882
  "author": "Superfluid",
883
883
  "details": "Functionality specific for Matic Bridged Native Super Tokens",
@@ -425,7 +425,7 @@
425
425
  },
426
426
  "networks": {},
427
427
  "schemaVersion": "3.4.4",
428
- "updatedAt": "2022-03-24T16:33:05.791Z",
428
+ "updatedAt": "2022-04-07T10:25:44.371Z",
429
429
  "devdoc": {
430
430
  "author": "Superfluid",
431
431
  "kind": "dev",