1use fil_actor_paych::{
2 ConstructorParams, Merge, ModVerifyParams, PaymentVerifyParams, SignedVoucher,
3 UpdateChannelStateParams,
4};
5use fvm_ipld_encoding::RawBytes;
6use fvm_shared::address::Address;
7use fvm_shared::clock::ChainEpoch;
8use fvm_shared::crypto::signature::Signature;
9use fvm_shared::econ::TokenAmount;
10use fvm_shared::MethodNum;
11use serde::{Deserialize, Serialize};
12
13use super::json::address;
14use super::json::option_signature;
15use super::json::rawbytes;
16use super::json::serde_base64_vector;
17use super::json::tokenamount;
18
19#[derive(Serialize, Deserialize)]
20#[serde(remote = "ConstructorParams", rename_all = "PascalCase")]
21pub struct ConstructorParamsAPI {
22 #[serde(with = "address")]
23 pub from: Address,
24 #[serde(with = "address")]
25 pub to: Address,
26}
27
28#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
29#[serde(remote = "SignedVoucher", rename_all = "PascalCase")]
30pub struct SignedVoucherAPI {
31 #[serde(with = "address")]
32 pub channel_addr: Address,
33 pub time_lock_min: ChainEpoch,
34 pub time_lock_max: ChainEpoch,
35 #[serde(with = "serde_base64_vector")]
36 pub secret_pre_image: Vec<u8>,
37 pub extra: Option<ModVerifyParams>,
38 pub lane: u64,
39 pub nonce: u64,
40 #[serde(with = "tokenamount")]
41 pub amount: TokenAmount,
42 pub min_settle_height: ChainEpoch,
43 pub merges: Vec<Merge>,
44 #[serde(with = "option_signature")]
45 pub signature: Option<Signature>,
46}
47
48#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
49#[serde(remote = "ModVerifyParams", rename_all = "PascalCase")]
50pub struct ModVerifyParamsAPI {
51 #[serde(with = "address")]
52 pub actor: Address,
53 pub method: MethodNum,
54 #[serde(with = "rawbytes")]
55 pub data: RawBytes,
56}
57
58#[derive(Serialize, Deserialize)]
59#[serde(remote = "PaymentVerifyParams", rename_all = "PascalCase")]
60pub struct PaymentVerifyParamsAPI {
61 #[serde(with = "rawbytes")]
62 pub extra: RawBytes,
63 #[serde(with = "serde_base64_vector")]
64 pub proof: Vec<u8>,
65}
66
67#[derive(Serialize, Deserialize)]
68#[serde(remote = "UpdateChannelStateParams", rename_all = "PascalCase")]
69pub struct UpdateChannelStateParamsAPI {
70 #[serde(with = "SignedVoucherAPI")]
71 pub sv: SignedVoucher,
72 #[serde(with = "serde_base64_vector")]
73 pub secret: Vec<u8>,
74}
75
76#[derive(Default, Clone, Copy, Debug, PartialEq, Serialize, Deserialize)]
77#[serde(remote = "Merge", rename_all = "PascalCase")]
78pub struct MergeAPI {
79 pub lane: u64,
80 pub nonce: u64,
81}