Can you expand on why?
This proposal simply requires the SE to understand WHEN it should request liquidity not to know HOW to make it available.
The goal with this proposal is for the SE to (over time through observation or through explicit config) know with some level of accuracy how long it will take to free up liquidity and so request this if it forecasts a need to perform a settlement that may not have the necessary liquidity.
It is then up to the LA to “make it happen”, even if this means sending a message to the counter-party requesting a collaborative rebalancing of unidirectional channels.
We anticipated all requests from the SE to the LA being async. I.e. You request that something is done and get an ACK. In parallel, notifications about changes of balance will let you know when they have been completed.
Our thinking here was that the most complex part of this process sits at the SE so, if possible, we should abstract everything else out as far as possible and only write this part once.
I recognise, especially when looking at the fees, this may be unnecessarily complex.
In that case, does an SE/LA per ledger make more sense?
Said differently, maybe we should standardise the Connector <-> SE
interface?
If so I’d strongly advocate for an interface where that component simply tracks the balances on the connector(s) per account and performs settlements as necessary and then updates that balance.
i.e. getBalance
is complemented by a debounced stream of balance changes from the connector to the SE.