closeInventoryImpact function

BigInt closeInventoryImpact(
  1. FeePolicy policy,
  2. CloseBookTerms book,
  3. BigInt payout
)

strike_exposure::live_close_inventory_impact — the rebate a live close of payout receives: the exact fall in the same potential. Zero at the shipped rate of zero.

Implementation

BigInt closeInventoryImpact(
    FeePolicy policy, CloseBookTerms book, BigInt payout) {
  _assertFeePolicy(policy);
  _assertBook(book);
  _assertUint(book.complementMaxPayout, 'complementMaxPayout',
      maximum: book.maxPayout);
  if (_max(book.rangeMaxPayout, book.complementMaxPayout) != book.maxPayout) {
    throw PredictInputError(
        'maxPayout must equal the larger range or complement payout');
  }
  _assertUint(payout, 'close payout', maximum: book.rangeMaxPayout);
  if (policy.inventoryImpactMaxRate == BigInt.zero || payout == BigInt.zero) {
    return BigInt.zero;
  }
  final before = _payoutLiability(policy, book.maxPayout, book.totalPayout);
  final after = _payoutLiability(
    policy,
    _max(book.rangeMaxPayout - payout, book.complementMaxPayout),
    book.totalPayout - payout,
  );
  return inventoryImpactPotential(policy, before) -
      inventoryImpactPotential(policy, after);
}