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.