diff --git a/src/lotus_json/actor_states/methods/miner_actor_params.rs b/src/lotus_json/actor_states/methods/miner_actor_params.rs
new file mode 100644
index 000000000000..be20adc8aaf2
--- /dev/null
+++ b/src/lotus_json/actor_states/methods/miner_actor_params.rs
@@ -0,0 +1,3748 @@
+// Copyright 2019-2025 ChainSafe Systems
+// SPDX-License-Identifier: Apache-2.0, MIT
+
+use super::*;
+use crate::shim::{
+ address::Address,
+ clock::ChainEpoch,
+ econ::TokenAmount,
+ sector::{PoStProof, RegisteredPoStProof, RegisteredSealProof, SectorNumber},
+};
+use ::cid::Cid;
+use fil_actors_shared::fvm_ipld_bitfield::{BitField, UnvalidatedBitField};
+use fil_actors_shared::v16::reward::FilterEstimate;
+use fvm_ipld_encoding::{BytesDe, RawBytes};
+use fvm_shared4::deal::DealID;
+use fvm_shared4::sector::RegisteredUpdateProof;
+use num::BigInt;
+use paste::paste;
+use schemars::JsonSchema;
+use serde::{Deserialize, Serialize};
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ConstructorParamsLotusJson {
+ #[schemars(with = "LotusJson
")]
+ #[serde(with = "crate::lotus_json")]
+ pub owner_addr: Address,
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub worker_addr: Address,
+ #[schemars(with = "LotusJson>")]
+ #[serde(with = "crate::lotus_json")]
+ pub control_addrs: Vec,
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub window_po_st_proof_type: RegisteredPoStProof,
+ #[schemars(with = "LotusJson>")]
+ #[serde(with = "crate::lotus_json")]
+ pub peer_id: Vec,
+ #[schemars(with = "LotusJson>>")]
+ #[serde(with = "crate::lotus_json")]
+ pub multiaddrs: Vec>,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ChangeWorkerAddressParamsLotusJson {
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub new_worker: Address,
+
+ #[schemars(with = "LotusJson>")]
+ #[serde(with = "crate::lotus_json")]
+ #[serde(rename = "NewControlAddrs")]
+ pub new_control_addresses: Vec,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ChangePeerIDParamsLotusJson {
+ #[schemars(with = "LotusJson>")]
+ #[serde(with = "crate::lotus_json", rename = "NewID")]
+ pub new_id: Vec,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ChangeMultiaddrsParamsLotusJson {
+ #[schemars(with = "LotusJson>>")]
+ #[serde(with = "crate::lotus_json", rename = "NewMultiaddrs")]
+ pub new_multi_addrs: Vec>,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct PoStPartitionLotusJson {
+ pub index: u64,
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub skipped: BitField,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct SubmitWindowedPoStParamsLotusJson {
+ pub deadline: u64,
+ pub partitions: Vec,
+ #[schemars(with = "LotusJson>")]
+ #[serde(with = "crate::lotus_json")]
+ pub proofs: Vec,
+ pub chain_commit_epoch: ChainEpoch,
+ #[schemars(with = "LotusJson>")]
+ #[serde(with = "crate::lotus_json")]
+ pub chain_commit_rand: Vec,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct TerminationDeclarationLotusJson {
+ pub deadline: u64,
+ pub partition: u64,
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub sectors: BitField,
+}
+
+#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct TerminateSectorsParamsLotusJson {
+ pub terminations: Vec,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct FaultDeclarationLotusJson {
+ pub deadline: u64,
+ pub partition: u64,
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub sectors: BitField,
+}
+
+#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct DeclareFaultsParamsLotusJson {
+ pub faults: Vec,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct RecoveryDeclarationLotusJson {
+ pub deadline: u64,
+ pub partition: u64,
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub sectors: BitField,
+}
+
+#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct DeclareFaultsRecoveredParamsLotusJson {
+ pub recoveries: Vec,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct WithdrawBalanceParamsLotusJson {
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub amount_requested: TokenAmount,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ChangeBeneficiaryParamsLotusJson {
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub new_beneficiary: Address,
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub new_quota: TokenAmount,
+ pub new_expiration: ChainEpoch,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ChangeOwnerAddressParamsLotusJson(
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ Address,
+);
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct CompactPartitionsParamsLotusJson {
+ pub deadline: u64,
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub partitions: BitField,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct CompactSectorNumbersParamsLotusJson {
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub mask_sector_numbers: BitField,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct DisputeWindowedPoStParamsLotusJson {
+ pub deadline: u64,
+ #[serde(rename = "PoStIndex")]
+ pub post_index: u64,
+}
+
+#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ExtendSectorExpirationParamsV8LotusJson {
+ pub extensions: Vec,
+}
+
+#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ExtendSectorExpirationParamsLotusJson {
+ pub extensions: Vec,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ExpirationExtensionV8LotusJson {
+ pub deadline: u64,
+ pub partition: u64,
+ #[schemars(with = "LotusJson>")]
+ #[serde(with = "crate::lotus_json")]
+ pub sectors: Vec,
+ pub new_expiration: ChainEpoch,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ExpirationExtensionLotusJson {
+ pub deadline: u64,
+ pub partition: u64,
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub sectors: BitField,
+ pub new_expiration: ChainEpoch,
+}
+
+#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ExtendSectorExpiration2ParamsLotusJson {
+ pub extensions: Vec,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ExpirationExtension2LotusJson {
+ pub deadline: u64,
+ pub partition: u64,
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub sectors: BitField,
+ // Lotus returns null (not []) when there are no sector claims; model as Option, so None means empty.
+ pub sectors_with_claims: Option>,
+ pub new_expiration: ChainEpoch,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct SectorClaimLotusJson {
+ pub sector_number: SectorNumber,
+ pub maintain_claims: Vec,
+ pub drop_claims: Vec,
+}
+
+#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct ExtendSectorExpirationParams {
+ pub extensions: Vec,
+}
+
+#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)]
+#[serde(rename_all = "PascalCase")]
+pub struct SectorPreCommitInfoLotusJson {
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json")]
+ pub seal_proof: RegisteredSealProof,
+
+ pub sector_number: SectorNumber,
+
+ #[schemars(with = "LotusJson")]
+ #[serde(with = "crate::lotus_json", rename = "SealedCID")]
+ pub sealed_cid: Cid,
+
+ pub seal_rand_epoch: ChainEpoch,
+
+ // Lotus returns null (not []) when there are no sector claims; model as Option, so None means empty.
+ #[serde(rename = "DealIDs")]
+ pub deal_ids: Option>,
+
+ pub expiration: ChainEpoch,
+ #[schemars(with = "LotusJson