-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmsg.rs
135 lines (115 loc) · 4.01 KB
/
msg.rs
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
use cosmwasm_std::{Addr, Binary, Uint128, Uint256};
use secret_toolkit::utils::HandleCallback;
use tnls::msg::{PostExecutionMsg, PrivContractHandleMsg};
use tnls::state::{Task};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::{
state::{
PaymentReceipt, ResponseStatusCode,
}
};
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct InstantiateMsg {
pub gateway_address: Addr,
pub gateway_hash: String,
pub gateway_key: Binary,
pub nunya_business_contract_address: Vec<u8>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
Input { message: PrivContractHandleMsg },
}
// No input required so not need to implement
// #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
// pub struct RetrievePubkeyStoreMsg {}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct NewAuthOutStoreMsg {
// TODO - is this key the variable of the parameter provided from Solidity contract to its new_secret_user function?
// secret_user or auth_out
pub secret_user: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct LinkPaymentRefStoreMsg {
pub secret_user: String,
pub payment_ref: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct PayStoreMsg {
pub secret_user: String,
pub payment_ref: String,
pub amount: Uint128,
pub denomination: String,
pub user_pubkey: Option<Uint256>, // encrypted with receipt
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct WithdrawToStoreMsg {
pub secret_user: String,
pub amount: Uint128,
pub denomination: String,
pub withdrawal_address: [u8; 20],
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ResponseRequestValueMsg {
pub _request_id: Task,
pub _key: Vec<u8>,
pub _code: ResponseStatusCode,
pub _nunya_business_contract_address: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ResponseRetrievePubkeyStoreMsg {
pub _request_id: Task,
pub _key: Vec<u8>,
pub _code: ResponseStatusCode,
pub _nunya_business_contract_address: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ResponseNewAuthOutStoreMsg {
pub _request_id: Task,
pub _code: ResponseStatusCode,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ResponseLinkPaymentRefStoreMsg {
pub _request_id: Task,
pub _code: ResponseStatusCode,
pub _reference: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ResponsePayStoreMsg {
pub _request_id: Task,
pub _code: ResponseStatusCode,
pub _receipt: PaymentReceipt,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ResponseWithdrawToStoreMsg {
pub _request_id: Task,
pub _code: ResponseStatusCode,
pub _amount: Uint128,
// TODO: should this be of type `Addr`? does it support EVM addresses?
pub _withdrawal_address: [u8; 20],
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
RetrievePubkey {},
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ResponseRetrievePubkeyMsg {
// TODO: can only access `_requestId` if function called from `try_handle` and callback, but not from queries
// pub _requestId: Uint256,
pub _key: Vec<u8>,
}
// TODO: this may not be necessary as not used
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct QueryResponse {
pub message: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum GatewayMsg {
Output { outputs: PostExecutionMsg },
}
impl HandleCallback for GatewayMsg {
const BLOCK_SIZE: usize = 256;
}