import type { Observable } from 'rxjs';
import type { RaidenAction } from '../../actions';
import { channelSettle } from '../../channels/actions';
import type { RaidenState } from '../../state';
import type { RaidenEpicDeps } from '../../types';
import { withdraw, withdrawBusy } from '../actions';
/**
 * Upon valid [[WithdrawConfirmation]] for a [[WithdrawRequest]].coop_settle=true from partner,
 * also send a [[WithdrawRequest]] with whole balance
 *
 * @param action$ - Observable of withdrawMessage.success actions
 * @param state$ - Observable of RaidenStates
 * @param deps - Epics dependencies
 * @param deps.log - Logger instance
 * @param deps.getTokenNetworkContract - TokenNetwork contract getter
 * @returns Observable of withdraw.request(coop_settle=false) actions
 */
export declare function coopSettleWithdrawReplyEpic(action$: Observable<RaidenAction>, state$: Observable<RaidenState>, { log, getTokenNetworkContract }: RaidenEpicDeps): Observable<withdraw.request>;
/**
 * When both valid [[WithdrawConfirmation]] for a [[WithdrawRequest]].coop_settle=true from us,
 * send a channelSettle.request
 *
 * @param action$ - Observable of withdrawMessage.success actions
 * @param state$ - Observable of RaidenStates
 * @param deps - Epics dependencies
 * @param deps.latest$ - Latest observable
 * @param deps.config$ - Config observable
 * @param deps.log - Logger instance
 * @returns Observable of channelSettle.request|withdraw.failure|success|withdrawBusy actions
 */
export declare function coopSettleEpic(action$: Observable<RaidenAction>, {}: Observable<RaidenState>, { latest$, config$, log }: RaidenEpicDeps): Observable<channelSettle.request | withdraw.failure | withdraw.success | withdrawBusy>;
