1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//! # Core
//!
//! Common traits and types

#![allow(dead_code)]
#![allow(unused_variables)]
#![cfg_attr(not(feature = "std"), no_std)]

use frame_support::dispatch::DispatchResult;

use sp_std::vec::Vec;

pub mod types;
pub mod registry;

pub use types::{
	AppId,
	Message,
	VerificationInput,
	BridgedAssetId
};

/// A trait for verifying messages.
///
/// This trait should be implemented by runtime modules that wish to provide message verification functionality.
pub trait Verifier<AccountId> {

	fn verify(sender: AccountId, app_id: AppId, message: &Message) -> DispatchResult;
}

/// A trait for handling message payloads.
///
/// This trait should be implemented by runtime modules that wish to handle message payloads.
pub trait Application {

	/// Handle a message payload
	fn handle(payload: Vec<u8>) -> DispatchResult;
}