#![doc = include_str!("../README.md")]
#![cfg_attr(not(feature = "std"), no_std)]
#![allow(clippy::too_many_arguments)]
#![deny(missing_docs)]
extern crate alloc;
use alloc::vec::Vec;
use ismp::{
consensus::{ConsensusClientId, StateMachineHeight, StateMachineId},
host::StateMachine,
router::{Request, Response},
};
use polkadot_sdk::*;
use primitive_types::H256;
sp_api::decl_runtime_apis! {
pub trait IsmpRuntimeApi<Hash: codec::Codec> {
fn host_state_machine() -> StateMachine;
fn block_events() -> Vec<ismp::events::Event>;
fn block_events_with_metadata() -> Vec<(ismp::events::Event, Option<u32>)>;
fn consensus_state(id: ConsensusClientId) -> Option<Vec<u8>>;
fn state_machine_update_time(id: StateMachineHeight) -> Option<u64>;
fn challenge_period(id: StateMachineId) -> Option<u64>;
fn latest_state_machine_height(id: StateMachineId) -> Option<u64>;
fn requests(request_commitments: Vec<H256>) -> Vec<Request>;
fn responses(response_commitments: Vec<H256>) -> Vec<Response>;
}
}