Skip to content
Open
Show file tree
Hide file tree
Changes from 77 commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
ba1b067
distinguish between unsettled and claimable balance in pools
d10r Jun 26, 2025
f76ce16
add assertions
d10r Jun 26, 2025
62697d9
Merge branch 'dev' into 2025-06-fix-claimable
d10r Jun 30, 2025
ab01e42
Merge branch 'dev' into 2025-06-fix-claimable
d10r Jul 3, 2025
ea53653
merge dev
d10r Jul 15, 2025
9c433c5
use new reader function
d10r Jul 15, 2025
b56c0f3
Merge branch 'dev' into 2025-06-fix-claimable
d10r Jul 16, 2025
d6687ab
small fix
d10r Jul 16, 2025
5dad0c3
updated changelog
d10r Jul 16, 2025
882f654
limit valid input size for _settle()
hellwolf Jul 17, 2025
e27cb41
remove some silly type convrersions
hellwolf Jul 17, 2025
5a0fb64
chore: remove redundant words in comment (#2092)
pavedroad Jul 17, 2025
b856b8a
added GDA function which allows the pool admin to connect pools on be…
d10r Jul 17, 2025
cd864bd
add mechanism for opting out of autoconnect using SimpleACL
d10r Jul 17, 2025
88e17f3
revert forge-std upgrade
d10r Jul 17, 2025
8db285b
simplification
d10r Jul 17, 2025
101bdfc
don't restrict autoconnect to pool admin, more testing
d10r Jul 17, 2025
701ea33
fix stack too deep?
d10r Jul 17, 2025
4dce3b7
fix flag
d10r Jul 17, 2025
5a603b2
more shanghai
d10r Jul 17, 2025
77e3f9d
Merge branch 'dev' into 2025-07-autoconnect
d10r Jul 18, 2025
d3bfd95
updated CHANGELOG
d10r Jul 18, 2025
d6c9135
undo disable test
d10r Jul 18, 2025
2aa5ccd
added tryConnectPoolFor to SuperTokenV1Library
d10r Jul 18, 2025
b4e6342
CFASuperAppBase: disable autoconnect in constructor
d10r Jul 18, 2025
c195923
set admin roles in deploy script
d10r Jul 18, 2025
bd1d158
solidity semantic money to shanghai evm
hellwolf Jul 22, 2025
c76c167
added countUsedSlots to SlotsBitmapLibrary
hellwolf Jul 22, 2025
64484ae
GDAv1: use SlotsBitmapLibrary
hellwolf Jul 22, 2025
d8ea0dc
added some asserts to SlotsBitmapLibraryPropertyTest._listData
hellwolf Jul 22, 2025
79109ec
revert solidity semantic money to paris evm
hellwolf Jul 22, 2025
d578842
fix testTryConnectPoolFor
hellwolf Jul 22, 2025
dff96ab
fix testAutoConnectSlotLimit
hellwolf Jul 22, 2025
c855ecf
update flake inputs
hellwolf Jul 23, 2025
e0ca43f
solc: 0.8.26 -> 0.8.30
hellwolf Jul 23, 2025
4ca4195
Merge branch 'update-solc' into 2025-07-autoconnect
hellwolf Jul 23, 2025
ae36ff0
ethereum-contracts: update CHANGELOG.md
hellwolf Jul 23, 2025
365b087
update more solc_version to 0.8.30
hellwolf Jul 23, 2025
5ec58cd
Merge branch 'update-solc' into 2025-07-autoconnect
hellwolf Jul 23, 2025
7b2e30f
revert the wrong fix
hellwolf Jul 23, 2025
7aef0ee
Merge branch 'dev' into 2025-07-autoconnect
hellwolf Jul 23, 2025
cdf0482
small code refactoring to _setPoolConnection
hellwolf Jul 23, 2025
9b4da71
fix tests
d10r Jul 23, 2025
283402a
fix flaky test
d10r Jul 23, 2025
c5fd4d5
fix scheduler test
d10r Jul 24, 2025
088eba3
renamed to _setPoolConnectionFor
d10r Jul 24, 2025
03b81ba
revert if trying to connect a pool for a pool
d10r Jul 24, 2025
5652c9d
calldata storage location for PoolConfig
d10r Jul 24, 2025
21da9df
squeeze out a few more bytes
d10r Jul 24, 2025
5608475
more contract size margin for GDA
d10r Jul 24, 2025
5a3639d
fix import
d10r Jul 24, 2025
31bf0b3
no calldata magic
d10r Jul 31, 2025
eee4100
migrated ethereum-contracts to OZ5
d10r Aug 1, 2025
d4cebf3
switch to OZ5 in all packages
d10r Aug 1, 2025
b296937
add Initializable
d10r Aug 1, 2025
b012934
workaround to the Address issue
d10r Aug 4, 2025
248f289
adjust tests to new (custom) errors
d10r Aug 4, 2025
253ab3b
unbreak single-arg use
d10r Aug 4, 2025
e34e685
adjust automation contracts
d10r Aug 4, 2025
9fde692
updated changelog
d10r Aug 5, 2025
aa88d2d
added openzeppelin-contracts submodule
d10r Aug 6, 2025
33aac3e
hardhat config for lib in root
d10r Aug 6, 2025
9bb6b92
install openzeppelin-contracts a submodule instead of npm package
d10r Aug 6, 2025
116fe41
change path to openzeppelin-v5
d10r Aug 6, 2025
6b53d00
adjust symlink path
d10r Aug 6, 2025
deef970
adjust workaround to new path
d10r Aug 7, 2025
db9cefe
more path adjustments
d10r Aug 7, 2025
bc35b72
merge dev
d10r Aug 7, 2025
288b660
don't allow deployment of SimpleACL in upgrade path
d10r Aug 7, 2025
b3c6a8c
tryConnectPool: don't allow zero address for member argument
d10r Aug 7, 2025
a24ef82
fix deploy script
d10r Aug 7, 2025
67415dd
back to shanghai (where ganache is stuck)
d10r Aug 7, 2025
91f26a7
add comment
d10r Aug 7, 2025
dd78939
updated changelog
d10r Aug 7, 2025
075a1c0
adjust foundry mappings
d10r Aug 7, 2025
a7686ff
more detailled changelog, specify OZ as peer dependency
d10r Aug 7, 2025
e6ffae8
Update README.md
Olexandr88 Aug 13, 2025
5093e4c
Merge branch 'dev' into 2025-08-oz5
hellwolf Aug 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
[submodule "lib/forge-std"]
path = lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "lib/openzeppelin-contracts"]
path = lib/openzeppelin-contracts
url = https://github.com/OpenZeppelin/openzeppelin-contracts.git
branch = release-v5.4
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<h1>Welcome to superfluid protocol-monorepo 👋</h1>

