Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1,178 changes: 589 additions & 589 deletions .gas-snapshot

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions crates/bindings/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ sol!(
sol! {
#![sol(all_derives = true)]
interface DeployerISP {
function iInterpreter() public view returns(address);
function iStore() public view returns(address);
function iParser() public view returns(address);
function I_INTERPRETER() public view returns(address);
function I_STORE() public view returns(address);
function I_PARSER() public view returns(address);
}
}
6 changes: 3 additions & 3 deletions crates/dispair/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ impl DISPair {
.read(
ReadContractParametersBuilder::default()
.address(deployer)
.call(DeployerISP::iInterpreterCall {})
.call(DeployerISP::I_INTERPRETERCall {})
.build()
.map_err(DISPairError::ReadContractParametersBuilderError)?,
)
Expand All @@ -46,7 +46,7 @@ impl DISPair {
.read(
ReadContractParametersBuilder::default()
.address(deployer)
.call(DeployerISP::iStoreCall {})
.call(DeployerISP::I_STORECall {})
.build()
.map_err(DISPairError::ReadContractParametersBuilderError)?,
)
Expand All @@ -56,7 +56,7 @@ impl DISPair {
.read(
ReadContractParametersBuilder::default()
.address(deployer)
.call(DeployerISP::iParserCall {})
.call(DeployerISP::I_PARSERCall {})
.build()
.map_err(DISPairError::ReadContractParametersBuilderError)?,
)
Expand Down
6 changes: 3 additions & 3 deletions crates/eval/src/eval.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::error::ForkCallError;
use crate::fork::{ForkTypedReturn, Forker};
use alloy::primitives::{Address, U256};
use rain_interpreter_bindings::DeployerISP::{iInterpreterCall, iStoreCall};
use rain_interpreter_bindings::DeployerISP::{I_INTERPRETERCall, I_STORECall};
use rain_interpreter_bindings::IInterpreterStoreV3::FullyQualifiedNamespace;
use rain_interpreter_bindings::IInterpreterV4::{EvalV4, eval4Call};
use rain_interpreter_bindings::IParserV2::parse2Call;
Expand Down Expand Up @@ -112,15 +112,15 @@ impl Forker {
.await?;

let store = self
.alloy_call(Address::default(), deployer, iStoreCall {}, decode_errors)
.alloy_call(Address::default(), deployer, I_STORECall {}, decode_errors)
.await?
.typed_return;

let interpreter = self
.alloy_call(
Address::default(),
deployer,
iInterpreterCall {},
I_INTERPRETERCall {},
decode_errors,
)
.await?
Expand Down
4 changes: 2 additions & 2 deletions crates/eval/src/fork.rs
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,7 @@ mod tests {
providers::Provider,
};
use rain_interpreter_bindings::{
DeployerISP::iParserCall,
DeployerISP::I_PARSERCall,
IInterpreterStoreV3::{getCall, setCall},
};
use rain_interpreter_test_fixtures::LocalEvm;
Expand Down Expand Up @@ -547,7 +547,7 @@ mod tests {

let from_address = Address::default();
let to_address = deployer;
let call = iParserCall {};
let call = I_PARSERCall {};
let result = forker
.alloy_call(from_address, to_address, call, false)
.await
Expand Down
2 changes: 1 addition & 1 deletion script/BuildPointers.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
LibRainterpreterReferenceExtern,
EXTERN_PARSE_META_BUILD_DEPTH
} from "src/concrete/extern/RainterpreterReferenceExtern.sol";
import {LibAllStandardOps, AuthoringMetaV2} from "src/lib/op/LibAllStandardOps.sol";
import {LibAllStandardOps} from "src/lib/op/LibAllStandardOps.sol";
import {LibCodeGen} from "rain.sol.codegen/lib/LibCodeGen.sol";
import {LibGenParseMeta} from "rain.interpreter.interface/lib/codegen/LibGenParseMeta.sol";
import {LibFs} from "rain.sol.codegen/lib/LibFs.sol";
Expand Down
4 changes: 4 additions & 0 deletions script/Deploy.sol
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,23 @@ contract Deploy is Script {
vm.startBroadcast(deployerPrivateKey);

RainterpreterParser parser = new RainterpreterParser();
//forge-lint: disable-next-line(unsafe-cheatcode)
vm.writeFile("deployments/latest/RainterpreterParser", vm.toString(address(parser)));

RainterpreterStore store = new RainterpreterStore();
//forge-lint: disable-next-line(unsafe-cheatcode)
vm.writeFile("deployments/latest/RainterpreterStore", vm.toString(address(store)));

Rainterpreter interpreter = new Rainterpreter();
//forge-lint: disable-next-line(unsafe-cheatcode)
vm.writeFile("deployments/latest/Rainterpreter", vm.toString(address(interpreter)));

RainterpreterExpressionDeployer deployer = new RainterpreterExpressionDeployer(
RainterpreterExpressionDeployerConstructionConfigV2(address(interpreter), address(store), address(parser))
);
LibDescribedByMeta.emitForDescribedAddress(metaboard, deployer, constructionMeta);

//forge-lint: disable-next-line(unsafe-cheatcode)
vm.writeFile("deployments/latest/RainterpreterExpressionDeployer", vm.toString(address(deployer)));

vm.stopBroadcast();
Expand Down
1 change: 0 additions & 1 deletion src/abstract/BaseRainterpreterExternNPE2.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ pragma solidity =0.8.25;

import {ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol";

import {BadInputs} from "../error/ErrExtern.sol";
import {Pointer} from "rain.solmem/lib/LibPointer.sol";
import {LibStackPointer} from "rain.solmem/lib/LibStackPointer.sol";
import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol";
Expand Down
3 changes: 2 additions & 1 deletion src/abstract/BaseRainterpreterSubParserNPE2.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ pragma solidity =0.8.25;
import {ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol";
import {LibBytes, Pointer} from "rain.solmem/lib/LibBytes.sol";

// AuthoringMetaV2 exported for convenience.
//forge-lint: disable-next-line(unused-import)
import {ISubParserV4, AuthoringMetaV2} from "rain.interpreter.interface/interface/unstable/ISubParserV4.sol";
import {IncompatibleSubParser} from "../error/ErrSubParse.sol";
import {LibSubParse, ParseState} from "../lib/parse/LibSubParse.sol";
import {CMASK_RHS_WORD_TAIL} from "rain.string/lib/parse/LibParseCMask.sol";
import {LibParse, OperandV2} from "../lib/parse/LibParse.sol";
Expand Down
15 changes: 5 additions & 10 deletions src/concrete/Rainterpreter.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,7 @@
pragma solidity =0.8.25;

import {ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol";
import {LibPointer, Pointer} from "rain.solmem/lib/LibPointer.sol";
import {LibStackPointer} from "rain.solmem/lib/LibStackPointer.sol";
import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol";
import {LibMemoryKV, MemoryKV, MemoryKVKey, MemoryKVVal} from "rain.lib.memkv/lib/LibMemoryKV.sol";
import {LibCast} from "rain.lib.typecast/LibCast.sol";
import {LibDataContract} from "rain.datacontract/lib/LibDataContract.sol";
import {LibMemoryKV, MemoryKVKey, MemoryKVVal} from "rain.lib.memkv/lib/LibMemoryKV.sol";

import {LibEval} from "../lib/eval/LibEval.sol";
import {LibInterpreterStateDataContract} from "../lib/state/LibInterpreterStateDataContract.sol";
Expand All @@ -19,10 +14,10 @@ import {
EvalV4,
StackItem
} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol";
import {
BYTECODE_HASH as INTERPRETER_BYTECODE_HASH,
OPCODE_FUNCTION_POINTERS
} from "../generated/Rainterpreter.pointers.sol";
import
// Exported for convenience.
//forge-lint: disable-next-line(unused-import)
{BYTECODE_HASH as INTERPRETER_BYTECODE_HASH, OPCODE_FUNCTION_POINTERS} from "../generated/Rainterpreter.pointers.sol";
import {IOpcodeToolingV1} from "rain.sol.codegen/interface/IOpcodeToolingV1.sol";

/// @title Rainterpreter
Expand Down
30 changes: 14 additions & 16 deletions src/concrete/RainterpreterExpressionDeployer.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,14 @@ pragma solidity =0.8.25;
import {ERC165, IERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol";
import {Pointer, LibPointer} from "rain.solmem/lib/LibPointer.sol";
import {LibStackPointer} from "rain.solmem/lib/LibStackPointer.sol";
import {LibDataContract, DataContractMemoryContainer} from "rain.datacontract/lib/LibDataContract.sol";
import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol";
import {IParserV2} from "rain.interpreter.interface/interface/IParserV2.sol";
import {IParserPragmaV1, PragmaV1} from "rain.interpreter.interface/interface/IParserPragmaV1.sol";

import {
UnexpectedConstructionMetaHash,
UnexpectedInterpreterBytecodeHash,
UnexpectedStoreBytecodeHash,
UnexpectedParserBytecodeHash,
UnexpectedPointers
UnexpectedParserBytecodeHash
} from "../error/ErrDeploy.sol";
import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol";
import {IDescribedByMetaV1} from "rain.metadata/interface/IDescribedByMetaV1.sol";
Expand All @@ -23,16 +20,14 @@ import {IInterpreterV4} from "rain.interpreter.interface/interface/unstable/IInt
import {LibIntegrityCheck} from "../lib/integrity/LibIntegrityCheck.sol";
import {LibInterpreterStateDataContract} from "../lib/state/LibInterpreterStateDataContract.sol";
import {LibAllStandardOps} from "../lib/op/LibAllStandardOps.sol";
import {LibParse, LibParseMeta} from "../lib/parse/LibParse.sol";
import {Rainterpreter, INTERPRETER_BYTECODE_HASH} from "./Rainterpreter.sol";
import {INTERPRETER_BYTECODE_HASH} from "./Rainterpreter.sol";
import {PARSER_BYTECODE_HASH} from "./RainterpreterParser.sol";
import {STORE_BYTECODE_HASH} from "./RainterpreterStore.sol";
import {
INTEGRITY_FUNCTION_POINTERS,
DESCRIBED_BY_META_HASH
} from "../generated/RainterpreterExpressionDeployer.pointers.sol";
import {IIntegrityToolingV1} from "rain.sol.codegen/interface/IIntegrityToolingV1.sol";
import {IParserV1View} from "rain.interpreter.interface/interface/deprecated/IParserV1View.sol";
import {RainterpreterParser} from "./RainterpreterParser.sol";

/// All config required to construct a `Rainterpreter`.
Expand Down Expand Up @@ -60,20 +55,23 @@ contract RainterpreterExpressionDeployer is

/// The interpreter with known bytecode that this deployer is constructed
/// for.
IInterpreterV4 public immutable iInterpreter;
//slither-disable-next-line naming-convention
IInterpreterV4 public immutable I_INTERPRETER;
/// The store with known bytecode that this deployer is constructed for.
IInterpreterStoreV2 public immutable iStore;
RainterpreterParser public immutable iParser;
//slither-disable-next-line naming-convention
IInterpreterStoreV2 public immutable I_STORE;
//slither-disable-next-line naming-convention
RainterpreterParser public immutable I_PARSER;

constructor(RainterpreterExpressionDeployerConstructionConfigV2 memory config) {
// Set the immutables.
IInterpreterV4 interpreter = IInterpreterV4(config.interpreter);
IInterpreterStoreV2 store = IInterpreterStoreV2(config.store);
RainterpreterParser parser = RainterpreterParser(config.parser);

iInterpreter = interpreter;
iStore = store;
iParser = parser;
I_INTERPRETER = interpreter;
I_STORE = store;
I_PARSER = parser;

// Guard against an interpreter with unknown bytecode.
bytes32 interpreterHash;
Expand Down Expand Up @@ -111,7 +109,7 @@ contract RainterpreterExpressionDeployer is

/// @inheritdoc IParserV2
function parse2(bytes memory data) external view virtual override returns (bytes memory) {
(bytes memory bytecode, bytes32[] memory constants) = iParser.unsafeParse(data);
(bytes memory bytecode, bytes32[] memory constants) = I_PARSER.unsafeParse(data);

uint256 size = LibInterpreterStateDataContract.serializeSize(bytecode, constants);
bytes memory serialized;
Expand All @@ -135,9 +133,9 @@ contract RainterpreterExpressionDeployer is
/// more gas efficient to call the parser directly.
/// @inheritdoc IParserPragmaV1
function parsePragma1(bytes calldata data) external view virtual override returns (PragmaV1 memory) {
// We know the iParser is also an IParserPragmaV1 because we enforced
// We know the I_PARSER is also an IParserPragmaV1 because we enforced
// the bytecode hash in the constructor.
return iParser.parsePragma1(data);
return I_PARSER.parsePragma1(data);
}

/// Defines all the function pointers to integrity checks. This is the
Expand Down
12 changes: 7 additions & 5 deletions src/concrete/RainterpreterParser.sol
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
// SPDX-License-Identifier: CAL
pragma solidity =0.8.25;

import {IERC165, ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol";
import {ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol";

import {LibParse} from "../lib/parse/LibParse.sol";
import {IParserPragmaV1, PragmaV1} from "rain.interpreter.interface/interface/IParserPragmaV1.sol";
import {PragmaV1} from "rain.interpreter.interface/interface/IParserPragmaV1.sol";
import {LibParseState, ParseState} from "../lib/parse/LibParseState.sol";
import {LibParsePragma} from "../lib/parse/LibParsePragma.sol";
import {LibParseLiteral} from "../lib/parse/literal/LibParseLiteral.sol";
import {LibAllStandardOps} from "../lib/op/LibAllStandardOps.sol";
import {LibBytes, Pointer} from "rain.solmem/lib/LibBytes.sol";
import {LibParseInterstitial} from "../lib/parse/LibParseInterstitial.sol";
import {
BYTECODE_HASH as PARSER_BYTECODE_HASH,
LITERAL_PARSER_FUNCTION_POINTERS,
// Exported for convenience.
//forge-lint: disable-next-line(unused-import)
BYTECODE_HASH as PARSER_BYTECODE_HASH,
OPERAND_HANDLER_FUNCTION_POINTERS,
PARSE_META,
// Exported for convenience.
//forge-lint: disable-next-line(unused-import)
PARSE_META_BUILD_DEPTH
} from "../generated/RainterpreterParser.pointers.sol";
import {IParserV1View} from "rain.interpreter.interface/interface/deprecated/IParserV1View.sol";
import {IParserToolingV1} from "rain.sol.codegen/interface/IParserToolingV1.sol";

/// @title RainterpreterParser
Expand Down
2 changes: 2 additions & 0 deletions src/concrete/RainterpreterStore.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import {
LibNamespace, FullyQualifiedNamespace, StateNamespace
} from "rain.interpreter.interface/lib/ns/LibNamespace.sol";

// Exported for convenience.
//forge-lint: disable-next-line(unused-import)
import {BYTECODE_HASH as STORE_BYTECODE_HASH} from "../generated/RainterpreterStore.pointers.sol";

/// Thrown when a `set` call is made with an odd number of arguments.
Expand Down
13 changes: 9 additions & 4 deletions src/concrete/extern/RainterpreterReferenceExtern.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ import {
IParserToolingV1,
ISubParserToolingV1
} from "../../abstract/BaseRainterpreterSubParserNPE2.sol";
import {LibExtern, EncodedExternDispatchV2, IInterpreterExternV4, StackItem} from "../../lib/extern/LibExtern.sol";
import {LibSubParse} from "../../lib/parse/LibSubParse.sol";
import {StackItem} from "../../lib/extern/LibExtern.sol";
import {LibParseState, ParseState} from "../../lib/parse/LibParseState.sol";
import {LibParseOperand} from "../../lib/parse/LibParseOperand.sol";
import {LibParseLiteral} from "../../lib/parse/literal/LibParseLiteral.sol";
// OP_INDEX_INCREMENT exported for convenience
//forge-lint: disable-next-line(unused-import)
import {LibExternOpIntInc, OP_INDEX_INCREMENT} from "../../lib/extern/reference/op/LibExternOpIntInc.sol";
Comment on lines +16 to 18
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Reconsider the "exported for convenience" pattern.

Importing symbols solely to re-export them (with lint suppressions) creates maintenance overhead and suppresses legitimate warnings. If OP_INDEX_INCREMENT needs to be available to consumers of this contract, consider:

  1. Having consumers import directly from LibExternOpIntInc
  2. Creating a dedicated exports/barrel file
  3. Actually using the symbol in this file if it's needed

The same pattern appears at lines 28-30 with EXTERN_PARSE_META_BUILD_DEPTH.

🤖 Prompt for AI Agents
In src/concrete/extern/RainterpreterReferenceExtern.sol around lines 16-18 (and
similarly at lines 28-30), the file is importing constants solely to re-export
them with lint suppressions which hides unused-import warnings and increases
maintenance; remove the unused imports and corresponding forge-lint disable
comments, and either (a) update consumers to import OP_INDEX_INCREMENT and
EXTERN_PARSE_META_BUILD_DEPTH directly from their source LibExternOpIntInc and
the other library, or (b) create a dedicated barrel/exports file that re-exports
these symbols and update consumers to import from that barrel, or (c) if the
constants are actually needed here, reference them explicitly so the imports are
used; pick one approach, apply it consistently for both occurrences, and run the
linter to ensure warnings are resolved.

import {LibExternOpStackOperandNPE2} from "../../lib/extern/reference/op/LibExternOpStackOperandNPE2.sol";
import {LibExternOpContextSenderNPE2} from "../../lib/extern/reference/op/LibExternOpContextSenderNPE2.sol";
Expand All @@ -25,6 +25,8 @@ import {LibParseLiteralDecimal} from "../../lib/parse/literal/LibParseLiteralDec
import {
DESCRIBED_BY_META_HASH,
PARSE_META as SUB_PARSER_PARSE_META,
// Exported for convenience
//forge-lint: disable-next-line(unused-import)
PARSE_META_BUILD_DEPTH as EXTERN_PARSE_META_BUILD_DEPTH,
SUB_PARSER_WORD_PARSERS,
OPERAND_HANDLER_FUNCTION_POINTERS,
Expand All @@ -48,6 +50,8 @@ uint256 constant SUB_PARSER_LITERAL_PARSERS_LENGTH = 1;
bytes constant SUB_PARSER_LITERAL_REPEAT_KEYWORD = bytes("ref-extern-repeat-");

/// @dev The keyword for the repeat literal parser, as a bytes32.
// Constant is a safe cast because the length is less than 32 bytes.
//forge-lint: disable-next-line(unsafe-typecast)
bytes32 constant SUB_PARSER_LITERAL_REPEAT_KEYWORD_BYTES32 = bytes32(SUB_PARSER_LITERAL_REPEAT_KEYWORD);

/// @dev The number of bytes in the repeat literal keyword.
Expand All @@ -56,7 +60,8 @@ uint256 constant SUB_PARSER_LITERAL_REPEAT_KEYWORD_BYTES_LENGTH = 18;
/// @dev The mask to apply to the dispatch bytes when parsing to determin whether
/// the dispatch is for the repeat literal parser.
bytes32 constant SUB_PARSER_LITERAL_REPEAT_KEYWORD_MASK =
bytes32(~((1 << (32 - SUB_PARSER_LITERAL_REPEAT_KEYWORD_BYTES_LENGTH) * 8) - 1));
//forge-lint: disable-next-line(incorrect-shift)
bytes32(~((1 << (32 - SUB_PARSER_LITERAL_REPEAT_KEYWORD_BYTES_LENGTH) * 8) - 1));

/// @dev The index of the repeat literal parser in the literal parser function
/// pointers.
Expand Down
2 changes: 1 addition & 1 deletion src/generated/RainterpreterExpressionDeployer.pointers.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ pragma solidity ^0.8.25;
// file needs the contract to exist so that it can be compiled.

/// @dev Hash of the known bytecode.
bytes32 constant BYTECODE_HASH = bytes32(0xe3d6726ebb0cb694b6c88b45a3df99b8b44522a59daad6cd0dccc11864f6893b);
bytes32 constant BYTECODE_HASH = bytes32(0xddb67ea8aaa24f161feaaa0de916cd6d911a57af11bacdaeef24d5e08080161f);

/// @dev The hash of the meta that describes the contract.
bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xb2500441a27ea683f814327be6e43c90f516b8f033203ad3e0ba2cde847fb0ba);
Expand Down
2 changes: 2 additions & 0 deletions src/lib/extern/LibExtern.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import {
IInterpreterExternV4,
ExternDispatchV2,
EncodedExternDispatchV2,
// Export for convenience.
//forge-lint: disable-next-line(unused-import)
StackItem
} from "rain.interpreter.interface/interface/unstable/IInterpreterExternV4.sol";

Expand Down
2 changes: 0 additions & 2 deletions src/lib/extern/reference/literal/LibParseLiteralRepeat.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
// SPDX-License-Identifier: CAL
pragma solidity ^0.8.25;

import {LibParseLiteralDecimal} from "../../../parse/literal/LibParseLiteralDecimal.sol";

/// @title LibParseLiteralRepeat
/// This is a library that mimics the literal libraries elsewhere in this repo,
/// but structured to fit sub parsing rather than internal logic. It is NOT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ pragma solidity ^0.8.25;

import {OperandV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol";
import {LibSubParse} from "../../../parse/LibSubParse.sol";
import {IInterpreterExternV4} from "rain.interpreter.interface/interface/unstable/IInterpreterExternV4.sol";
import {
CONTEXT_BASE_COLUMN,
CONTEXT_BASE_ROW_CALLING_CONTRACT
Expand Down
2 changes: 0 additions & 2 deletions src/lib/integrity/LibIntegrityCheck.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,8 @@ import {
BadOpInputsLength,
BadOpOutputsLength
} from "../../error/ErrIntegrity.sol";
import {IInterpreterV4, SourceIndexV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol";
import {LibBytecode} from "rain.interpreter.interface/lib/bytecode/LibBytecode.sol";
import {OperandV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol";
import {IInterpreterStoreV2, StateNamespace} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol";
import {BadOpInputsLength} from "../../lib/integrity/LibIntegrityCheck.sol";

struct IntegrityCheckState {
Expand Down
1 change: 0 additions & 1 deletion src/lib/op/00/LibOpExternNP.sol
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import {
StackItem
} from "rain.interpreter.interface/interface/unstable/IInterpreterExternV4.sol";
import {LibExtern} from "../../extern/LibExtern.sol";
import {LibMemCpy} from "rain.solmem/lib/LibMemCpy.sol";
import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol";
import {LibBytes32Array} from "rain.solmem/lib/LibBytes32Array.sol";
import {ERC165Checker} from "openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol";
Expand Down
Loading