Skip to main content

linera_execution/wasm/
entrypoints.rs

1// Copyright (c) Zefchain Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4//! Wasm entrypoints for contracts and services.
5
6// The `#[wit_import]` macro generates items (a struct and associated functions) that cannot
7// carry doc comments, so we allow missing docs for this whole module of WIT bindings.
8#![allow(missing_docs)]
9
10use linera_base::data_types::StreamUpdate;
11use linera_witty::wit_import;
12
13/// WIT entrypoints for application contracts.
14#[wit_import(package = "linera:app")]
15pub trait ContractEntrypoints {
16    fn instantiate(argument: Vec<u8>);
17    fn execute_operation(operation: Vec<u8>) -> Vec<u8>;
18    fn execute_message(message: Vec<u8>);
19    fn process_streams(streams: Vec<StreamUpdate>);
20    fn summarize_events(streams: Vec<StreamUpdate>);
21    fn finalize();
22}
23
24/// WIT entrypoints for application services.
25#[wit_import(package = "linera:app")]
26pub trait ServiceEntrypoints {
27    fn handle_query(argument: Vec<u8>) -> Vec<u8>;
28}