Skip to content

Commit

Permalink
wip on i9r bump
Browse files Browse the repository at this point in the history
  • Loading branch information
thedavidmeister committed Feb 28, 2024
1 parent 6ef88c4 commit 29f72fe
Show file tree
Hide file tree
Showing 22 changed files with 87 additions and 108 deletions.
50 changes: 19 additions & 31 deletions src/abstract/FlowCommon.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,21 @@ pragma solidity =0.8.19;

import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol";
import {Pointer} from "rain.solmem/lib/LibPointer.sol";
import {IInterpreterCallerV2, SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";
import {
IInterpreterCallerV2,
SignedContextV1,
EvaluableConfigV3
} from "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";
import {LibEncodedDispatch} from "rain.interpreter.interface/lib/caller/LibEncodedDispatch.sol";
import {LibContext} from "rain.interpreter/src/lib/caller/LibContext.sol";
import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol";
import {UnregisteredFlow, MIN_FLOW_SENTINELS} from "../interface/unstable/IFlowV4.sol";
import {LibEvaluable, EvaluableV2} from "rain.interpreter.interface/lib/caller/LibEvaluable.sol";
import {
DeployerDiscoverableMetaV2,
DeployerDiscoverableMetaV2ConstructionConfig
} from "rain.interpreter/src/abstract/DeployerDiscoverableMetaV2.sol";
import {
LibEvaluable,
Evaluable,
EvaluableConfigV3,
SourceIndexV2,
IInterpreterV2,
IInterpreterStoreV2,
DEFAULT_STATE_NAMESPACE
} from "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import {SourceIndexV2, IInterpreterV2, IInterpreterStoreV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV2.sol";

} from "rain.interpreter.interface/interface/unstable/IInterpreterV2.sol";
import {MulticallUpgradeable as Multicall} from
"openzeppelin-contracts-upgradeable/contracts/utils/MulticallUpgradeable.sol";
import {ERC721HolderUpgradeable as ERC721Holder} from
Expand Down Expand Up @@ -81,17 +80,10 @@ uint256 constant FLOW_IS_NOT_REGISTERED = 0;
/// This is a known issue with `Multicall` so in the future, we may refactor
/// `FlowCommon` to not use `Multicall` and instead implement flow batching
/// directly in the flow contracts.
abstract contract FlowCommon is
ERC721Holder,
ERC1155Holder,
Multicall,
ReentrancyGuard,
IInterpreterCallerV2,
DeployerDiscoverableMetaV2
{
abstract contract FlowCommon is ERC721Holder, ERC1155Holder, Multicall, ReentrancyGuard, IInterpreterCallerV2 {
using LibUint256Array for uint256[];
using LibUint256Matrix for uint256[];
using LibEvaluable for Evaluable;
using LibEvaluable for EvaluableV2;

/// @dev This mapping tracks all flows that are registered at initialization.
/// This is used to ensure that only registered flows are evaluated.
Expand All @@ -106,7 +98,7 @@ abstract contract FlowCommon is
/// @param evaluable The evaluable of the flow that was registered. The hash
/// of this evaluable is used as the key in `registeredFlows` so users MUST
/// provide the same evaluable when they evaluate the flow.
event FlowInitialized(address sender, Evaluable evaluable);
event FlowInitialized(address sender, EvaluableV2 evaluable);

/// Forwards config to `DeployerDiscoverableMetaV2` and disables
/// initializers. The initializers are disabled because inheriting contracts
Expand All @@ -115,11 +107,7 @@ abstract contract FlowCommon is
/// in the implementation contract forces that the only way to initialize
/// the contract is via. a proxy, which should also strongly encourage
/// patterns that _atomically_ clone and initialize via. some factory.
/// @param metaHash As per `DeployerDiscoverableMetaV2`.
/// @param config As per `DeployerDiscoverableMetaV2`.
constructor(bytes32 metaHash, DeployerDiscoverableMetaV2ConstructionConfig memory config)
DeployerDiscoverableMetaV2(metaHash, config)
{
constructor() {
_disableInitializers();
}

Expand All @@ -130,7 +118,7 @@ abstract contract FlowCommon is
/// movements at runtime for the inheriting contract.
/// @param flowMinOutputs The minimum number of outputs for each flow. All
/// flows share the same minimum number of outputs for simplicity.
function flowCommonInit(EvaluableConfigV2[] memory evaluableConfigs, uint256 flowMinOutputs)
function flowCommonInit(EvaluableConfigV3[] memory evaluableConfigs, uint256 flowMinOutputs)
internal
onlyInitializing
{
Expand All @@ -149,7 +137,7 @@ abstract contract FlowCommon is
}

EvaluableConfigV3 memory config;
Evaluable memory evaluable;
EvaluableV2 memory evaluable;
// Every evaluable MUST deploy cleanly (e.g. pass integrity checks)
// otherwise the entire initialization will fail.
for (uint256 i = 0; i < evaluableConfigs.length; ++i) {
Expand All @@ -163,7 +151,7 @@ abstract contract FlowCommon is
(IInterpreterV2 interpreter, IInterpreterStoreV2 store, address expression) = config
.deployer
.deployExpression2(config.bytecode, config.constants, LibUint256Array.arrayFrom(flowMinOutputs));
evaluable = Evaluable(interpreter, store, expression);
evaluable = EvaluableV2(interpreter, store, expression);
// There's no way to set this mapping before the external
// contract call because the output of the external contract
// call is used to build the evaluable that we're registering.
Expand Down Expand Up @@ -195,7 +183,7 @@ abstract contract FlowCommon is
/// @return The top of the stack after evaluation.
/// @return The key-value pairs that were emitted during evaluation.
function _flowStack(
Evaluable memory evaluable,
EvaluableV2 memory evaluable,
uint256[] memory callerContext,
SignedContextV1[] memory signedContexts
) internal returns (Pointer, Pointer, uint256[] memory) {
Expand Down
19 changes: 6 additions & 13 deletions src/concrete/basic/Flow.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,31 @@
pragma solidity =0.8.19;

import {ICloneableV2, ICLONEABLE_V2_SUCCESS} from "rain.factory/src/interface/ICloneableV2.sol";
import {FlowCommon, DeployerDiscoverableMetaV2ConstructionConfig, LibContext} from "../../abstract/FlowCommon.sol";
import {FlowCommon, LibContext} from "../../abstract/FlowCommon.sol";
import {IFlowV4, MIN_FLOW_SENTINELS} from "../../interface/unstable/IFlowV4.sol";
import {LibFlow} from "../../lib/LibFlow.sol";
import {LibUint256Matrix} from "rain.solmem/lib/LibUint256Matrix.sol";
import {Pointer} from "rain.solmem/lib/LibPointer.sol";
import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol";
import {Evaluable, EvaluableConfigV2} from "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import {EvaluableV2} from "rain.interpreter.interface/lib/caller/LibEvaluable.sol";
import {FlowTransferV1} from "../../interface/unstable/IFlowV4.sol";
import {SignedContextV1} from "rain.interpreter/src/interface/IInterpreterCallerV2.sol";

/// @dev The hash of the meta data expected to be passed to `FlowCommon`'s
/// constructor.
bytes32 constant CALLER_META_HASH = bytes32(0x95de68a447a477b8fab10701f1265b3e85a98b24710b3e40e6a96aa6d76263bc);
import {SignedContextV1, EvaluableConfigV3} from "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";

/// @title Flow
/// See `IFlowV4` docs.
contract Flow is ICloneableV2, IFlowV4, FlowCommon {
using LibUint256Matrix for uint256[];
using LibUint256Array for uint256[];

/// Forwards to `FlowCommon` constructor.
constructor(DeployerDiscoverableMetaV2ConstructionConfig memory config) FlowCommon(CALLER_META_HASH, config) {}

/// Overloaded typed initialize function MUST revert with this error.
/// As per `ICloneableV2` interface.
function initialize(EvaluableConfigV2[] memory) external pure {
function initialize(EvaluableConfigV3[] memory) external pure {
revert InitializeSignatureFn();
}

/// @inheritdoc ICloneableV2
function initialize(bytes calldata data) external initializer returns (bytes32) {
EvaluableConfigV2[] memory flowConfig = abi.decode(data, (EvaluableConfigV2[]));
EvaluableConfigV3[] memory flowConfig = abi.decode(data, (EvaluableConfigV3[]));
emit Initialize(msg.sender, flowConfig);

flowCommonInit(flowConfig, MIN_FLOW_SENTINELS);
Expand All @@ -46,7 +39,7 @@ contract Flow is ICloneableV2, IFlowV4, FlowCommon {
}

/// @inheritdoc IFlowV4
function flow(Evaluable memory evaluable, uint256[] memory callerContext, SignedContextV1[] memory signedContexts)
function flow(EvaluableV2 memory evaluable, uint256[] memory callerContext, SignedContextV1[] memory signedContexts)
external
virtual
nonReentrant
Expand Down
18 changes: 9 additions & 9 deletions src/concrete/erc1155/FlowERC1155.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pragma solidity =0.8.19;
import {ERC1155Upgradeable as ERC1155} from
"openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol";

import {LibEncodedDispatch, EncodedDispatch} from "rain.interpreter/src/lib/caller/LibEncodedDispatch.sol";
import {LibEncodedDispatch, EncodedDispatch} from "rain.interpreter.interface/lib/caller/LibEncodedDispatch.sol";
import {Sentinel, LibStackSentinel} from "rain.solmem/lib/LibStackSentinel.sol";
import {ICloneableV2, ICLONEABLE_V2_SUCCESS} from "rain.factory/src/interface/ICloneableV2.sol";
import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol";
Expand All @@ -22,16 +22,16 @@ import {
FLOW_ERC1155_MIN_FLOW_SENTINELS
} from "../../interface/unstable/IFlowERC1155V4.sol";
import {LibBytecode} from "rain.interpreter.interface/lib/bytecode/LibBytecode.sol";
import {IInterpreterV1} from "rain.interpreter/src/interface/IInterpreterV1.sol";
import {IInterpreterStoreV1} from "rain.interpreter/src/interface/IInterpreterStoreV1.sol";
import {Evaluable, DEFAULT_STATE_NAMESPACE} from "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import {
IInterpreterV2, DEFAULT_STATE_NAMESPACE
} from "rain.interpreter.interface/interface/unstable/IInterpreterV2.sol";
import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/unstable/IInterpreterStoreV2.sol";
import {EvaluableV2} from "rain.interpreter.interface/lib/caller/LibEvaluable.sol";
import {Pointer} from "rain.solmem/lib/LibPointer.sol";
import {LibFlow} from "../../lib/LibFlow.sol";
import {SourceIndex} from "rain.interpreter/src/interface/IInterpreterV1.sol";
import {
FlowCommon, DeployerDiscoverableMetaV2ConstructionConfig, ERC1155Receiver
} from "../../abstract/FlowCommon.sol";
import {LibContext} from "rain.interpreter/src/lib/caller/LibContext.sol";
import {SourceIndexV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV2.sol";
import {FlowCommon, ERC1155Receiver} from "../../abstract/FlowCommon.sol";
import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol";

/// @dev The hash of the meta data expected by the `FlowCommon` constructor.
bytes32 constant CALLER_META_HASH = bytes32(0x7ea70f837234357ec1bb5b777e04453ebaf3ca778a98805c4bb20a738d559a21);
Expand Down
18 changes: 9 additions & 9 deletions src/concrete/erc20/FlowERC20.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,19 @@ import {
FLOW_ERC20_MIN_FLOW_SENTINELS
} from "../../interface/unstable/IFlowERC20V4.sol";
import {LibBytecode} from "rain.interpreter.interface/lib/bytecode/LibBytecode.sol";
import {EncodedDispatch, LibEncodedDispatch} from "rain.interpreter/src/lib/caller/LibEncodedDispatch.sol";
import {EncodedDispatch, LibEncodedDispatch} from "rain.interpreter.interface/lib/caller/LibEncodedDispatch.sol";
import {Sentinel, LibStackSentinel} from "rain.solmem/lib/LibStackSentinel.sol";
import {LibFlow} from "../../lib/LibFlow.sol";
import {FlowCommon} from "../../abstract/FlowCommon.sol";
import {
FlowCommon,
DeployerDiscoverableMetaV2,
DeployerDiscoverableMetaV2ConstructionConfig
} from "../../abstract/FlowCommon.sol";
import {SourceIndex, IInterpreterV1} from "rain.interpreter/src/interface/IInterpreterV1.sol";
import {IInterpreterStoreV1} from "rain.interpreter/src/interface/IInterpreterStoreV1.sol";
SourceIndexV2,
IInterpreterV2,
DEFAULT_STATE_NAMESPACE
} from "rain.interpreter.interface/interface/unstable/IInterpreterV2.sol";
import {IInterpreterStoreV1} from "rain.interpreter.interface/interface/IInterpreterStoreV1.sol";
import {Pointer} from "rain.solmem/lib/LibPointer.sol";
import {Evaluable, DEFAULT_STATE_NAMESPACE} from "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import {LibContext} from "rain.interpreter/src/lib/caller/LibContext.sol";
import {EvaluableV2} from "rain.interpreter.interface/lib/caller/LibEvaluable.sol";
import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol";

/// @dev The hash of the meta data expected to be passed to `FlowCommon`'s
/// constructor.
Expand Down
17 changes: 7 additions & 10 deletions src/concrete/erc721/FlowERC721.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {ERC721Upgradeable as ERC721} from
import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol";
import {LibUint256Matrix} from "rain.solmem/lib/LibUint256Matrix.sol";
import {Sentinel, LibStackSentinel} from "rain.solmem/lib/LibStackSentinel.sol";
import {EncodedDispatch, LibEncodedDispatch} from "rain.interpreter/src/lib/caller/LibEncodedDispatch.sol";
import {EncodedDispatch, LibEncodedDispatch} from "rain.interpreter.interface/lib/caller/LibEncodedDispatch.sol";
import {ICloneableV2, ICLONEABLE_V2_SUCCESS} from "rain.factory/src/interface/ICloneableV2.sol";
import {
IFlowERC721V4,
Expand All @@ -24,17 +24,14 @@ import {
FLOW_ERC721_MIN_FLOW_SENTINELS
} from "../../interface/unstable/IFlowERC721V4.sol";
import {LibBytecode} from "rain.interpreter.interface/lib/bytecode/LibBytecode.sol";
import {SourceIndex} from "rain.interpreter/src/interface/IInterpreterV1.sol";
import {SourceIndexV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV2.sol";
import {LibFlow} from "../../lib/LibFlow.sol";
import {FlowCommon, LibContext, ERC1155Receiver} from "../../abstract/FlowCommon.sol";
import {EvaluableV2} from "rain.interpreter.interface/lib/caller/LibEvaluable.sol";
import {
FlowCommon,
DeployerDiscoverableMetaV2ConstructionConfig,
LibContext,
ERC1155Receiver
} from "../../abstract/FlowCommon.sol";
import {Evaluable, DEFAULT_STATE_NAMESPACE} from "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import {IInterpreterV1} from "rain.interpreter/src/interface/IInterpreterV1.sol";
import {IInterpreterStoreV1} from "rain.interpreter/src/interface/IInterpreterStoreV1.sol";
IInterpreterV2, DEFAULT_STATE_NAMESPACE
} from "rain.interpreter.interface/interface/unstable/IInterpreterV2.sol";
import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/unstable/IInterpreterStoreV2.sol";
import {Pointer} from "rain.solmem/lib/LibPointer.sol";
import {RAIN_FLOW_SENTINEL, BurnerNotOwner} from "../../interface/unstable/IFlowERC721V4.sol";

Expand Down
3 changes: 1 addition & 2 deletions src/interface/IFlowERC1155V3.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import {SignedContextV1} from "rain.interpreter/src/interface/IInterpreterCallerV2.sol";
import {EvaluableConfigV2} from "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import {SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";

import "./IFlowV3.sol";

Expand Down
4 changes: 2 additions & 2 deletions src/interface/IFlowERC20V3.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/IInterpreterCallerV2.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";
import {Sentinel} from "rain.solmem/lib/LibStackSentinel.sol";
import {MIN_FLOW_SENTINELS, SENTINEL_HIGH_BITS, FlowTransferV1} from "./IFlowV3.sol";

Expand Down
4 changes: 2 additions & 2 deletions src/interface/IFlowERC721V3.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/IInterpreterCallerV2.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";

import "./IFlowV3.sol";

Expand Down
5 changes: 3 additions & 2 deletions src/interface/IFlowV3.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/IInterpreterCallerV2.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import {Evaluable, EvaluableConfig} from "rain.interpreter.interface/interface/deprecated/IInterpreterCallerV1.sol";
import {SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";
import {Sentinel} from "rain.solmem/lib/LibStackSentinel.sol";

/// Thrown when the flow being evaluated is unregistered.
Expand Down
4 changes: 2 additions & 2 deletions src/interface/deprecated/v1/IFlowERC1155V1.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/deprecated/IInterpreterCallerV1.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import "rain.interpreter.interface/interface/deprecated/IInterpreterCallerV1.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";

import "./IFlowV1.sol";

Expand Down
4 changes: 2 additions & 2 deletions src/interface/deprecated/v1/IFlowERC20V1.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/deprecated/IInterpreterCallerV1.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import "rain.interpreter.interface/interface/deprecated/IInterpreterCallerV1.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";

import "./IFlowV1.sol";

Expand Down
4 changes: 2 additions & 2 deletions src/interface/deprecated/v1/IFlowERC721V1.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/deprecated/IInterpreterCallerV1.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import "rain.interpreter.interface/interface/deprecated/IInterpreterCallerV1.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";

import "./IFlowV1.sol";

Expand Down
4 changes: 2 additions & 2 deletions src/interface/deprecated/v1/IFlowV1.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/deprecated/IInterpreterCallerV1.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import "rain.interpreter.interface/interface/deprecated/IInterpreterCallerV1.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";

struct FlowConfig {
// https://github.com/ethereum/solidity/issues/13597
Expand Down
4 changes: 2 additions & 2 deletions src/interface/deprecated/v2/IFlowERC1155V2.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/IInterpreterCallerV2.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";

import "./IFlowV2.sol";

Expand Down
4 changes: 2 additions & 2 deletions src/interface/deprecated/v2/IFlowERC20V2.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/IInterpreterCallerV2.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";

import "./IFlowV2.sol";

Expand Down
4 changes: 2 additions & 2 deletions src/interface/deprecated/v2/IFlowERC721V2.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/IInterpreterCallerV2.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";

import "./IFlowV2.sol";

Expand Down
4 changes: 2 additions & 2 deletions src/interface/deprecated/v2/IFlowV2.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.18;

import "rain.interpreter/src/interface/IInterpreterCallerV2.sol";
import "rain.interpreter/src/lib/caller/LibEvaluable.sol";
import "rain.interpreter.interface/interface/IInterpreterCallerV2.sol";
import "rain.interpreter.interface/lib/caller/LibEvaluable.sol";

struct FlowConfig {
// https://github.com/ethereum/solidity/issues/13597
Expand Down
Loading

0 comments on commit 29f72fe

Please sign in to comment.