Constant LINERA_SOL

Source
pub const LINERA_SOL: &str = "// Copyright (c) Zefchain Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport \"./LineraTypes.sol\";\n\n// The \"LineraTypes.sol\" is created via the command\n// cargo run -p serde-generate-bin -- --language solidity LineraTypes.yaml > LineraTypes.sol\n// from the package \"serde-reflection\" commit 95e57c4c2df2fc7215e627da353071a2cb91fdcb\n\n// This library provides Linera functionalities to EVM contracts\n// It should not be modified.\n\nlibrary Linera {\n\n    function chain_id() internal returns (LineraTypes.ChainId memory) {\n        address precompile = address(0x0b);\n        LineraTypes.BaseRuntimePrecompile memory base = LineraTypes.BaseRuntimePrecompile_case_chain_id();\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_base(base);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return LineraTypes.bcs_deserialize_ChainId(output);\n    }\n\n    function application_creator_chain_id() internal returns (LineraTypes.ChainId memory) {\n        address precompile = address(0x0b);\n        LineraTypes.BaseRuntimePrecompile memory base = LineraTypes.BaseRuntimePrecompile_case_application_creator_chain_id();\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_base(base);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return LineraTypes.bcs_deserialize_ChainId(output);\n    }\n\n    function chain_ownership() internal returns (LineraTypes.ChainOwnership memory) {\n        address precompile = address(0x0b);\n        LineraTypes.BaseRuntimePrecompile memory base = LineraTypes.BaseRuntimePrecompile_case_chain_ownership();\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_base(base);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return LineraTypes.bcs_deserialize_ChainOwnership(output);\n    }\n\n    function read_data_blob(bytes32 hash) internal returns (bytes memory) {\n        address precompile = address(0x0b);\n        LineraTypes.CryptoHash memory hash2 = LineraTypes.CryptoHash(hash);\n        LineraTypes.BaseRuntimePrecompile_ReadDataBlob memory read_data_blob_ = LineraTypes.BaseRuntimePrecompile_ReadDataBlob(hash2);\n        LineraTypes.BaseRuntimePrecompile memory base = LineraTypes.BaseRuntimePrecompile_case_read_data_blob(read_data_blob_);\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_base(base);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return output;\n    }\n\n    function assert_data_blob_exists(bytes32 hash) internal {\n        address precompile = address(0x0b);\n        LineraTypes.CryptoHash memory hash2 = LineraTypes.CryptoHash(hash);\n        LineraTypes.BaseRuntimePrecompile_AssertDataBlobExists memory assert_data_blob_exists_ = LineraTypes.BaseRuntimePrecompile_AssertDataBlobExists(hash2);\n        LineraTypes.BaseRuntimePrecompile memory base = LineraTypes.BaseRuntimePrecompile_case_assert_data_blob_exists(assert_data_blob_exists_);\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_base(base);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        assert(output.length == 0);\n    }\n\n    function try_call_application(bytes32 universal_address, bytes memory operation) internal returns (bytes memory) {\n        address precompile = address(0x0b);\n        LineraTypes.ApplicationId memory target = LineraTypes.ApplicationId(LineraTypes.CryptoHash(universal_address));\n        LineraTypes.ContractRuntimePrecompile_TryCallApplication memory try_call_application_ = LineraTypes.ContractRuntimePrecompile_TryCallApplication(target, operation);\n        LineraTypes.ContractRuntimePrecompile memory contract_ = LineraTypes.ContractRuntimePrecompile_case_try_call_application(try_call_application_);\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_contract(contract_);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return output;\n    }\n\n    function validation_round() internal returns (LineraTypes.opt_uint32 memory) {\n        address precompile = address(0x0b);\n        LineraTypes.ContractRuntimePrecompile memory contract_ = LineraTypes.ContractRuntimePrecompile_case_validation_round();\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_contract(contract_);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return LineraTypes.bcs_deserialize_opt_uint32(output);\n    }\n\n    function send_message(bytes32 chain_id1, bytes memory message) internal {\n        address precompile = address(0x0b);\n        LineraTypes.ChainId memory chain_id2 = LineraTypes.ChainId(LineraTypes.CryptoHash(chain_id1));\n        LineraTypes.ContractRuntimePrecompile_TryCallApplication memory try_call_application_;\n        LineraTypes.ContractRuntimePrecompile_SendMessage memory send_message_ = LineraTypes.ContractRuntimePrecompile_SendMessage(chain_id2, message);\n        LineraTypes.ContractRuntimePrecompile memory contract_ = LineraTypes.ContractRuntimePrecompile_case_send_message(send_message_);\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_contract(contract_);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        require(output.length == 0);\n    }\n\n    function message_id() internal returns (LineraTypes.opt_MessageId memory) {\n        address precompile = address(0x0b);\n        LineraTypes.ContractRuntimePrecompile memory contract_ = LineraTypes.ContractRuntimePrecompile_case_message_id();\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_contract(contract_);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return LineraTypes.bcs_deserialize_opt_MessageId(output);\n    }\n\n    function message_is_bouncing() internal returns (LineraTypes.MessageIsBouncing memory) {\n        address precompile = address(0x0b);\n        LineraTypes.ContractRuntimePrecompile memory contract_ = LineraTypes.ContractRuntimePrecompile_case_message_is_bouncing();\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_contract(contract_);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return LineraTypes.bcs_deserialize_MessageIsBouncing(output);\n    }\n\n    function linera_emit(bytes memory stream_name, bytes memory value) internal returns (uint32) {\n        address precompile = address(0x0b);\n        LineraTypes.StreamName memory stream_name2 = LineraTypes.StreamName(stream_name);\n        LineraTypes.ContractRuntimePrecompile_Emit memory emit_ = LineraTypes.ContractRuntimePrecompile_Emit(stream_name2, value);\n        LineraTypes.ContractRuntimePrecompile memory contract_ = LineraTypes.ContractRuntimePrecompile_case_emit(emit_);\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_contract(contract_);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return LineraTypes.bcs_deserialize_uint32(output);\n    }\n\n    function read_event(bytes32 chain_id1, bytes memory stream_name, uint32 index) internal returns (bytes memory) {\n        address precompile = address(0x0b);\n        LineraTypes.ChainId memory chain_id2 = LineraTypes.ChainId(LineraTypes.CryptoHash(chain_id1));\n        LineraTypes.StreamName memory stream_name2 = LineraTypes.StreamName(stream_name);\n        LineraTypes.ContractRuntimePrecompile_ReadEvent memory read_event_ = LineraTypes.ContractRuntimePrecompile_ReadEvent(chain_id2, stream_name2, index);\n        LineraTypes.ContractRuntimePrecompile memory contract_ = LineraTypes.ContractRuntimePrecompile_case_read_event(read_event_);\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_contract(contract_);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return output;\n    }\n\n    function subscribe_to_events(bytes32 chain_id1, bytes32 application_id, bytes memory stream_name) internal {\n        address precompile = address(0x0b);\n        LineraTypes.ChainId memory chain_id2 = LineraTypes.ChainId(LineraTypes.CryptoHash(chain_id1));\n        LineraTypes.ApplicationId memory application_id2 = LineraTypes.ApplicationId(LineraTypes.CryptoHash(application_id));\n        LineraTypes.StreamName memory stream_name2 = LineraTypes.StreamName(stream_name);\n        LineraTypes.ContractRuntimePrecompile_SubscribeToEvents memory subscribe_to_events_ = LineraTypes.ContractRuntimePrecompile_SubscribeToEvents(chain_id2, application_id2, stream_name2);\n        LineraTypes.ContractRuntimePrecompile memory contract_ = LineraTypes.ContractRuntimePrecompile_case_subscribe_to_events(subscribe_to_events_);\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_contract(contract_);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        require(output.length == 0);\n    }\n\n    function unsubscribe_from_events(bytes32 chain_id1, bytes32 application_id, bytes memory stream_name) internal {\n        address precompile = address(0x0b);\n        LineraTypes.ChainId memory chain_id2 = LineraTypes.ChainId(LineraTypes.CryptoHash(chain_id1));\n        LineraTypes.ApplicationId memory application_id2 = LineraTypes.ApplicationId(LineraTypes.CryptoHash(application_id));\n        LineraTypes.StreamName memory stream_name2 = LineraTypes.StreamName(stream_name);\n        LineraTypes.ContractRuntimePrecompile_UnsubscribeFromEvents memory unsubscribe_from_events_ = LineraTypes.ContractRuntimePrecompile_UnsubscribeFromEvents(chain_id2, application_id2, stream_name2);\n        LineraTypes.ContractRuntimePrecompile memory contract_ = LineraTypes.ContractRuntimePrecompile_case_unsubscribe_from_events(unsubscribe_from_events_);\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_contract(contract_);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        require(output.length == 0);\n    }\n\n    function try_query_application(bytes32 universal_address, bytes memory argument) internal returns (bytes memory) {\n        address precompile = address(0x0b);\n        LineraTypes.ApplicationId memory target = LineraTypes.ApplicationId(LineraTypes.CryptoHash(universal_address));\n        LineraTypes.ServiceRuntimePrecompile_TryQueryApplication memory try_query_application_ = LineraTypes.ServiceRuntimePrecompile_TryQueryApplication(target, argument);\n        LineraTypes.ServiceRuntimePrecompile memory service = LineraTypes.ServiceRuntimePrecompile_case_try_query_application(try_query_application_);\n        LineraTypes.RuntimePrecompile memory input1 = LineraTypes.RuntimePrecompile_case_service(service);\n        bytes memory input2 = LineraTypes.bcs_serialize_RuntimePrecompile(input1);\n        (bool success, bytes memory output) = precompile.call(input2);\n        require(success);\n        return output;\n    }\n}\n";
Expand description

The Linera.sol library code to be included in solidity smart contracts using Linera features.