Skip to main content

hyperqit/
signing.rs

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}