use crate::invoice::HashAlgorithm;
use crate::schema_helpers::*;
use crate::serde_utils::{Hash256, U128Hex, U64Hex};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use serde_with::serde_as;
#[derive(Serialize, Deserialize, Debug, JsonSchema)]
pub struct CommitmentSignedParams {
pub channel_id: Hash256,
}
#[serde_as]
#[derive(Serialize, Deserialize, Debug, JsonSchema)]
pub struct AddTlcParams {
pub channel_id: Hash256,
#[serde_as(as = "U128Hex")]
#[schemars(schema_with = "schema_as_uint_hex")]
pub amount: u128,
pub payment_hash: Hash256,
#[serde_as(as = "U64Hex")]
#[schemars(schema_with = "schema_as_uint_hex")]
pub expiry: u64,
pub hash_algorithm: Option<HashAlgorithm>,
}
#[serde_as]
#[derive(Clone, Serialize, Deserialize, JsonSchema)]
pub struct AddTlcResult {
#[serde_as(as = "U64Hex")]
#[schemars(schema_with = "schema_as_uint_hex")]
pub tlc_id: u64,
}
#[serde_as]
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
pub struct RemoveTlcParams {
pub channel_id: Hash256,
#[serde_as(as = "U64Hex")]
#[schemars(schema_with = "schema_as_uint_hex")]
pub tlc_id: u64,
pub reason: RemoveTlcReason,
}
#[serde_as]
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
#[serde(untagged)]
pub enum RemoveTlcReason {
RemoveTlcFulfill { payment_preimage: Hash256 },
RemoveTlcFail { error_code: String },
}
#[serde_as]
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
pub struct SubmitCommitmentTransactionParams {
pub channel_id: Hash256,
#[serde_as(as = "U64Hex")]
#[schemars(schema_with = "schema_as_uint_hex")]
pub commitment_number: u64,
}
#[serde_as]
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
pub struct SubmitCommitmentTransactionResult {
pub tx_hash: Hash256,
}
#[serde_as]
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
pub struct CheckChannelShutdownParams {
pub channel_id: Hash256,
}
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
pub struct SignExternalFundingTxParams {
pub unsigned_funding_tx: ckb_jsonrpc_types::Transaction,
pub private_key: String,
}
#[derive(Clone, Serialize, Deserialize, Debug, JsonSchema)]
pub struct SignExternalFundingTxResult {
pub signed_funding_tx: ckb_jsonrpc_types::Transaction,
}