SpendStart<T> typedef

SpendStart<T> = Future<T> Function(Future<T> sdkCall(), {void beforeEnter()?})

Hand the SDK call to runStartedSpend's bookkeeping, from INSIDE the spend closure the host's authorizer runs. Call it as the closure's last step, after the identity fence. beforeEnter runs after the at-most-once check and before the spend counts as started — a refusal thrown there is not a started spend.

Implementation

typedef SpendStart<T> =
    Future<T> Function(
      Future<T> Function() sdkCall, {
      void Function()? beforeEnter,
    });