use alloy_sol_types::sol;

sol! {
    interface SymbolicVm {
        function createAddress(string calldata name) external returns (address value);
        function createBool(string calldata name) external returns (bool value);
        function createBytes(string calldata name) external returns (bytes memory value);
        function createBytes(uint256 len, string calldata name) external returns (bytes memory value);
        function createCalldata(string calldata name) external returns (bytes memory value);
        function createInt(uint256 bits, string calldata name) external returns (int256 value);
        function createString(string calldata name) external returns (string memory value);
        function createString(uint256 len, string calldata name) external returns (string memory value);
        function createUint(uint256 bits, string calldata name) external returns (uint256 value);
        function enableSymbolicStorage(address target) external;
        function snapshotStorage(address target) external returns (uint256 id);

        function createUint8(string calldata name) external returns (uint8 value);
        function createUint16(string calldata name) external returns (uint16 value);
        function createUint24(string calldata name) external returns (uint24 value);
        function createUint32(string calldata name) external returns (uint32 value);
        function createUint40(string calldata name) external returns (uint40 value);
        function createUint48(string calldata name) external returns (uint48 value);
        function createUint56(string calldata name) external returns (uint56 value);
        function createUint64(string calldata name) external returns (uint64 value);
        function createUint72(string calldata name) external returns (uint72 value);
        function createUint80(string calldata name) external returns (uint80 value);
        function createUint88(string calldata name) external returns (uint88 value);
        function createUint96(string calldata name) external returns (uint96 value);
        function createUint104(string calldata name) external returns (uint104 value);
        function createUint112(string calldata name) external returns (uint112 value);
        function createUint120(string calldata name) external returns (uint120 value);
        function createUint128(string calldata name) external returns (uint128 value);
        function createUint136(string calldata name) external returns (uint136 value);
        function createUint144(string calldata name) external returns (uint144 value);
        function createUint152(string calldata name) external returns (uint152 value);
        function createUint160(string calldata name) external returns (uint160 value);
        function createUint168(string calldata name) external returns (uint168 value);
        function createUint176(string calldata name) external returns (uint176 value);
        function createUint184(string calldata name) external returns (uint184 value);
        function createUint192(string calldata name) external returns (uint192 value);
        function createUint200(string calldata name) external returns (uint200 value);
        function createUint208(string calldata name) external returns (uint208 value);
        function createUint216(string calldata name) external returns (uint216 value);
        function createUint224(string calldata name) external returns (uint224 value);
        function createUint232(string calldata name) external returns (uint232 value);
        function createUint240(string calldata name) external returns (uint240 value);
        function createUint248(string calldata name) external returns (uint248 value);
        function createUint256(string calldata name) external returns (uint256 value);

        function createInt8(string calldata name) external returns (int8 value);
        function createInt16(string calldata name) external returns (int16 value);
        function createInt24(string calldata name) external returns (int24 value);
        function createInt32(string calldata name) external returns (int32 value);
        function createInt40(string calldata name) external returns (int40 value);
        function createInt48(string calldata name) external returns (int48 value);
        function createInt56(string calldata name) external returns (int56 value);
        function createInt64(string calldata name) external returns (int64 value);
        function createInt72(string calldata name) external returns (int72 value);
        function createInt80(string calldata name) external returns (int80 value);
        function createInt88(string calldata name) external returns (int88 value);
        function createInt96(string calldata name) external returns (int96 value);
        function createInt104(string calldata name) external returns (int104 value);
        function createInt112(string calldata name) external returns (int112 value);
        function createInt120(string calldata name) external returns (int120 value);
        function createInt128(string calldata name) external returns (int128 value);
        function createInt136(string calldata name) external returns (int136 value);
        function createInt144(string calldata name) external returns (int144 value);
        function createInt152(string calldata name) external returns (int152 value);
        function createInt160(string calldata name) external returns (int160 value);
        function createInt168(string calldata name) external returns (int168 value);
        function createInt176(string calldata name) external returns (int176 value);
        function createInt184(string calldata name) external returns (int184 value);
        function createInt192(string calldata name) external returns (int192 value);
        function createInt200(string calldata name) external returns (int200 value);
        function createInt208(string calldata name) external returns (int208 value);
        function createInt216(string calldata name) external returns (int216 value);
        function createInt224(string calldata name) external returns (int224 value);
        function createInt232(string calldata name) external returns (int232 value);
        function createInt240(string calldata name) external returns (int240 value);
        function createInt248(string calldata name) external returns (int248 value);
        function createInt256(string calldata name) external returns (int256 value);

        function createBytes1(string calldata name) external returns (bytes1 value);
        function createBytes2(string calldata name) external returns (bytes2 value);
        function createBytes3(string calldata name) external returns (bytes3 value);
        function createBytes4(string calldata name) external returns (bytes4 value);
        function createBytes5(string calldata name) external returns (bytes5 value);
        function createBytes6(string calldata name) external returns (bytes6 value);
        function createBytes7(string calldata name) external returns (bytes7 value);
        function createBytes8(string calldata name) external returns (bytes8 value);
        function createBytes9(string calldata name) external returns (bytes9 value);
        function createBytes10(string calldata name) external returns (bytes10 value);
        function createBytes11(string calldata name) external returns (bytes11 value);
        function createBytes12(string calldata name) external returns (bytes12 value);
        function createBytes13(string calldata name) external returns (bytes13 value);
        function createBytes14(string calldata name) external returns (bytes14 value);
        function createBytes15(string calldata name) external returns (bytes15 value);
        function createBytes16(string calldata name) external returns (bytes16 value);
        function createBytes17(string calldata name) external returns (bytes17 value);
        function createBytes18(string calldata name) external returns (bytes18 value);
        function createBytes19(string calldata name) external returns (bytes19 value);
        function createBytes20(string calldata name) external returns (bytes20 value);
        function createBytes21(string calldata name) external returns (bytes21 value);
        function createBytes22(string calldata name) external returns (bytes22 value);
        function createBytes23(string calldata name) external returns (bytes23 value);
        function createBytes24(string calldata name) external returns (bytes24 value);
        function createBytes25(string calldata name) external returns (bytes25 value);
        function createBytes26(string calldata name) external returns (bytes26 value);
        function createBytes27(string calldata name) external returns (bytes27 value);
        function createBytes28(string calldata name) external returns (bytes28 value);
        function createBytes29(string calldata name) external returns (bytes29 value);
        function createBytes30(string calldata name) external returns (bytes30 value);
        function createBytes31(string calldata name) external returns (bytes31 value);
        function createBytes32(string calldata name) external returns (bytes32 value);
    }
}
