1use crate::errors::Result;
2use alloy::primitives::{FixedBytes, U256};
3use async_trait::async_trait;
4use serde::{Deserialize, Serialize};
5
6#[async_trait]
7pub trait Signer {
8 async fn sign_order(&self, to_sign: FixedBytes<32>) -> Result<SignedMessage>;
9}
10
11#[derive(Debug, Serialize, Deserialize, Clone)]
12pub struct SignedMessage {
13 pub r: U256,
14 pub s: U256,
15 pub v: u64,
16}
17
18#[derive(Debug, Serialize, Deserialize, Clone)]
19pub struct SignedMessageHex {
20 pub r: String,
21 pub s: String,
22 pub v: u64,
23}
24
25impl From<SignedMessage> for SignedMessageHex {
26 fn from(signed_msg: SignedMessage) -> Self {
27 SignedMessageHex {
28 r: format!("0x{:x}", signed_msg.r),
29 s: format!("0x{:x}", signed_msg.s),
30 v: signed_msg.v,
31 }
32 }
33}