clockwork_relayer_api/
lib.rs

1use serde::{Deserialize, Serialize};
2use solana_sdk::{pubkey::Pubkey, signature::Signature};
3
4#[derive(Deserialize, Serialize)]
5pub struct SignedRequest<T: Sized> {
6    pub msg: T,
7    pub signer: Pubkey,
8    pub signature: Signature,
9}
10
11impl<T: Serialize> SignedRequest<T> {
12    pub fn authenticate(&self) -> bool {
13        let msg_bytes = bincode::serialize(&self.msg).unwrap();
14        self.signature
15            .verify(&self.signer.to_bytes(), msg_bytes.as_slice())
16    }
17}
18
19#[derive(Deserialize, Serialize)]
20pub struct Relay {
21    pub webhook: Pubkey,
22}
23
24#[derive(Deserialize, Serialize)]
25pub struct SecretCreate {
26    pub name: String,
27    pub word: String,
28}
29
30#[derive(Deserialize, Serialize)]
31pub struct SecretGet {
32    pub name: String,
33}
34
35#[derive(Deserialize, Serialize)]
36pub struct SecretList {}
37
38#[derive(Deserialize, Serialize)]
39pub struct SecretListResponse {
40    pub secrets: Vec<String>,
41}
42
43#[derive(Deserialize, Serialize)]
44pub struct SecretApprove {
45    pub name: String,
46    pub delegate: Pubkey,
47}
48
49#[derive(Deserialize, Serialize)]
50pub struct SecretRevoke {
51    pub name: String,
52    pub delegate: Pubkey,
53}