UNPKG

raiden-ts

Version:

Raiden Light Client Typescript/Javascript SDK

74 lines (73 loc) 3.89 kB
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>;