From 6b68fa6771b5b854638dd5c66026ec3c30273313 Mon Sep 17 00:00:00 2001 From: Nitesh Balusu Date: Mon, 5 Aug 2024 11:35:35 -0400 Subject: [PATCH] add inbound fees support to getFeeRates --- lnd_methods/offchain/get_fee_rates.d.ts | 12 ++++++++++++ lnd_methods/offchain/get_fee_rates.js | 2 ++ lnd_responses/channel_edge_as_channel.js | 2 ++ lnd_responses/rpc_fees_as_channel_fees.js | 4 ++++ test/lnd_methods/offchain/test_get_fee_rates.js | 2 ++ test/lnd_responses/test_rpc_fees_as_channel_fees.js | 2 ++ 6 files changed, 24 insertions(+) diff --git a/lnd_methods/offchain/get_fee_rates.d.ts b/lnd_methods/offchain/get_fee_rates.d.ts index ae05c9c3..fa6755b4 100644 --- a/lnd_methods/offchain/get_fee_rates.d.ts +++ b/lnd_methods/offchain/get_fee_rates.d.ts @@ -11,6 +11,18 @@ export type GetFeeRatesResult = { fee_rate: number; /** Standard Format Channel Id */ id: string; + /** + * Source Based Base Fee Reduction String + * + * Not supported on LND 0.17.5 and below + */ + inbound_base_discount_mtokens: string; + /** + * Source Based Per Million Rate Reduction Number + * + * Not supported on LND 0.17.5 and below + */ + inbound_rate_discount: number; /** Channel Funding Transaction Id Hex */ transaction_id: string; /** Funding Outpoint Output Index */ diff --git a/lnd_methods/offchain/get_fee_rates.js b/lnd_methods/offchain/get_fee_rates.js index a44f99da..8a854758 100644 --- a/lnd_methods/offchain/get_fee_rates.js +++ b/lnd_methods/offchain/get_fee_rates.js @@ -23,6 +23,8 @@ const type = 'default'; base_fee_mtokens: fee_rate: id: + inbound_base_discount_mtokens: + inbound_rate_discount: transaction_id: transaction_vout: }] diff --git a/lnd_responses/channel_edge_as_channel.js b/lnd_responses/channel_edge_as_channel.js index ab0e9d04..7ef35e37 100644 --- a/lnd_responses/channel_edge_as_channel.js +++ b/lnd_responses/channel_edge_as_channel.js @@ -43,6 +43,8 @@ const separatorChar = ':'; [base_fee_mtokens]: [cltv_delta]: [fee_rate]: + inbound_base_discount_mtokens: + inbound_rate_discount: [is_disabled]: [max_htlc_mtokens]: [min_htlc_mtokens]: diff --git a/lnd_responses/rpc_fees_as_channel_fees.js b/lnd_responses/rpc_fees_as_channel_fees.js index 06f71cf1..c0391612 100644 --- a/lnd_responses/rpc_fees_as_channel_fees.js +++ b/lnd_responses/rpc_fees_as_channel_fees.js @@ -2,6 +2,8 @@ const {chanFormat} = require('bolt07'); const {safeTokens} = require('./../bolt00'); +const discount = fee => (!fee ? 0 : -fee).toString(); +const inverse = rate => !rate ? 0 : -rate; const isHash = n => /^[0-9A-F]{64}$/i.test(n); const notFound = -1; const outpointDivider = ':'; @@ -61,6 +63,8 @@ module.exports = channel => { base_fee_mtokens: channel.base_fee_msat, fee_rate: Number(channel.fee_per_mil), id: chanFormat({number: channel.chan_id}).channel, + inbound_base_discount_mtokens: discount(channel.inbound_base_fee_msat), + inbound_rate_discount: inverse(channel.inbound_fee_per_mil), transaction_id: txId, transaction_vout: Number(index), }; diff --git a/test/lnd_methods/offchain/test_get_fee_rates.js b/test/lnd_methods/offchain/test_get_fee_rates.js index dba5f3e0..55866273 100644 --- a/test/lnd_methods/offchain/test_get_fee_rates.js +++ b/test/lnd_methods/offchain/test_get_fee_rates.js @@ -56,6 +56,8 @@ const tests = [ base_fee_mtokens: '0', fee_rate: 0, id: '0x0x1', + inbound_base_discount_mtokens: '0', + inbound_rate_discount: 0, transaction_id: Buffer.alloc(32).toString('hex'), transaction_vout: 0, }], diff --git a/test/lnd_responses/test_rpc_fees_as_channel_fees.js b/test/lnd_responses/test_rpc_fees_as_channel_fees.js index a0a0e7e2..385742d8 100644 --- a/test/lnd_responses/test_rpc_fees_as_channel_fees.js +++ b/test/lnd_responses/test_rpc_fees_as_channel_fees.js @@ -66,6 +66,8 @@ const tests = [ base_fee_mtokens: '1', fee_rate: 0, id: '0x0x1', + inbound_base_discount_mtokens: '0', + inbound_rate_discount: 0, transaction_id: Buffer.alloc(32).toString('hex'), transaction_vout: 0, },