extras_filecoin/
paych.rs

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}