1use cid::Cid;
2use fil_actor_miner::CompactCommD;
3use fil_actor_miner::{
4 ApplyRewardParams, ChangeMultiaddrsParams, ChangeOwnerAddressParams, ChangePeerIDParams,
5 ChangeWorkerAddressParams, CheckSectorProvenParams, CompactPartitionsParams,
6 CompactSectorNumbersParams, ConfirmSectorProofsParams, DeclareFaultsParams,
7 DeclareFaultsRecoveredParams, DeferredCronEventParams, DisputeWindowedPoStParams,
8 ExpirationExtension, ExtendSectorExpirationParams, FaultDeclaration, MinerConstructorParams,
9 PoStPartition, PreCommitSectorBatchParams, PreCommitSectorBatchParams2, PreCommitSectorParams,
10 ProveCommitAggregateParams, ProveCommitSectorParams, ProveReplicaUpdatesParams,
11 RecoveryDeclaration, ReplicaUpdate, ReportConsensusFaultParams, SectorPreCommitInfo,
12 SubmitWindowedPoStParams, TerminateSectorsParams, TerminationDeclaration,
13 WithdrawBalanceParams,
14};
15use fvm_ipld_bitfield::BitField;
16use fvm_ipld_encoding::{serde_bytes, BytesDe};
17use fvm_shared::address::Address;
18use fvm_shared::bigint::bigint_ser;
19use fvm_shared::clock::ChainEpoch;
20use fvm_shared::deal::DealID;
21use fvm_shared::econ::TokenAmount;
22use fvm_shared::randomness::Randomness;
23use fvm_shared::sector::{
24 PoStProof, RegisteredPoStProof, RegisteredSealProof, RegisteredUpdateProof, SectorNumber,
25 StoragePower,
26};
27use fvm_shared::smooth::FilterEstimate;
28use serde::{Deserialize, Serialize};
29
30use super::json::address;
31use super::json::serde_base64_vector;
32use super::json::tokenamount;
33use super::json::vec_address;
34
35#[derive(Serialize, Deserialize)]
38#[serde(remote = "MinerConstructorParams", rename_all = "PascalCase")]
39pub struct MinerConstructorParamsAPI {
40 #[serde(with = "address")]
41 pub owner: Address,
42 #[serde(with = "address")]
43 pub worker: Address,
44 #[serde(with = "vec_address")]
45 pub control_addresses: Vec<Address>,
46 pub window_post_proof_type: RegisteredPoStProof,
47 #[serde(with = "serde_base64_vector")]
48 pub peer_id: Vec<u8>,
49 pub multi_addresses: Vec<BytesDe>,
50}
51
52#[derive(Serialize, Deserialize)]
53#[serde(remote = "ChangeOwnerAddressParams", rename_all = "PascalCase")]
54pub struct ChangeOwnerAddressParamsAPI {
55 #[serde(with = "address")]
56 pub new_owner: Address,
57}
58
59#[derive(Serialize, Deserialize)]
60#[serde(remote = "ChangeWorkerAddressParams", rename_all = "PascalCase")]
61pub struct ChangeWorkerAddressParamsAPI {
62 #[serde(with = "address")]
63 pub new_worker: Address,
64 #[serde(with = "vec_address")]
65 pub new_control_addresses: Vec<Address>,
66}
67
68#[derive(Serialize, Deserialize)]
69#[serde(remote = "ChangePeerIDParams", rename_all = "PascalCase")]
70pub struct ChangePeerIDParamsAPI {
71 #[serde(with = "serde_base64_vector")]
72 pub new_id: Vec<u8>,
73}
74
75#[derive(Serialize, Deserialize)]
76#[serde(remote = "ChangeMultiaddrsParams", rename_all = "PascalCase")]
77pub struct ChangeMultiaddrsParamsAPI {
78 pub new_multi_addrs: Vec<BytesDe>,
79}
80
81#[derive(Serialize, Deserialize)]
82#[serde(remote = "ConfirmSectorProofsParams", rename_all = "PascalCase")]
83pub struct ConfirmSectorProofsParamsAPI {
84 pub sectors: Vec<SectorNumber>,
85 pub reward_smoothed: FilterEstimate,
86 #[serde(with = "bigint_ser")]
87 pub reward_baseline_power: StoragePower,
88 pub quality_adj_power_smoothed: FilterEstimate,
89}
90
91#[derive(Serialize, Deserialize)]
92#[serde(remote = "DeferredCronEventParams", rename_all = "PascalCase")]
93pub struct DeferredCronEventParamsAPI {
94 #[serde(with = "serde_bytes")]
95 pub event_payload: Vec<u8>,
96 pub reward_smoothed: FilterEstimate,
97 pub quality_adj_power_smoothed: FilterEstimate,
98}
99
100#[derive(Serialize, Deserialize)]
101#[serde(remote = "PoStPartition", rename_all = "PascalCase")]
102pub struct PoStPartitionAPI {
103 pub index: u64,
105 pub skipped: BitField,
107}
108
109#[derive(Serialize, Deserialize)]
111#[serde(remote = "SubmitWindowedPoStParams", rename_all = "PascalCase")]
112pub struct SubmitWindowedPoStParamsAPI {
113 pub deadline: u64,
115 pub partitions: Vec<PoStPartition>,
117 pub proofs: Vec<PoStProof>,
120 pub chain_commit_epoch: ChainEpoch,
122 pub chain_commit_rand: Randomness,
124}
125
126#[derive(Serialize, Deserialize)]
127#[serde(remote = "ProveCommitSectorParams", rename_all = "PascalCase")]
128pub struct ProveCommitSectorParamsAPI {
129 pub sector_number: SectorNumber,
130 #[serde(with = "serde_bytes")]
131 pub proof: Vec<u8>,
132}
133
134#[derive(Serialize, Deserialize)]
135#[serde(remote = "CheckSectorProvenParams", rename_all = "PascalCase")]
136pub struct CheckSectorProvenParamsAPI {
137 pub sector_number: SectorNumber,
138}
139
140#[derive(Serialize, Deserialize)]
141#[serde(remote = "ExtendSectorExpirationParams", rename_all = "PascalCase")]
142pub struct ExtendSectorExpirationParamsAPI {
143 pub extensions: Vec<ExpirationExtension>,
144}
145
146#[derive(Serialize, Deserialize)]
147#[serde(remote = "ExpirationExtension", rename_all = "PascalCase")]
148pub struct ExpirationExtensionAPI {
149 pub deadline: u64,
150 pub partition: u64,
151 pub sectors: BitField,
152 pub new_expiration: ChainEpoch,
153}
154
155#[derive(Serialize, Deserialize)]
156#[serde(remote = "TerminateSectorsParams", rename_all = "PascalCase")]
157pub struct TerminateSectorsParamsAPI {
158 pub terminations: Vec<TerminationDeclaration>,
159}
160
161#[derive(Serialize, Deserialize)]
162#[serde(remote = "TerminationDeclaration", rename_all = "PascalCase")]
163pub struct TerminationDeclarationAPI {
164 pub deadline: u64,
165 pub partition: u64,
166 pub sectors: BitField,
167}
168
169#[derive(Serialize, Deserialize)]
170#[serde(remote = "DeclareFaultsParams", rename_all = "PascalCase")]
171pub struct DeclareFaultsParamsAPI {
172 pub faults: Vec<FaultDeclaration>,
173}
174
175#[derive(Serialize, Deserialize)]
176#[serde(remote = "FaultDeclaration", rename_all = "PascalCase")]
177pub struct FaultDeclarationAPI {
178 pub deadline: u64,
180 pub partition: u64,
182 pub sectors: BitField,
184}
185
186#[derive(Serialize, Deserialize)]
187#[serde(remote = "DeclareFaultsRecoveredParams", rename_all = "PascalCase")]
188pub struct DeclareFaultsRecoveredParamsAPI {
189 pub recoveries: Vec<RecoveryDeclaration>,
190}
191
192#[derive(Serialize, Deserialize)]
193#[serde(remote = "RecoveryDeclaration", rename_all = "PascalCase")]
194pub struct RecoveryDeclarationAPI {
195 pub deadline: u64,
197 pub partition: u64,
199 pub sectors: BitField,
201}
202
203#[derive(Serialize, Deserialize)]
204#[serde(remote = "CompactPartitionsParams", rename_all = "PascalCase")]
205pub struct CompactPartitionsParamsAPI {
206 pub deadline: u64,
207 pub partitions: BitField,
208}
209
210#[derive(Serialize, Deserialize)]
211#[serde(remote = "CompactSectorNumbersParams", rename_all = "PascalCase")]
212pub struct CompactSectorNumbersParamsAPI {
213 pub mask_sector_numbers: BitField,
214}
215
216#[derive(Serialize, Deserialize)]
217#[serde(remote = "ReportConsensusFaultParams", rename_all = "PascalCase")]
218pub struct ReportConsensusFaultParamsAPI {
219 #[serde(with = "serde_base64_vector")]
220 pub header1: Vec<u8>,
221 #[serde(with = "serde_base64_vector")]
222 pub header2: Vec<u8>,
223 #[serde(with = "serde_base64_vector")]
224 pub header_extra: Vec<u8>,
225}
226
227#[derive(Serialize, Deserialize)]
228#[serde(remote = "WithdrawBalanceParams", rename_all = "PascalCase")]
229pub struct WithdrawBalanceParamsAPI {
230 #[serde(with = "tokenamount")]
231 pub amount_requested: TokenAmount,
232}
233
234#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
235#[serde(remote = "PreCommitSectorBatchParams", rename_all = "PascalCase")]
236pub struct PreCommitSectorBatchParamsAPI {
237 pub sectors: Vec<PreCommitSectorParams>,
238}
239
240#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
241#[serde(remote = "PreCommitSectorBatchParams2", rename_all = "PascalCase")]
242pub struct PreCommitSectorBatchParams2API {
243 pub sectors: Vec<SectorPreCommitInfo>,
244}
245
246#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
247#[serde(remote = "PreCommitSectorParams", rename_all = "PascalCase")]
248pub struct PreCommitSectorParamsAPI {
249 pub seal_proof: RegisteredSealProof,
250 pub sector_number: SectorNumber,
251 pub sealed_cid: Cid,
253 pub seal_rand_epoch: ChainEpoch,
254 pub deal_ids: Vec<DealID>,
255 pub expiration: ChainEpoch,
256 pub replace_capacity: bool,
258 pub replace_sector_deadline: u64,
260 pub replace_sector_partition: u64,
261 pub replace_sector_number: SectorNumber,
262}
263
264#[derive(Debug, Default, PartialEq, Eq, Clone, Serialize, Deserialize)]
265#[serde(remote = "SectorPreCommitInfo", rename_all = "PascalCase")]
266pub struct SectorPreCommitInfoAPI {
267 pub seal_proof: RegisteredSealProof,
268 pub sector_number: SectorNumber,
269 pub sealed_cid: Cid,
271 pub seal_rand_epoch: ChainEpoch,
272 pub deal_ids: Vec<DealID>,
273 pub expiration: ChainEpoch,
274 pub unsealed_cid: CompactCommD,
276}
277
278#[derive(Debug, Serialize, Deserialize)]
280#[serde(remote = "ApplyRewardParams", rename_all = "PascalCase")]
281pub struct ApplyRewardParamsAPI {
282 #[serde(with = "tokenamount")]
283 pub reward: TokenAmount,
284 #[serde(with = "tokenamount")]
285 pub penalty: TokenAmount,
286}
287
288#[derive(Debug, PartialEq, Clone, Copy, Serialize, Deserialize)]
289#[serde(remote = "DisputeWindowedPoStParams", rename_all = "PascalCase")]
290pub struct DisputeWindowedPoStParamsAPI {
291 pub deadline: u64,
292 pub post_index: u64, }
294
295#[derive(Debug, Serialize, Deserialize)]
296#[serde(remote = "ProveCommitAggregateParams", rename_all = "PascalCase")]
297pub struct ProveCommitAggregateParamsAPI {
298 pub sector_numbers: BitField,
299 #[serde(with = "serde_base64_vector")]
300 pub aggregate_proof: Vec<u8>,
301}
302
303#[derive(Debug, PartialEq, Serialize, Deserialize)]
304#[serde(remote = "ReplicaUpdate", rename_all = "PascalCase")]
305pub struct ReplicaUpdateAPI {
306 pub sector_number: SectorNumber,
307 pub deadline: u64,
308 pub partition: u64,
309 pub new_sealed_cid: Cid,
310 pub deals: Vec<DealID>,
311 pub update_proof_type: RegisteredUpdateProof,
312 #[serde(with = "serde_base64_vector")]
313 pub replica_proof: Vec<u8>,
314}
315
316#[derive(Debug, Serialize, Deserialize)]
317#[serde(remote = "ProveReplicaUpdatesParams", rename_all = "PascalCase")]
318pub struct ProveReplicaUpdatesParamsAPI {
319 pub updates: Vec<ReplicaUpdate>,
320}