fromXdr static method

Operation fromXdr(
  1. XdrOperation xdrOp
)

Returns Operation object from an Operation XDR object xdrOp.

Implementation

static Operation fromXdr(XdrOperation xdrOp) {
  XdrOperationBody body = xdrOp.body;
  Operation operation;
  switch (body.discriminant) {
    case XdrOperationType.CREATE_ACCOUNT:
      operation =
          CreateAccountOperation.builder(body.createAccountOp!).build();
      break;
    case XdrOperationType.PAYMENT:
      operation = PaymentOperation.builder(body.paymentOp!).build();
      break;
    case XdrOperationType.PATH_PAYMENT_STRICT_RECEIVE:
      operation = PathPaymentStrictReceiveOperation.builder(
              body.pathPaymentStrictReceiveOp!)
          .build();
      break;
    case XdrOperationType.MANAGE_SELL_OFFER:
      operation =
          ManageSellOfferOperation.builder(body.manageSellOfferOp!).build();
      break;
    case XdrOperationType.CREATE_PASSIVE_SELL_OFFER:
      operation = CreatePassiveSellOfferOperation.builder(
              body.createPassiveSellOfferOp!)
          .build();
      break;
    case XdrOperationType.SET_OPTIONS:
      operation = SetOptionsOperation.builder(body.setOptionsOp!).build();
      break;
    case XdrOperationType.CHANGE_TRUST:
      operation = ChangeTrustOperation.builder(body.changeTrustOp!).build();
      break;
    case XdrOperationType.ALLOW_TRUST:
      operation = AllowTrustOperation.builder(body.allowTrustOp!).build();
      break;
    case XdrOperationType.ACCOUNT_MERGE:
      operation = AccountMergeOperation.builder(body).build();
      break;
    case XdrOperationType.MANAGE_DATA:
      operation = ManageDataOperation.builder(body.manageDataOp!).build();
      break;
    case XdrOperationType.BUMP_SEQUENCE:
      operation = BumpSequenceOperation.builder(body.bumpSequenceOp!).build();
      break;
    case XdrOperationType.MANAGE_BUY_OFFER:
      operation =
          ManageBuyOfferOperation.builder(body.manageBuyOfferOp!).build();
      break;
    case XdrOperationType.PATH_PAYMENT_STRICT_SEND:
      operation = PathPaymentStrictSendOperation.builder(
              body.pathPaymentStrictSendOp!)
          .build();
      break;
    case XdrOperationType.CREATE_CLAIMABLE_BALANCE:
      operation = CreateClaimableBalanceOperation.builder(
              body.createClaimableBalanceOp!)
          .build();
      break;
    case XdrOperationType.CLAIM_CLAIMABLE_BALANCE:
      operation = ClaimClaimableBalanceOperation.builder(
              body.claimClaimableBalanceOp!)
          .build();
      break;
    case XdrOperationType.BEGIN_SPONSORING_FUTURE_RESERVES:
      final op = BeginSponsoringFutureReservesOperation.builder(
          body.beginSponsoringFutureReservesOp!);
      operation =
          BeginSponsoringFutureReservesOperationBuilder(op.sponsoredId)
              .build();
      break;
    case XdrOperationType.END_SPONSORING_FUTURE_RESERVES:
      operation = EndSponsoringFutureReservesOperationBuilder().build();
      break;
    case XdrOperationType.REVOKE_SPONSORSHIP:
      operation =
          RevokeSponsorshipOperation.fromXdr(body.revokeSponsorshipOp!)!;
      break;
    case XdrOperationType.CLAWBACK:
      operation = ClawbackOperation.builder(body.clawbackOp!).build();
      break;
    case XdrOperationType.CLAWBACK_CLAIMABLE_BALANCE:
      operation = ClawbackClaimableBalanceOperation.builder(
              body.clawbackClaimableBalanceOp!)
          .build();
      break;
    case XdrOperationType.SET_TRUST_LINE_FLAGS:
      operation =
          SetTrustLineFlagsOperation.builder(body.setTrustLineFlagsOp!)
              .build();
      break;
    case XdrOperationType.LIQUIDITY_POOL_DEPOSIT:
      operation =
          LiquidityPoolDepositOperation.builder(body.liquidityPoolDepositOp!)
              .build();
      break;
    case XdrOperationType.LIQUIDITY_POOL_WITHDRAW:
      operation = LiquidityPoolWithdrawOperation.builder(
              body.liquidityPoolWithdrawOp!)
          .build();
      break;
    case XdrOperationType.INVOKE_HOST_FUNCTION:
      operation =
          InvokeHostFunctionOperation.builder(body.invokeHostFunctionOp!)
              .build();
      break;
    case XdrOperationType.EXTEND_FOOTPRINT_TTL:
      operation =
          ExtendFootprintTTLOperation.builder(body.bumpExpirationOp!)
              .build();
      break;
    case XdrOperationType.RESTORE_FOOTPRINT:
      operation =
          RestoreFootprintOperation.builder(body.restoreFootprintOp!)
              .build();
      break;
    default:
      throw Exception("Unknown operation body ${body.discriminant}");
  }
  if (xdrOp.sourceAccount != null) {
    operation.sourceAccount = MuxedAccount.fromXdr(xdrOp.sourceAccount!);
  }
  return operation;
}