<p>
<a href="#superfluid-finance/ethereum-contracts" target="_blank">
<a href="https://www.npmjs.com/package/@superfluid-finance/ethereum-contracts" target="_blank">
<img alt="npm" src="https://img.shields.io/npm/v/@superfluid-finance/ethereum-contracts?label=ethereum-contracts">
</a>
<a href="#superfluid-finance/subgraph" target="_blank">
Expand Down
1 change: 1 addition & 0 deletions lib/openzeppelin-contracts
Submodule openzeppelin-contracts added at c64a1e
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
},
"scripts": {
"prepare": "husky && npm run git-submodule:init",
"postinstall": "ln -fs ../lib/openzeppelin-contracts node_modules/@openzeppelin-v5",
"lint": "run-s -l lint:*",
"lint:syncpack": "syncpack lint",
"lint:shellcheck": "tasks/shellcheck-all-tasks.sh",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ contract Manager is IManager, Ownable {
address _cfa,
uint64 _minLower,
uint64 _minUpper
) {
) Ownable(_msgSender()) {
if (_cfa == address(0)) revert ZeroAddress();
if (_minLower >= _minUpper) revert WrongLimits(_minLower, _minUpper);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ abstract contract StrategyBase is IStrategy, Ownable {
/// @dev IStrategy.manager implementation.
address public override manager;

constructor() Ownable(_msgSender()) { }

/// @dev IStrategy.changeManager implementation.
function changeManager(address newManager)
external
Expand Down
3 changes: 2 additions & 1 deletion packages/automation-contracts/autowrap/foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ optimizer_runs = 200
remappings = [
'@superfluid-finance/solidity-semantic-money/src/=packages/solidity-semantic-money/src/',
'@superfluid-finance/ethereum-contracts/=packages/ethereum-contracts/',
'@openzeppelin/=node_modules/@openzeppelin/',
'@openzeppelin-v5/=lib/openzeppelin-contracts/',
'@openzeppelin/=lib/openzeppelin-contracts/',
'ds-test/=lib/forge-std/lib/ds-test/src/',
'forge-std/=lib/forge-std/src/']
out = 'packages/automation-contracts/autowrap/out/default'
Expand Down
12 changes: 12 additions & 0 deletions packages/automation-contracts/autowrap/hardhat.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,22 @@ require("@nomiclabs/hardhat-etherscan");
require("hardhat-deploy");
require("hardhat/config");
require("./script/addStrategy");
const {TASK_COMPILE_GET_REMAPPINGS} = require("hardhat/builtin-tasks/task-names");

// You need to export an object to set up your config
// Go to https://hardhat.org/config/ to learn more

// Remapping for OpenZeppelin contracts
subtask(TASK_COMPILE_GET_REMAPPINGS).setAction(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

async (_, __, runSuper) => {
const remappings = await runSuper();
return {
...remappings,
"@openzeppelin/contracts/": "@openzeppelin-v5/contracts/",
};
}
);

/**
* @type import('hardhat/config').HardhatUserConfig
*/
Expand Down
1 change: 0 additions & 1 deletion packages/automation-contracts/autowrap/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
"description": "Open contracts that allow upgrading underlying token to supertokens based on running stream",
"version": "0.3.0",
"devDependencies": {
"@openzeppelin/contracts": "^4.9.6",
"@superfluid-finance/ethereum-contracts": "^1.13.0",
"@superfluid-finance/metadata": "^1.6.0"
},
Expand Down
7 changes: 4 additions & 3 deletions packages/automation-contracts/autowrap/test/Manager.t.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
import { ISuperToken } from "@superfluid-finance/ethereum-contracts/contracts/superfluid/SuperToken.sol";
import { SuperTokenV1Library } from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol";
import { FoundrySuperfluidTester } from "@superfluid-finance/ethereum-contracts/test/foundry/FoundrySuperfluidTester.t.sol";
Expand Down Expand Up @@ -108,7 +109,7 @@ contract ManagerTests is FoundrySuperfluidTester {
vm.prank(admin);
manager.setLimits(newMinLower, newMinUpper);
// non owner can't set new limits
vm.expectRevert(bytes("Ownable: caller is not the owner"));
vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, address(this)));
manager.setLimits(newMinLower, newMinUpper);
}

Expand All @@ -124,7 +125,7 @@ contract ManagerTests is FoundrySuperfluidTester {
manager.addApprovedStrategy(address(wrapStrategy));
vm.stopPrank();
// non owner can't add new strategy
vm.expectRevert(bytes("Ownable: caller is not the owner"));
vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, address(this)));
manager.addApprovedStrategy(address(wrapStrategy));
bool isStrategyApproved = manager.approvedStrategies(address(wrapStrategy));
assertTrue(isStrategyApproved, "strategy should be register");
Expand All @@ -135,7 +136,7 @@ contract ManagerTests is FoundrySuperfluidTester {
//add strategy to be removed
manager.addApprovedStrategy(address(wrapStrategy));
// non owner can't add new strategy
vm.expectRevert(bytes("Ownable: caller is not the owner"));
vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, address(this)));
manager.removeApprovedStrategy(address(wrapStrategy));
vm.startPrank(admin);
vm.expectEmit(true, true, true, true);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
import { ISuperToken } from "@superfluid-finance/ethereum-contracts/contracts/superfluid/SuperToken.sol";
import { SuperTokenV1Library } from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol";
import { FoundrySuperfluidTester } from "@superfluid-finance/ethereum-contracts/test/foundry/FoundrySuperfluidTester.t.sol";
Expand Down Expand Up @@ -75,7 +76,7 @@ contract WrapStrategyTests is FoundrySuperfluidTester {
function testCannotChangeManagerContractIfNotOwner() public {
Manager newManager = new Manager(address(sf.cfa), MIN_LOWER, MIN_UPPER);
vm.prank(admin);
vm.expectRevert(bytes("Ownable: caller is not the owner"));
vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, admin));
wrapStrategy.changeManager(address(newManager));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
import { SuperAppBase } from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperAppBase.sol";
import { SuperTokenV1Library } from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol";
import { IVestingSchedulerV2 } from "./interface/IVestingSchedulerV2.sol";
import { SafeMath } from "@openzeppelin/contracts/utils/math/SafeMath.sol";
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";

