builder method Null safety

InvokeHostFuncOpBuilder builder(
  1. XdrInvokeHostFunctionOp op
)

Implementation

static InvokeHostFuncOpBuilder builder(XdrInvokeHostFunctionOp op) {
  if (op.function.discriminant ==
      XdrHostFunctionType.HOST_FUNCTION_TYPE_INVOKE_CONTRACT) {
    // use builder of invoke contract op
    return InvokeContractOp.builder(op);
  } else if (op.function.discriminant ==
      XdrHostFunctionType.HOST_FUNCTION_TYPE_INSTALL_CONTRACT_CODE) {
    // use builder of install contract code op
    return InstallContractCodeOp.builder(op);
  } else if (op.function.discriminant ==
      XdrHostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) {
    if (op.function.createContractArgs != null &&
        op.function.createContractArgs!.contractID.discriminant ==
            XdrContractIDType.CONTRACT_ID_FROM_SOURCE_ACCOUNT) {
      if (op.function.createContractArgs!.source.discriminant ==
          XdrSCContractCodeType.SCCONTRACT_CODE_WASM_REF) {
        // use builder of create contract op
        return CreateContractOp.builder(op);
      } else if (op.function.createContractArgs!.source.discriminant ==
          XdrSCContractCodeType.SCCONTRACT_CODE_TOKEN) {
        // use builder of deploy stellar asset contract with account op
        return DeploySACWithSourceAccountOp.builder(op);
      }
    } else if (op.function.createContractArgs != null &&
        op.function.createContractArgs!.contractID.discriminant ==
            XdrContractIDType.CONTRACT_ID_FROM_ASSET) {
      // use builder of deploy stellar asset contract with asset op
      return DeploySACWithAssetOp.builder(op);
    }
  }

  throw UnimplementedError();
}