raiden-ts
Version:
Raiden Light Client Typescript/Javascript SDK
74 lines (73 loc) • 3.89 kB
TypeScript
import type { Observable } from 'rxjs';
import type { RaidenAction } from '../../actions';
import type { RaidenState } from '../../state';
import type { RaidenEpicDeps } from '../../types';
import { channelSettle, channelSettleable } from '../actions';
/**
* Process newBlocks, emits ChannelSettleableAction if any closed channel is now settleable
*
* @param action$ - Observable of newBlock actions
* @param state$ - Observable of RaidenStates
* @param deps - Epics dependencies
* @param deps.getBlockTimestamp - Block's timestamp getter function
* @param deps.latest$ - Latest observable
* @returns Observable of channelSettleable actions
*/
export declare function channelSettleableEpic({}: Observable<RaidenAction>, state$: Observable<RaidenState>, { getBlockTimestamp, latest$ }: RaidenEpicDeps): Observable<channelSettleable>;
/**
* If config.autoSettle is true, calls channelSettle.request on settleable channels
* If partner is a LC and not the closing side, they're expected to wait [config.revealTimeout]
* after channel becomes settleable before attempting to auto-settle, so we should attempt it
* earlier [config.confirmationBlocks] after settleable. PCs always attempt earlier, so we should
* wait longer regardless of who closed the channel, to avoid races and wasted gas; if even after
* waiting (earlier or later) channel isn't settling/settled, we do it anyway.
*
* @param action$ - Observable of RaidenActions
* @param state$ - Observable of RaidenStates
* @param deps - RaidenEpicDeps members
* @param deps.address - Our address
* @param deps.config$ - Config observable
* @returns Observable of channelSettle.request actions
*/
export declare function channelAutoSettleEpic(action$: Observable<RaidenAction>, state$: Observable<RaidenState>, { address, config$ }: RaidenEpicDeps): Observable<channelSettle.request>;
/**
* A ChannelSettle action requested by user
* Needs to be called on an settleable or settling (for retries) channel.
* If tx goes through successfuly, stop as ChannelSettled success action will instead be detected
* and reacted by channelEventsEpic.
* If anything detectable goes wrong, fires a ChannelSettleActionFailed instead
*
* @param action$ - Observable of channelSettle actions
* @param state$ - Observable of RaidenStates
* @param deps - RaidenEpicDeps members
* @param deps.log - Logger instance
* @param deps.signer - Signer instance
* @param deps.address - Our address
* @param deps.main - Main signer/address
* @param deps.provider - Provider instance
* @param deps.getTokenNetworkContract - TokenNetwork contract instance getter
* @param deps.config$ - Config observable
* @param deps.latest$ - Latest observable
* @param deps.db - Database instance
* @returns Observable of channelSettle.failure actions
*/
export declare function channelSettleEpic(action$: Observable<RaidenAction>, state$: Observable<RaidenState>, deps: RaidenEpicDeps): Observable<channelSettle.failure>;
/**
* When channel is settled, unlock any pending lock on-chain
* TODO: check if it's worth it to also unlock partner's end
* TODO: do it only if economically viable (and define what that means)
*
* @param action$ - Observable of channelSettle.success actions
* @param state$ - Observable of RaidenStates
* @param deps - RaidenEpicDeps members
* @param deps.log - Logger instance
* @param deps.signer - Signer instance
* @param deps.address - Our address
* @param deps.main - Main signer/address
* @param deps.provider - Provider instance
* @param deps.getTokenNetworkContract - TokenNetwork contract instance getter
* @param deps.config$ - Config observable
* @param deps.latest$ - Latest observable
* @returns Empty observable
*/
export declare function channelUnlockEpic(action$: Observable<RaidenAction>, state$: Observable<RaidenState>, deps: RaidenEpicDeps): Observable<channelSettle.failure>;