contract VestingSchedulerV2 is IVestingSchedulerV2, SuperAppBase {
Expand Down Expand Up @@ -221,10 +220,7 @@ contract VestingSchedulerV2 is IVestingSchedulerV2, SuperAppBase {
remainderAmount: remainderAmount
});
} else {
uint256 cliffAmount = SafeMath.mul(
cliffPeriod,
SafeCast.toUint256(flowRate)
);
uint256 cliffAmount = cliffPeriod * SafeCast.toUint256(flowRate);
params = ScheduleCreationParams({
superToken: superToken,
sender: sender,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
pragma solidity ^0.8.0;

/// @dev OpenZeppelin Imports
import {SafeMath} from "@openzeppelin/contracts/utils/math/SafeMath.sol";
import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol";

/// @dev Superfluid Protocol Imports
Expand Down Expand Up @@ -532,7 +531,7 @@ contract VestingSchedulerV3 is IVestingSchedulerV3, IRelayRecipient {
});
} else {
// Linear Default Cliff (calculated based on the overall vesting flow rate)
cliffAmount = SafeMath.mul(cliffPeriod, SafeCast.toUint256(flowRate));
cliffAmount = cliffPeriod * SafeCast.toUint256(flowRate);
params = ScheduleCreationParams({
superToken: superToken,
sender: sender,
Expand Down
3 changes: 2 additions & 1 deletion packages/automation-contracts/scheduler/foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ optimizer_runs = 200
remappings = [
'@superfluid-finance/solidity-semantic-money/src/=packages/solidity-semantic-money/src/',
'@superfluid-finance/ethereum-contracts/=packages/ethereum-contracts/',
'@openzeppelin/=node_modules/@openzeppelin/',
'@openzeppelin-v5/=lib/openzeppelin-contracts/',
'@openzeppelin/=lib/openzeppelin-contracts/',
'ds-test/=lib/forge-std/lib/ds-test/src/',
'forge-std/=lib/forge-std/src/']
out = 'packages/automation-contracts/scheduler/out/default'
Expand Down
12 changes: 12 additions & 0 deletions packages/automation-contracts/scheduler/hardhat.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,22 @@ require("@nomiclabs/hardhat-ethers");
require("@nomiclabs/hardhat-etherscan");
require("hardhat-deploy");
require("hardhat/config");
const {TASK_COMPILE_GET_REMAPPINGS} = require("hardhat/builtin-tasks/task-names");

// You need to export an object to set up your config
// Go to https://hardhat.org/config/ to learn more

// Remapping for OpenZeppelin contracts
subtask(TASK_COMPILE_GET_REMAPPINGS).setAction(
async (_, __, runSuper) => {
const remappings = await runSuper();
return {
...remappings,
"@openzeppelin/contracts/": "@openzeppelin-v5/contracts/",
};
}
);

/**
* @type import('hardhat/config').HardhatUserConfig
*/
Expand Down
1 change: 0 additions & 1 deletion packages/automation-contracts/scheduler/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
"description": "Open contracts that allow scheduling streams and vestings onchain",
"version": "1.3.0",
"devDependencies": {
"@openzeppelin/contracts": "^4.9.6",
"@superfluid-finance/ethereum-contracts": "^1.13.0",
"@superfluid-finance/metadata": "^1.6.0"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { IVestingSchedulerV2 } from "./../contracts/interface/IVestingSchedulerV
import { VestingSchedulerV2 } from "./../contracts/VestingSchedulerV2.sol";
import { FoundrySuperfluidTester } from "@superfluid-finance/ethereum-contracts/test/foundry/FoundrySuperfluidTester.t.sol";
import { SuperTokenV1Library } from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol";
import { SafeMath } from "@openzeppelin/contracts/utils/math/SafeMath.sol";
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
import "forge-std/console.sol";

Expand Down Expand Up @@ -899,7 +898,7 @@ contract VestingSchedulerV2Tests is FoundrySuperfluidTester {
);

console.log("Revert with overflow.");
vm.expectRevert("SafeCast: value doesn't fit in 96 bits");
vm.expectRevert(); // SafeCastOverflowedIntDowncast
Copy link
Contributor

@hellwolf hellwolf Aug 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is no reference to it?

vestingScheduler.createVestingScheduleFromAmountAndDuration(
superToken,
bob,
Expand Down Expand Up @@ -1961,7 +1960,7 @@ contract VestingSchedulerV2Tests is FoundrySuperfluidTester {
);

console.log("Revert with overflow.");
vm.expectRevert("SafeCast: value doesn't fit in 96 bits");
vm.expectRevert(); // SafeCastOverflowedIntDowncast
vestingScheduler.createVestingScheduleFromAmountAndDuration(
superToken,
bob,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1105,7 +1105,7 @@ contract VestingSchedulerV3Tests is FoundrySuperfluidTester {
);

console.log("Revert with overflow.");
vm.expectRevert("SafeCast: value doesn't fit in 96 bits");
vm.expectRevert(); // SafeCastOverflowedIntDowncast
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

vestingScheduler.createVestingScheduleFromAmountAndDuration(
superToken,
bob,
Expand Down Expand Up @@ -2189,7 +2189,7 @@ contract VestingSchedulerV3Tests is FoundrySuperfluidTester {
);

console.log("Revert with overflow.");
vm.expectRevert("SafeCast: value doesn't fit in 96 bits");
vm.expectRevert(); // SafeCastOverflowedIntDowncast
vestingScheduler.createVestingScheduleFromAmountAndDuration(
superToken,
bob,
Expand Down
18 changes: 18 additions & 0 deletions packages/ethereum-contracts/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,24 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- `ISuperfluidPool`: `getClaimable` and `getClaimableNow` could previously return non-zero values for connected pools, which was inconsistent with what `claimAll` would actually do in this situation (claim nothing).

### Breaking
- Updated OpenZeppelin library from v.4.9.6 to v5.4.0.
The import path now includes the major version, making it easier for contracts integrating with this protocol to use a different major version of OpenZeppelin.
Projects using Superfluid contracts as a dependency need to configure a mapping:
- Foundry: add this to remappings: `'@openzeppelin-v5/=lib/openzeppelin-contracts/',`
- Hardhat (>=v2.17.2): add `@openzeppelin/contracts` as a project dependency and a subtask in your hardhat config:
```
import { TASK_COMPILE_GET_REMAPPINGS } from "hardhat/builtin-tasks/task-names";

subtask(TASK_COMPILE_GET_REMAPPINGS).setAction(
async (_, __, runSuper) => {
const remappings = await runSuper();
return {
...remappings,
"@openzeppelin-v5/contracts/": "@openzeppelin/contracts/",
};
}
);
```
- PoolMemberNFT pruning: `IPoolMemberNFT` and `PoolMemberNFT` removed, `POOL_MEMBER_NFT()` removed from `ISuperToken`.

## [v1.13.0]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
} from "../interfaces/superfluid/ISuperfluid.sol";
import { ISuperfluidToken } from "../interfaces/superfluid/ISuperfluidToken.sol";

import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
import { SafeCast } from "@openzeppelin-v5/contracts/utils/math/SafeCast.sol";


/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
SuperfluidGovernanceConfigs
} from "../interfaces/superfluid/ISuperfluid.sol";
import { AgreementBase } from "./AgreementBase.sol";
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
import { SafeCast } from "@openzeppelin-v5/contracts/utils/math/SafeCast.sol";
import { AgreementLibrary } from "./AgreementLibrary.sol";
import { SolvencyHelperLibrary } from "../libs/SolvencyHelperLibrary.sol";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: AGPLv3
pragma solidity ^0.8.23;

import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
import { SafeCast } from "@openzeppelin-v5/contracts/utils/math/SafeCast.sol";

import {
IInstantDistributionAgreementV1, ISuperfluidToken
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: AGPLv3
pragma solidity ^0.8.23;
// open-zeppelin
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
import { SafeCast } from "@openzeppelin-v5/contracts/utils/math/SafeCast.sol";
// semantic-money
import {
BasicParticle,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// solhint-disable not-rely-on-time
pragma solidity ^0.8.23;

import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
import { SafeCast } from "@openzeppelin-v5/contracts/utils/math/SafeCast.sol";

import { ISuperfluid, ISuperfluidGovernance, IAccessControl } from "../../interfaces/superfluid/ISuperfluid.sol";
import {
Expand Down Expand Up @@ -319,7 +319,7 @@ contract GeneralDistributionAgreementV1 is AgreementBase, TokenMonad, IGeneralDi
{
newCtx = ctx;

if (pool.superToken().isPool(this, memberAddr)) {
if (memberAddr == address(0) || pool.superToken().isPool(this, memberAddr)) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sneaky.

revert GDA_CANNOT_CONNECT_POOL();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: AGPLv3
pragma solidity ^0.8.23;

import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
import { IERC721Metadata } from "@openzeppelin-v5/contracts/token/ERC721/extensions/IERC721Metadata.sol";
import { IPoolAdminNFT } from "../../interfaces/agreements/gdav1/IPoolAdminNFT.sol";
import { PoolNFTBase } from "./PoolNFTBase.sol";
import { IGeneralDistributionAgreementV1, ISuperfluid } from "../../interfaces/superfluid/ISuperfluid.sol";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ pragma solidity ^0.8.23;

// Notes: We use these interfaces in natspec documentation below, grep @inheritdoc
// solhint-disable-next-line no-unused-import
import { IERC165, IERC721, IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
import { IERC165 } from "@openzeppelin-v5/contracts/interfaces/IERC165.sol";
import { IERC721 } from "@openzeppelin-v5/contracts/token/ERC721/IERC721.sol";
import { UUPSProxiable } from "../../upgradability/UUPSProxiable.sol";
import { IGeneralDistributionAgreementV1, ISuperfluid } from "../../interfaces/superfluid/ISuperfluid.sol";
import { ISuperTokenFactory } from "../../interfaces/superfluid/ISuperTokenFactory.sol";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ pragma solidity ^0.8.23;

// Notes: We use these interfaces in natspec documentation below, grep @inheritdoc
// solhint-disable-next-line no-unused-import
import { IERC20, IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
import { IERC20, IERC20Metadata } from "@openzeppelin-v5/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import { SafeCast } from "@openzeppelin-v5/contracts/utils/math/SafeCast.sol";
import {
BasicParticle,
SemanticMoney,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: AGPLv3
pragma solidity ^0.8.23;

import { BeaconProxy } from "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";
import { BeaconProxy } from "@openzeppelin-v5/contracts/proxy/beacon/BeaconProxy.sol";
import { ISuperfluidToken } from "../../interfaces/superfluid/ISuperfluidToken.sol";
import { SuperfluidPool } from "./SuperfluidPool.sol";
import { PoolConfig, PoolERC20Metadata } from "../../interfaces/agreements/gdav1/IGeneralDistributionAgreementV1.sol";
Expand Down
Loading
Loading