1use crate::invoice::HashAlgorithm;
4use crate::schema_helpers::*;
5use crate::serde_utils::{Hash256, U128Hex, U64Hex};
6use schemars::JsonSchema;
7use serde::{Deserialize, Serialize};
8use serde_with::serde_as;
9
10#[derive(Serialize, Deserialize, Debug, JsonSchema)]
12pub struct CommitmentSignedParams {
13 pub channel_id: Hash256,
15}
16
17#[serde_as]
19#[derive(Serialize, Deserialize, Debug, JsonSchema)]
20pub struct AddTlcParams {
21 pub channel_id: Hash256,
23 #[serde_as(as = "U128Hex")]
25 #[schemars(schema_with = "schema_as_uint_hex")]
26 pub amount: u128,
27 pub payment_hash: Hash256,
29 #[serde_as(as = "U64Hex")]
31 #[schemars(schema_with = "schema_as_uint_hex")]
32 pub expiry: u64,
33 pub hash_algorithm: Option<HashAlgorithm>,
35}
36
37#[serde_as]
39#[derive(Clone, Serialize, Deserialize, JsonSchema)]
40pub struct AddTlcResult {
41 #[serde_as(as = "U64Hex")]
43 #[schemars(schema_with = "schema_as_uint_hex")]
44 pub tlc_id: u64,
45}
46
47#[serde_as]
49#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
50pub struct RemoveTlcParams {
51 pub channel_id: Hash256,
53 #[serde_as(as = "U64Hex")]
54 #[schemars(schema_with = "schema_as_uint_hex")]
55 pub tlc_id: u64,
57 pub reason: RemoveTlcReason,
59}
60
61#[serde_as]
63#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
64#[serde(untagged)]
65pub enum RemoveTlcReason {
66 RemoveTlcFulfill { payment_preimage: Hash256 },
68 RemoveTlcFail { error_code: String },
70}
71
72#[serde_as]
74#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
75pub struct SubmitCommitmentTransactionParams {
76 pub channel_id: Hash256,
78 #[serde_as(as = "U64Hex")]
80 #[schemars(schema_with = "schema_as_uint_hex")]
81 pub commitment_number: u64,
82}
83
84#[serde_as]
86#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
87pub struct SubmitCommitmentTransactionResult {
88 pub tx_hash: Hash256,
90}
91
92#[serde_as]
94#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
95pub struct CheckChannelShutdownParams {
96 pub channel_id: Hash256,
98}
99
100#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
102pub struct SignExternalFundingTxParams {
103 pub unsigned_funding_tx: ckb_jsonrpc_types::Transaction,
105 pub private_key: String,
108}
109
110#[derive(Clone, Serialize, Deserialize, Debug, JsonSchema)]
112pub struct SignExternalFundingTxResult {
113 pub signed_funding_tx: ckb_jsonrpc_types::Transaction,
115}