@vendasta/billing 8.2.0 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (591) hide show
  1. package/esm2020/lib/_generated/host.service.mjs +25 -0
  2. package/esm2020/lib/_generated/index.mjs +2 -0
  3. package/esm2020/lib/_internal/bank-reconciliation.api.service.mjs +46 -0
  4. package/esm2020/lib/_internal/billing.api.service.mjs +216 -0
  5. package/esm2020/lib/_internal/bundle.api.service.mjs +50 -0
  6. package/esm2020/lib/_internal/contract-document.api.service.mjs +45 -0
  7. package/esm2020/lib/_internal/contract.api.service.mjs +55 -0
  8. package/esm2020/lib/_internal/credit.api.service.mjs +45 -0
  9. package/esm2020/lib/_internal/discount.api.service.mjs +53 -0
  10. package/esm2020/lib/_internal/enums/applied-discount.enum.mjs +14 -0
  11. package/esm2020/lib/_internal/enums/card.enum.mjs +17 -0
  12. package/esm2020/lib/_internal/enums/contract.enum.mjs +14 -0
  13. package/esm2020/lib/_internal/enums/currency.enum.mjs +35 -0
  14. package/esm2020/lib/_internal/enums/frequency.enum.mjs +14 -0
  15. package/esm2020/lib/_internal/enums/index.mjs +31 -0
  16. package/esm2020/lib/_internal/enums/invoice.enum.mjs +18 -0
  17. package/esm2020/lib/_internal/enums/merchant-report.enum.mjs +13 -0
  18. package/{esm2015/lib/_internal/enums/merchant.enum.js → esm2020/lib/_internal/enums/merchant.enum.mjs} +1 -1
  19. package/esm2020/lib/_internal/enums/month.enum.mjs +23 -0
  20. package/esm2020/lib/_internal/enums/payment-card.enum.mjs +24 -0
  21. package/esm2020/lib/_internal/enums/payment-processor.enum.mjs +13 -0
  22. package/{esm2015/lib/_internal/enums/payment.enum.js → esm2020/lib/_internal/enums/payment.enum.mjs} +1 -1
  23. package/esm2020/lib/_internal/enums/payout.enum.mjs +22 -0
  24. package/esm2020/lib/_internal/enums/pricing-plan.enum.mjs +22 -0
  25. package/{esm2015/lib/_internal/enums/product-summary.enum.js → esm2020/lib/_internal/enums/product-summary.enum.mjs} +1 -1
  26. package/esm2020/lib/_internal/enums/product.enum.mjs +17 -0
  27. package/esm2020/lib/_internal/enums/purchase.enum.mjs +27 -0
  28. package/esm2020/lib/_internal/enums/recurring-invoice.enum.mjs +29 -0
  29. package/esm2020/lib/_internal/enums/refund.enum.mjs +25 -0
  30. package/esm2020/lib/_internal/enums/sales-credit-note.enum.mjs +14 -0
  31. package/{esm2015/lib/_internal/enums/sales-invoice.enum.js → esm2020/lib/_internal/enums/sales-invoice.enum.mjs} +1 -1
  32. package/esm2020/lib/_internal/enums/sort-direction.enum.mjs +12 -0
  33. package/{esm2015/lib/_internal/enums/subscribe-validation.enum.js → esm2020/lib/_internal/enums/subscribe-validation.enum.mjs} +1 -1
  34. package/esm2020/lib/_internal/enums/subscription.enum.mjs +12 -0
  35. package/esm2020/lib/_internal/index.mjs +33 -0
  36. package/esm2020/lib/_internal/interfaces/api.interface.mjs +2 -0
  37. package/esm2020/lib/_internal/interfaces/applied-bundle.interface.mjs +8 -0
  38. package/esm2020/lib/_internal/interfaces/applied-discount.interface.mjs +8 -0
  39. package/esm2020/lib/_internal/interfaces/applied-tax-rate.interface.mjs +8 -0
  40. package/esm2020/lib/_internal/interfaces/balance.interface.mjs +8 -0
  41. package/esm2020/lib/_internal/interfaces/billable-item.interface.mjs +2 -0
  42. package/esm2020/lib/_internal/interfaces/bundle.interface.mjs +2 -0
  43. package/esm2020/lib/_internal/interfaces/card.interface.mjs +8 -0
  44. package/esm2020/lib/_internal/interfaces/commitment.interface.mjs +8 -0
  45. package/esm2020/lib/_internal/interfaces/common.interface.mjs +8 -0
  46. package/esm2020/lib/_internal/interfaces/contract-document.interface.mjs +2 -0
  47. package/esm2020/lib/_internal/interfaces/contract.interface.mjs +2 -0
  48. package/esm2020/lib/_internal/interfaces/credit.interface.mjs +8 -0
  49. package/esm2020/lib/_internal/interfaces/currency.interface.mjs +8 -0
  50. package/esm2020/lib/_internal/interfaces/customer-summary.interface.mjs +8 -0
  51. package/esm2020/lib/_internal/interfaces/date-range.interface.mjs +8 -0
  52. package/esm2020/lib/_internal/interfaces/discount.interface.mjs +2 -0
  53. package/esm2020/lib/_internal/interfaces/external-account.interface.mjs +8 -0
  54. package/esm2020/lib/_internal/interfaces/field-mask.interface.mjs +8 -0
  55. package/esm2020/lib/_internal/interfaces/frequency.interface.mjs +8 -0
  56. package/esm2020/lib/_internal/interfaces/index.mjs +2 -0
  57. package/esm2020/lib/_internal/interfaces/invoice-template.interface.mjs +2 -0
  58. package/esm2020/lib/_internal/interfaces/invoice.interface.mjs +2 -0
  59. package/esm2020/lib/_internal/interfaces/merchant-report.interface.mjs +2 -0
  60. package/esm2020/lib/_internal/interfaces/merchant.interface.mjs +2 -0
  61. package/esm2020/lib/_internal/interfaces/metered-component.interface.mjs +8 -0
  62. package/esm2020/lib/_internal/interfaces/month.interface.mjs +8 -0
  63. package/esm2020/lib/_internal/interfaces/payment-card.interface.mjs +8 -0
  64. package/esm2020/lib/_internal/interfaces/payment-processor.interface.mjs +8 -0
  65. package/esm2020/lib/_internal/interfaces/payment.interface.mjs +2 -0
  66. package/esm2020/lib/_internal/interfaces/payout.interface.mjs +2 -0
  67. package/esm2020/lib/_internal/interfaces/pricing-plan-product.interface.mjs +2 -0
  68. package/esm2020/lib/_internal/interfaces/pricing-plan.interface.mjs +2 -0
  69. package/esm2020/lib/_internal/interfaces/product-pricing.interface.mjs +2 -0
  70. package/esm2020/lib/_internal/interfaces/product-summary.interface.mjs +2 -0
  71. package/esm2020/lib/_internal/interfaces/product.interface.mjs +2 -0
  72. package/esm2020/lib/_internal/interfaces/purchase.interface.mjs +2 -0
  73. package/esm2020/lib/_internal/interfaces/recurring-invoice.interface.mjs +2 -0
  74. package/esm2020/lib/_internal/interfaces/refund.interface.mjs +8 -0
  75. package/esm2020/lib/_internal/interfaces/retail-customer-configuration.interface.mjs +8 -0
  76. package/esm2020/lib/_internal/interfaces/sales-credit-note.interface.mjs +2 -0
  77. package/esm2020/lib/_internal/interfaces/sales-invoice.interface.mjs +2 -0
  78. package/esm2020/lib/_internal/interfaces/sort-direction.interface.mjs +8 -0
  79. package/esm2020/lib/_internal/interfaces/subscribe-validation.interface.mjs +8 -0
  80. package/esm2020/lib/_internal/interfaces/subscription.interface.mjs +2 -0
  81. package/esm2020/lib/_internal/interfaces/tax-rate.interface.mjs +2 -0
  82. package/esm2020/lib/_internal/invoice-template.api.service.mjs +85 -0
  83. package/esm2020/lib/_internal/invoice.api.service.mjs +116 -0
  84. package/esm2020/lib/_internal/merchant.api.service.mjs +159 -0
  85. package/esm2020/lib/_internal/objects/api.mjs +890 -0
  86. package/esm2020/lib/_internal/objects/applied-bundle.mjs +77 -0
  87. package/esm2020/lib/_internal/objects/applied-discount.mjs +46 -0
  88. package/esm2020/lib/_internal/objects/applied-tax-rate.mjs +39 -0
  89. package/esm2020/lib/_internal/objects/balance.mjs +45 -0
  90. package/esm2020/lib/_internal/objects/billable-item.mjs +562 -0
  91. package/esm2020/lib/_internal/objects/bundle.mjs +390 -0
  92. package/esm2020/lib/_internal/objects/card.mjs +7 -0
  93. package/esm2020/lib/_internal/objects/commitment.mjs +36 -0
  94. package/esm2020/lib/_internal/objects/common.mjs +56 -0
  95. package/esm2020/lib/_internal/objects/contract-document.mjs +141 -0
  96. package/esm2020/lib/_internal/objects/contract.mjs +474 -0
  97. package/esm2020/lib/_internal/objects/credit.mjs +114 -0
  98. package/esm2020/lib/_internal/objects/currency.mjs +7 -0
  99. package/esm2020/lib/_internal/objects/customer-summary.mjs +104 -0
  100. package/esm2020/lib/_internal/objects/date-range.mjs +36 -0
  101. package/esm2020/lib/_internal/objects/discount.mjs +299 -0
  102. package/esm2020/lib/_internal/objects/external-account.mjs +160 -0
  103. package/esm2020/lib/_internal/objects/field-mask.mjs +27 -0
  104. package/esm2020/lib/_internal/objects/frequency.mjs +7 -0
  105. package/esm2020/lib/_internal/objects/index.mjs +46 -0
  106. package/esm2020/lib/_internal/objects/invoice-template.mjs +707 -0
  107. package/esm2020/lib/_internal/objects/invoice.mjs +1117 -0
  108. package/esm2020/lib/_internal/objects/merchant-report.mjs +108 -0
  109. package/esm2020/lib/_internal/objects/merchant.mjs +991 -0
  110. package/esm2020/lib/_internal/objects/metered-component.mjs +97 -0
  111. package/esm2020/lib/_internal/objects/month.mjs +7 -0
  112. package/esm2020/lib/_internal/objects/payment-card.mjs +211 -0
  113. package/esm2020/lib/_internal/objects/payment-processor.mjs +7 -0
  114. package/esm2020/lib/_internal/objects/payment.mjs +1219 -0
  115. package/esm2020/lib/_internal/objects/payout.mjs +258 -0
  116. package/esm2020/lib/_internal/objects/pricing-plan-product.mjs +565 -0
  117. package/esm2020/lib/_internal/objects/pricing-plan.mjs +290 -0
  118. package/esm2020/lib/_internal/objects/product-pricing.mjs +139 -0
  119. package/esm2020/lib/_internal/objects/product-summary.mjs +538 -0
  120. package/esm2020/lib/_internal/objects/product.mjs +302 -0
  121. package/esm2020/lib/_internal/objects/purchase.mjs +524 -0
  122. package/esm2020/lib/_internal/objects/recurring-invoice.mjs +324 -0
  123. package/esm2020/lib/_internal/objects/refund.mjs +181 -0
  124. package/esm2020/lib/_internal/objects/retail-customer-configuration.mjs +159 -0
  125. package/esm2020/lib/_internal/objects/sales-credit-note.mjs +211 -0
  126. package/esm2020/lib/_internal/objects/sales-invoice.mjs +300 -0
  127. package/esm2020/lib/_internal/objects/sort-direction.mjs +7 -0
  128. package/esm2020/lib/_internal/objects/subscribe-validation.mjs +31 -0
  129. package/esm2020/lib/_internal/objects/subscription.mjs +555 -0
  130. package/esm2020/lib/_internal/objects/tax-rate.mjs +342 -0
  131. package/esm2020/lib/_internal/payment-method.api.service.mjs +49 -0
  132. package/esm2020/lib/_internal/payment.api.service.mjs +102 -0
  133. package/esm2020/lib/_internal/pricing.api.service.mjs +81 -0
  134. package/esm2020/lib/_internal/product-summary.api.service.mjs +46 -0
  135. package/esm2020/lib/_internal/product.api.service.mjs +47 -0
  136. package/esm2020/lib/_internal/purchase.api.service.mjs +59 -0
  137. package/esm2020/lib/_internal/recurring-invoice.api.service.mjs +60 -0
  138. package/esm2020/lib/_internal/refund.api.service.mjs +45 -0
  139. package/esm2020/lib/_internal/retail-customer-configuration.api.service.mjs +45 -0
  140. package/esm2020/lib/_internal/sales-credit-note.api.service.mjs +45 -0
  141. package/esm2020/lib/_internal/sales-invoice.api.service.mjs +50 -0
  142. package/esm2020/lib/_internal/tax.api.service.mjs +63 -0
  143. package/esm2020/lib/_internal/vendor.api.service.mjs +46 -0
  144. package/esm2020/lib/index.mjs +3 -0
  145. package/esm2020/public_api.mjs +2 -0
  146. package/esm2020/vendasta-billing.mjs +5 -0
  147. package/fesm2015/{vendasta-billing.js → vendasta-billing.mjs} +717 -5236
  148. package/fesm2015/vendasta-billing.mjs.map +1 -0
  149. package/fesm2020/vendasta-billing.mjs +14454 -0
  150. package/fesm2020/vendasta-billing.mjs.map +1 -0
  151. package/lib/_generated/host.service.d.ts +5 -9
  152. package/lib/_internal/bank-reconciliation.api.service.d.ts +4 -0
  153. package/lib/_internal/billing.api.service.d.ts +4 -0
  154. package/lib/_internal/bundle.api.service.d.ts +4 -0
  155. package/lib/_internal/contract-document.api.service.d.ts +4 -0
  156. package/lib/_internal/contract.api.service.d.ts +4 -0
  157. package/lib/_internal/credit.api.service.d.ts +4 -0
  158. package/lib/_internal/discount.api.service.d.ts +4 -0
  159. package/lib/_internal/interfaces/api.interface.d.ts +8 -1
  160. package/lib/_internal/interfaces/index.d.ts +2 -2
  161. package/lib/_internal/interfaces/product-pricing.interface.d.ts +5 -0
  162. package/lib/_internal/interfaces/recurring-invoice.interface.d.ts +2 -1
  163. package/lib/_internal/invoice-template.api.service.d.ts +4 -0
  164. package/lib/_internal/invoice.api.service.d.ts +4 -0
  165. package/lib/_internal/merchant.api.service.d.ts +4 -0
  166. package/lib/_internal/objects/api.d.ts +14 -1
  167. package/lib/_internal/objects/index.d.ts +2 -2
  168. package/lib/_internal/objects/product-pricing.d.ts +8 -0
  169. package/lib/_internal/objects/recurring-invoice.d.ts +2 -1
  170. package/lib/_internal/payment-method.api.service.d.ts +4 -0
  171. package/lib/_internal/payment.api.service.d.ts +4 -0
  172. package/lib/_internal/pricing.api.service.d.ts +7 -2
  173. package/lib/_internal/product-summary.api.service.d.ts +4 -0
  174. package/lib/_internal/product.api.service.d.ts +4 -0
  175. package/lib/_internal/purchase.api.service.d.ts +4 -0
  176. package/lib/_internal/recurring-invoice.api.service.d.ts +4 -0
  177. package/lib/_internal/refund.api.service.d.ts +4 -0
  178. package/lib/_internal/retail-customer-configuration.api.service.d.ts +4 -0
  179. package/lib/_internal/sales-credit-note.api.service.d.ts +4 -0
  180. package/lib/_internal/sales-invoice.api.service.d.ts +4 -0
  181. package/lib/_internal/tax.api.service.d.ts +4 -0
  182. package/lib/_internal/vendor.api.service.d.ts +4 -0
  183. package/lib/index.d.ts +2 -37
  184. package/package.json +26 -15
  185. package/src/README.md +1 -0
  186. package/vendasta-billing.d.ts +1 -0
  187. package/bundles/vendasta-billing.umd.js +0 -19912
  188. package/bundles/vendasta-billing.umd.js.map +0 -1
  189. package/bundles/vendasta-billing.umd.min.js +0 -16
  190. package/bundles/vendasta-billing.umd.min.js.map +0 -1
  191. package/esm2015/lib/_generated/host.service.js +0 -65
  192. package/esm2015/lib/_generated/index.js +0 -2
  193. package/esm2015/lib/_internal/bank-reconciliation.api.service.js +0 -47
  194. package/esm2015/lib/_internal/billing.api.service.js +0 -217
  195. package/esm2015/lib/_internal/bundle.api.service.js +0 -51
  196. package/esm2015/lib/_internal/contract-document.api.service.js +0 -46
  197. package/esm2015/lib/_internal/contract.api.service.js +0 -56
  198. package/esm2015/lib/_internal/credit.api.service.js +0 -46
  199. package/esm2015/lib/_internal/discount.api.service.js +0 -54
  200. package/esm2015/lib/_internal/enums/applied-discount.enum.js +0 -14
  201. package/esm2015/lib/_internal/enums/card.enum.js +0 -17
  202. package/esm2015/lib/_internal/enums/contract.enum.js +0 -14
  203. package/esm2015/lib/_internal/enums/currency.enum.js +0 -35
  204. package/esm2015/lib/_internal/enums/frequency.enum.js +0 -14
  205. package/esm2015/lib/_internal/enums/index.js +0 -31
  206. package/esm2015/lib/_internal/enums/invoice.enum.js +0 -18
  207. package/esm2015/lib/_internal/enums/merchant-report.enum.js +0 -13
  208. package/esm2015/lib/_internal/enums/month.enum.js +0 -23
  209. package/esm2015/lib/_internal/enums/payment-card.enum.js +0 -24
  210. package/esm2015/lib/_internal/enums/payment-processor.enum.js +0 -13
  211. package/esm2015/lib/_internal/enums/payout.enum.js +0 -22
  212. package/esm2015/lib/_internal/enums/pricing-plan.enum.js +0 -22
  213. package/esm2015/lib/_internal/enums/product.enum.js +0 -17
  214. package/esm2015/lib/_internal/enums/purchase.enum.js +0 -27
  215. package/esm2015/lib/_internal/enums/recurring-invoice.enum.js +0 -29
  216. package/esm2015/lib/_internal/enums/refund.enum.js +0 -25
  217. package/esm2015/lib/_internal/enums/sales-credit-note.enum.js +0 -14
  218. package/esm2015/lib/_internal/enums/sort-direction.enum.js +0 -12
  219. package/esm2015/lib/_internal/enums/subscription.enum.js +0 -12
  220. package/esm2015/lib/_internal/index.js +0 -33
  221. package/esm2015/lib/_internal/interfaces/api.interface.js +0 -2
  222. package/esm2015/lib/_internal/interfaces/applied-bundle.interface.js +0 -8
  223. package/esm2015/lib/_internal/interfaces/applied-discount.interface.js +0 -8
  224. package/esm2015/lib/_internal/interfaces/applied-tax-rate.interface.js +0 -8
  225. package/esm2015/lib/_internal/interfaces/balance.interface.js +0 -8
  226. package/esm2015/lib/_internal/interfaces/billable-item.interface.js +0 -2
  227. package/esm2015/lib/_internal/interfaces/bundle.interface.js +0 -2
  228. package/esm2015/lib/_internal/interfaces/card.interface.js +0 -8
  229. package/esm2015/lib/_internal/interfaces/commitment.interface.js +0 -8
  230. package/esm2015/lib/_internal/interfaces/common.interface.js +0 -8
  231. package/esm2015/lib/_internal/interfaces/contract-document.interface.js +0 -2
  232. package/esm2015/lib/_internal/interfaces/contract.interface.js +0 -2
  233. package/esm2015/lib/_internal/interfaces/credit.interface.js +0 -8
  234. package/esm2015/lib/_internal/interfaces/currency.interface.js +0 -8
  235. package/esm2015/lib/_internal/interfaces/customer-summary.interface.js +0 -8
  236. package/esm2015/lib/_internal/interfaces/date-range.interface.js +0 -8
  237. package/esm2015/lib/_internal/interfaces/discount.interface.js +0 -2
  238. package/esm2015/lib/_internal/interfaces/external-account.interface.js +0 -8
  239. package/esm2015/lib/_internal/interfaces/field-mask.interface.js +0 -8
  240. package/esm2015/lib/_internal/interfaces/frequency.interface.js +0 -8
  241. package/esm2015/lib/_internal/interfaces/index.js +0 -2
  242. package/esm2015/lib/_internal/interfaces/invoice-template.interface.js +0 -2
  243. package/esm2015/lib/_internal/interfaces/invoice.interface.js +0 -2
  244. package/esm2015/lib/_internal/interfaces/merchant-report.interface.js +0 -2
  245. package/esm2015/lib/_internal/interfaces/merchant.interface.js +0 -2
  246. package/esm2015/lib/_internal/interfaces/metered-component.interface.js +0 -8
  247. package/esm2015/lib/_internal/interfaces/month.interface.js +0 -8
  248. package/esm2015/lib/_internal/interfaces/payment-card.interface.js +0 -8
  249. package/esm2015/lib/_internal/interfaces/payment-processor.interface.js +0 -8
  250. package/esm2015/lib/_internal/interfaces/payment.interface.js +0 -2
  251. package/esm2015/lib/_internal/interfaces/payout.interface.js +0 -2
  252. package/esm2015/lib/_internal/interfaces/pricing-plan-product.interface.js +0 -2
  253. package/esm2015/lib/_internal/interfaces/pricing-plan.interface.js +0 -2
  254. package/esm2015/lib/_internal/interfaces/product-pricing.interface.js +0 -2
  255. package/esm2015/lib/_internal/interfaces/product-summary.interface.js +0 -2
  256. package/esm2015/lib/_internal/interfaces/product.interface.js +0 -2
  257. package/esm2015/lib/_internal/interfaces/purchase.interface.js +0 -2
  258. package/esm2015/lib/_internal/interfaces/recurring-invoice.interface.js +0 -2
  259. package/esm2015/lib/_internal/interfaces/refund.interface.js +0 -8
  260. package/esm2015/lib/_internal/interfaces/retail-customer-configuration.interface.js +0 -8
  261. package/esm2015/lib/_internal/interfaces/sales-credit-note.interface.js +0 -2
  262. package/esm2015/lib/_internal/interfaces/sales-invoice.interface.js +0 -2
  263. package/esm2015/lib/_internal/interfaces/sort-direction.interface.js +0 -8
  264. package/esm2015/lib/_internal/interfaces/subscribe-validation.interface.js +0 -8
  265. package/esm2015/lib/_internal/interfaces/subscription.interface.js +0 -2
  266. package/esm2015/lib/_internal/interfaces/tax-rate.interface.js +0 -2
  267. package/esm2015/lib/_internal/invoice-template.api.service.js +0 -86
  268. package/esm2015/lib/_internal/invoice.api.service.js +0 -117
  269. package/esm2015/lib/_internal/merchant.api.service.js +0 -160
  270. package/esm2015/lib/_internal/objects/api.js +0 -841
  271. package/esm2015/lib/_internal/objects/applied-bundle.js +0 -77
  272. package/esm2015/lib/_internal/objects/applied-discount.js +0 -46
  273. package/esm2015/lib/_internal/objects/applied-tax-rate.js +0 -39
  274. package/esm2015/lib/_internal/objects/balance.js +0 -45
  275. package/esm2015/lib/_internal/objects/billable-item.js +0 -562
  276. package/esm2015/lib/_internal/objects/bundle.js +0 -390
  277. package/esm2015/lib/_internal/objects/card.js +0 -7
  278. package/esm2015/lib/_internal/objects/commitment.js +0 -36
  279. package/esm2015/lib/_internal/objects/common.js +0 -56
  280. package/esm2015/lib/_internal/objects/contract-document.js +0 -141
  281. package/esm2015/lib/_internal/objects/contract.js +0 -474
  282. package/esm2015/lib/_internal/objects/credit.js +0 -114
  283. package/esm2015/lib/_internal/objects/currency.js +0 -7
  284. package/esm2015/lib/_internal/objects/customer-summary.js +0 -104
  285. package/esm2015/lib/_internal/objects/date-range.js +0 -36
  286. package/esm2015/lib/_internal/objects/discount.js +0 -299
  287. package/esm2015/lib/_internal/objects/external-account.js +0 -160
  288. package/esm2015/lib/_internal/objects/field-mask.js +0 -27
  289. package/esm2015/lib/_internal/objects/frequency.js +0 -7
  290. package/esm2015/lib/_internal/objects/index.js +0 -46
  291. package/esm2015/lib/_internal/objects/invoice-template.js +0 -707
  292. package/esm2015/lib/_internal/objects/invoice.js +0 -1117
  293. package/esm2015/lib/_internal/objects/merchant-report.js +0 -108
  294. package/esm2015/lib/_internal/objects/merchant.js +0 -991
  295. package/esm2015/lib/_internal/objects/metered-component.js +0 -97
  296. package/esm2015/lib/_internal/objects/month.js +0 -7
  297. package/esm2015/lib/_internal/objects/payment-card.js +0 -211
  298. package/esm2015/lib/_internal/objects/payment-processor.js +0 -7
  299. package/esm2015/lib/_internal/objects/payment.js +0 -1219
  300. package/esm2015/lib/_internal/objects/payout.js +0 -258
  301. package/esm2015/lib/_internal/objects/pricing-plan-product.js +0 -565
  302. package/esm2015/lib/_internal/objects/pricing-plan.js +0 -290
  303. package/esm2015/lib/_internal/objects/product-pricing.js +0 -107
  304. package/esm2015/lib/_internal/objects/product-summary.js +0 -538
  305. package/esm2015/lib/_internal/objects/product.js +0 -302
  306. package/esm2015/lib/_internal/objects/purchase.js +0 -524
  307. package/esm2015/lib/_internal/objects/recurring-invoice.js +0 -324
  308. package/esm2015/lib/_internal/objects/refund.js +0 -181
  309. package/esm2015/lib/_internal/objects/retail-customer-configuration.js +0 -159
  310. package/esm2015/lib/_internal/objects/sales-credit-note.js +0 -211
  311. package/esm2015/lib/_internal/objects/sales-invoice.js +0 -300
  312. package/esm2015/lib/_internal/objects/sort-direction.js +0 -7
  313. package/esm2015/lib/_internal/objects/subscribe-validation.js +0 -31
  314. package/esm2015/lib/_internal/objects/subscription.js +0 -555
  315. package/esm2015/lib/_internal/objects/tax-rate.js +0 -342
  316. package/esm2015/lib/_internal/payment-method.api.service.js +0 -50
  317. package/esm2015/lib/_internal/payment.api.service.js +0 -103
  318. package/esm2015/lib/_internal/pricing.api.service.js +0 -77
  319. package/esm2015/lib/_internal/product-summary.api.service.js +0 -47
  320. package/esm2015/lib/_internal/product.api.service.js +0 -48
  321. package/esm2015/lib/_internal/purchase.api.service.js +0 -60
  322. package/esm2015/lib/_internal/recurring-invoice.api.service.js +0 -61
  323. package/esm2015/lib/_internal/refund.api.service.js +0 -46
  324. package/esm2015/lib/_internal/retail-customer-configuration.api.service.js +0 -46
  325. package/esm2015/lib/_internal/sales-credit-note.api.service.js +0 -46
  326. package/esm2015/lib/_internal/sales-invoice.api.service.js +0 -51
  327. package/esm2015/lib/_internal/tax.api.service.js +0 -64
  328. package/esm2015/lib/_internal/vendor.api.service.js +0 -47
  329. package/esm2015/lib/applied_bundle/applied_bundle.js +0 -12
  330. package/esm2015/lib/applied_bundle/index.js +0 -2
  331. package/esm2015/lib/applied_discount/applied_discount.js +0 -48
  332. package/esm2015/lib/applied_discount/index.js +0 -2
  333. package/esm2015/lib/bank_account/bank-account.service.js +0 -38
  334. package/esm2015/lib/bank_account/bank_account.js +0 -13
  335. package/esm2015/lib/bank_account/index.js +0 -3
  336. package/esm2015/lib/bank_reconciliation/bank-reconciliation.service.js +0 -54
  337. package/esm2015/lib/bank_reconciliation/index.js +0 -3
  338. package/esm2015/lib/bank_reconciliation/payout.js +0 -53
  339. package/esm2015/lib/billable-item/billable-item.js +0 -40
  340. package/esm2015/lib/billable-item/billable-item.service.js +0 -31
  341. package/esm2015/lib/billable-item/index.js +0 -2
  342. package/esm2015/lib/billing-host.service.js +0 -41
  343. package/esm2015/lib/billing.service.js +0 -376
  344. package/esm2015/lib/bundle/bundle.js +0 -37
  345. package/esm2015/lib/bundle/bundle.service.js +0 -56
  346. package/esm2015/lib/bundle/index.js +0 -2
  347. package/esm2015/lib/contract/contract.js +0 -21
  348. package/esm2015/lib/contract/contract.service.js +0 -39
  349. package/esm2015/lib/contract/dimension.js +0 -21
  350. package/esm2015/lib/contract/index.js +0 -5
  351. package/esm2015/lib/contract/mutations.js +0 -11
  352. package/esm2015/lib/contract-document/contract-document.js +0 -9
  353. package/esm2015/lib/contract-document/contract-document.service.js +0 -68
  354. package/esm2015/lib/contract-document/index.js +0 -2
  355. package/esm2015/lib/contract-document/list-contract-document.js +0 -2
  356. package/esm2015/lib/core/index.js +0 -3
  357. package/esm2015/lib/core/paged-response.js +0 -8
  358. package/esm2015/lib/core/sort-direction.js +0 -6
  359. package/esm2015/lib/credit/credit.js +0 -8
  360. package/esm2015/lib/credit/credit.service.js +0 -33
  361. package/esm2015/lib/credit/index.js +0 -2
  362. package/esm2015/lib/customer_summary/customer-summary.js +0 -15
  363. package/esm2015/lib/discount/discount.js +0 -18
  364. package/esm2015/lib/discount/discount.service.js +0 -73
  365. package/esm2015/lib/discount/discount_type.js +0 -32
  366. package/esm2015/lib/discount/index.js +0 -3
  367. package/esm2015/lib/discount/list-discount.js +0 -2
  368. package/esm2015/lib/http-shared/error-handlers.js +0 -20
  369. package/esm2015/lib/index.js +0 -38
  370. package/esm2015/lib/invoice/index.js +0 -3
  371. package/esm2015/lib/invoice/invoice.js +0 -198
  372. package/esm2015/lib/invoice/invoice.service.js +0 -254
  373. package/esm2015/lib/invoice/list-invoice.js +0 -2
  374. package/esm2015/lib/invoice-template/index.js +0 -2
  375. package/esm2015/lib/invoice-template/invoice-template.js +0 -38
  376. package/esm2015/lib/invoice-template/invoice-template.service.js +0 -78
  377. package/esm2015/lib/merchant/balance.js +0 -2
  378. package/esm2015/lib/merchant/index.js +0 -5
  379. package/esm2015/lib/merchant/merchant.interface.js +0 -2
  380. package/esm2015/lib/merchant/merchant.js +0 -20
  381. package/esm2015/lib/merchant/merchant.service.js +0 -212
  382. package/esm2015/lib/merchant/payout-summary.js +0 -32
  383. package/esm2015/lib/merchant/retail-configuration.js +0 -57
  384. package/esm2015/lib/merchant-report/index.js +0 -2
  385. package/esm2015/lib/merchant-report/merchant-report-status.js +0 -2
  386. package/esm2015/lib/merchant-report/merchant-report.interfaces.js +0 -2
  387. package/esm2015/lib/merchant-report/merchant-report.js +0 -2
  388. package/esm2015/lib/merchant-report/merchant-report.service.js +0 -38
  389. package/esm2015/lib/payment/dispute.js +0 -92
  390. package/esm2015/lib/payment/index.js +0 -10
  391. package/esm2015/lib/payment/payment-allocation-type.js +0 -18
  392. package/esm2015/lib/payment/payment-source.js +0 -18
  393. package/esm2015/lib/payment/payment-status.js +0 -17
  394. package/esm2015/lib/payment/payment.js +0 -292
  395. package/esm2015/lib/payment/payment.service.js +0 -138
  396. package/esm2015/lib/payment/retail-payment.js +0 -70
  397. package/esm2015/lib/payment/retail-status.js +0 -50
  398. package/esm2015/lib/payment-card/index.js +0 -3
  399. package/esm2015/lib/payment-card/payment-card.js +0 -60
  400. package/esm2015/lib/payment-card/payment-card.service.js +0 -45
  401. package/esm2015/lib/payment-method/index.js +0 -2
  402. package/esm2015/lib/payment-method/payment-method.service.js +0 -43
  403. package/esm2015/lib/pricing/billing-strategy.js +0 -39
  404. package/esm2015/lib/pricing/commitment.js +0 -7
  405. package/esm2015/lib/pricing/currency.js +0 -86
  406. package/esm2015/lib/pricing/frequency.js +0 -42
  407. package/esm2015/lib/pricing/index.js +0 -12
  408. package/esm2015/lib/pricing/list-pricing-plan-product-filter.js +0 -2
  409. package/esm2015/lib/pricing/pricing-plan-product.js +0 -53
  410. package/esm2015/lib/pricing/pricing-plan.js +0 -14
  411. package/esm2015/lib/pricing/pricing-plan.service.js +0 -287
  412. package/esm2015/lib/pricing/product-pricing-rules.js +0 -10
  413. package/esm2015/lib/pricing/product-pricing-type.js +0 -31
  414. package/esm2015/lib/pricing/product-pricing.js +0 -44
  415. package/esm2015/lib/pricing/wholesale-pricing.service.js +0 -61
  416. package/esm2015/lib/product/index.js +0 -3
  417. package/esm2015/lib/product/list-products.js +0 -30
  418. package/esm2015/lib/product/product.js +0 -10
  419. package/esm2015/lib/product-summary/index.js +0 -3
  420. package/esm2015/lib/product-summary/product-summary.service.js +0 -42
  421. package/esm2015/lib/product-summary/subscription-retention.js +0 -19
  422. package/esm2015/lib/purchase/index.js +0 -4
  423. package/esm2015/lib/purchase/list-purchases.js +0 -17
  424. package/esm2015/lib/purchase/purchase.js +0 -79
  425. package/esm2015/lib/purchase/purchase.service.js +0 -31
  426. package/esm2015/lib/purchase/purchase_status.js +0 -26
  427. package/esm2015/lib/recurring_invoice/collection-method.js +0 -31
  428. package/esm2015/lib/recurring_invoice/index.js +0 -6
  429. package/esm2015/lib/recurring_invoice/interval.js +0 -42
  430. package/esm2015/lib/recurring_invoice/payment-processor.js +0 -32
  431. package/esm2015/lib/recurring_invoice/recurring-invoice.js +0 -123
  432. package/esm2015/lib/recurring_invoice/recurring-invoice.service.js +0 -64
  433. package/esm2015/lib/recurring_invoice/status.js +0 -37
  434. package/esm2015/lib/refund/index.js +0 -3
  435. package/esm2015/lib/refund/refund.js +0 -81
  436. package/esm2015/lib/refund/refund.service.js +0 -53
  437. package/esm2015/lib/retail-customer-configuration/index.js +0 -3
  438. package/esm2015/lib/retail-customer-configuration/retail-customer-configuration.js +0 -44
  439. package/esm2015/lib/retail-customer-configuration/retail-customer-configuration.service.js +0 -39
  440. package/esm2015/lib/revenue/index.js +0 -2
  441. package/esm2015/lib/revenue/revenue.interfaces.js +0 -2
  442. package/esm2015/lib/revenue/revenue.service.js +0 -34
  443. package/esm2015/lib/sales-credit-note/index.js +0 -3
  444. package/esm2015/lib/sales-credit-note/sales-credit-note.js +0 -53
  445. package/esm2015/lib/sales-credit-note/sales-credit-note.service.js +0 -72
  446. package/esm2015/lib/sales-invoice/index.js +0 -3
  447. package/esm2015/lib/sales-invoice/sales-invoice.js +0 -87
  448. package/esm2015/lib/sales-invoice/sales-invoice.service.js +0 -77
  449. package/esm2015/lib/sku.js +0 -4
  450. package/esm2015/lib/stripe-file/file.js +0 -2
  451. package/esm2015/lib/stripe-file/index.js +0 -3
  452. package/esm2015/lib/stripe-file/purpose.js +0 -13
  453. package/esm2015/lib/stripe-file/stripe-file.service.js +0 -35
  454. package/esm2015/lib/subscription/can-create-subscriptions-item.js +0 -2
  455. package/esm2015/lib/subscription/index.js +0 -2
  456. package/esm2015/lib/tax-rate/index.js +0 -2
  457. package/esm2015/lib/tax-rate/tax-rate.js +0 -13
  458. package/esm2015/lib/tax-rate/tax-rate.service.js +0 -86
  459. package/esm2015/public_api.js +0 -2
  460. package/esm2015/vendasta-billing.js +0 -5
  461. package/fesm2015/vendasta-billing.js.map +0 -1
  462. package/lib/applied_bundle/applied_bundle.d.ts +0 -15
  463. package/lib/applied_bundle/index.d.ts +0 -1
  464. package/lib/applied_discount/applied_discount.d.ts +0 -26
  465. package/lib/applied_discount/index.d.ts +0 -1
  466. package/lib/bank_account/bank-account.service.d.ts +0 -11
  467. package/lib/bank_account/bank_account.d.ts +0 -12
  468. package/lib/bank_account/index.d.ts +0 -3
  469. package/lib/bank_reconciliation/bank-reconciliation.service.d.ts +0 -10
  470. package/lib/bank_reconciliation/index.d.ts +0 -2
  471. package/lib/bank_reconciliation/payout.d.ts +0 -37
  472. package/lib/billable-item/billable-item.d.ts +0 -40
  473. package/lib/billable-item/billable-item.service.d.ts +0 -10
  474. package/lib/billable-item/index.d.ts +0 -2
  475. package/lib/billing-host.service.d.ts +0 -11
  476. package/lib/billing.service.d.ts +0 -88
  477. package/lib/bundle/bundle.d.ts +0 -26
  478. package/lib/bundle/bundle.service.d.ts +0 -14
  479. package/lib/bundle/index.d.ts +0 -2
  480. package/lib/contract/contract.d.ts +0 -20
  481. package/lib/contract/contract.service.d.ts +0 -23
  482. package/lib/contract/dimension.d.ts +0 -11
  483. package/lib/contract/index.d.ts +0 -5
  484. package/lib/contract/mutations.d.ts +0 -11
  485. package/lib/contract-document/contract-document.d.ts +0 -8
  486. package/lib/contract-document/contract-document.service.d.ts +0 -17
  487. package/lib/contract-document/index.d.ts +0 -3
  488. package/lib/contract-document/list-contract-document.d.ts +0 -3
  489. package/lib/core/index.d.ts +0 -2
  490. package/lib/core/paged-response.d.ts +0 -6
  491. package/lib/core/sort-direction.d.ts +0 -4
  492. package/lib/credit/credit.d.ts +0 -7
  493. package/lib/credit/credit.service.d.ts +0 -9
  494. package/lib/credit/index.d.ts +0 -2
  495. package/lib/customer_summary/customer-summary.d.ts +0 -9
  496. package/lib/discount/discount.d.ts +0 -17
  497. package/lib/discount/discount.service.d.ts +0 -15
  498. package/lib/discount/discount_type.d.ts +0 -9
  499. package/lib/discount/index.d.ts +0 -4
  500. package/lib/discount/list-discount.d.ts +0 -5
  501. package/lib/http-shared/error-handlers.d.ts +0 -4
  502. package/lib/invoice/index.d.ts +0 -3
  503. package/lib/invoice/invoice.d.ts +0 -86
  504. package/lib/invoice/invoice.service.d.ts +0 -40
  505. package/lib/invoice/list-invoice.d.ts +0 -15
  506. package/lib/invoice-template/index.d.ts +0 -2
  507. package/lib/invoice-template/invoice-template.d.ts +0 -35
  508. package/lib/invoice-template/invoice-template.service.d.ts +0 -14
  509. package/lib/merchant/balance.d.ts +0 -5
  510. package/lib/merchant/index.d.ts +0 -7
  511. package/lib/merchant/merchant.d.ts +0 -19
  512. package/lib/merchant/merchant.interface.d.ts +0 -3
  513. package/lib/merchant/merchant.service.d.ts +0 -59
  514. package/lib/merchant/payout-summary.d.ts +0 -19
  515. package/lib/merchant/retail-configuration.d.ts +0 -24
  516. package/lib/merchant-report/index.d.ts +0 -4
  517. package/lib/merchant-report/merchant-report-status.d.ts +0 -1
  518. package/lib/merchant-report/merchant-report.d.ts +0 -8
  519. package/lib/merchant-report/merchant-report.interfaces.d.ts +0 -5
  520. package/lib/merchant-report/merchant-report.service.d.ts +0 -12
  521. package/lib/payment/dispute.d.ts +0 -61
  522. package/lib/payment/index.d.ts +0 -9
  523. package/lib/payment/payment-allocation-type.d.ts +0 -7
  524. package/lib/payment/payment-source.d.ts +0 -7
  525. package/lib/payment/payment-status.d.ts +0 -7
  526. package/lib/payment/payment.d.ts +0 -42
  527. package/lib/payment/payment.service.d.ts +0 -24
  528. package/lib/payment/retail-payment.d.ts +0 -33
  529. package/lib/payment/retail-status.d.ts +0 -24
  530. package/lib/payment-card/index.d.ts +0 -2
  531. package/lib/payment-card/payment-card.d.ts +0 -41
  532. package/lib/payment-card/payment-card.service.d.ts +0 -13
  533. package/lib/payment-method/index.d.ts +0 -1
  534. package/lib/payment-method/payment-method.service.d.ts +0 -10
  535. package/lib/pricing/billing-strategy.d.ts +0 -11
  536. package/lib/pricing/commitment.d.ts +0 -6
  537. package/lib/pricing/currency.d.ts +0 -29
  538. package/lib/pricing/frequency.d.ts +0 -10
  539. package/lib/pricing/index.d.ts +0 -11
  540. package/lib/pricing/list-pricing-plan-product-filter.d.ts +0 -4
  541. package/lib/pricing/pricing-plan-product.d.ts +0 -34
  542. package/lib/pricing/pricing-plan.d.ts +0 -13
  543. package/lib/pricing/pricing-plan.service.d.ts +0 -17
  544. package/lib/pricing/product-pricing-rules.d.ts +0 -7
  545. package/lib/pricing/product-pricing-type.d.ts +0 -9
  546. package/lib/pricing/product-pricing.d.ts +0 -37
  547. package/lib/pricing/wholesale-pricing.service.d.ts +0 -19
  548. package/lib/product/index.d.ts +0 -2
  549. package/lib/product/list-products.d.ts +0 -16
  550. package/lib/product/product.d.ts +0 -9
  551. package/lib/product-summary/index.d.ts +0 -2
  552. package/lib/product-summary/product-summary.service.d.ts +0 -10
  553. package/lib/product-summary/subscription-retention.d.ts +0 -20
  554. package/lib/purchase/index.d.ts +0 -4
  555. package/lib/purchase/list-purchases.d.ts +0 -27
  556. package/lib/purchase/purchase.d.ts +0 -56
  557. package/lib/purchase/purchase.service.d.ts +0 -10
  558. package/lib/purchase/purchase_status.d.ts +0 -10
  559. package/lib/recurring_invoice/collection-method.d.ts +0 -4
  560. package/lib/recurring_invoice/index.d.ts +0 -5
  561. package/lib/recurring_invoice/interval.d.ts +0 -10
  562. package/lib/recurring_invoice/payment-processor.d.ts +0 -8
  563. package/lib/recurring_invoice/recurring-invoice.d.ts +0 -62
  564. package/lib/recurring_invoice/recurring-invoice.service.d.ts +0 -14
  565. package/lib/recurring_invoice/status.d.ts +0 -9
  566. package/lib/refund/index.d.ts +0 -2
  567. package/lib/refund/refund.d.ts +0 -36
  568. package/lib/refund/refund.service.d.ts +0 -11
  569. package/lib/retail-customer-configuration/index.d.ts +0 -2
  570. package/lib/retail-customer-configuration/retail-customer-configuration.d.ts +0 -20
  571. package/lib/retail-customer-configuration/retail-customer-configuration.service.d.ts +0 -9
  572. package/lib/revenue/index.d.ts +0 -2
  573. package/lib/revenue/revenue.interfaces.d.ts +0 -3
  574. package/lib/revenue/revenue.service.d.ts +0 -11
  575. package/lib/sales-credit-note/index.d.ts +0 -2
  576. package/lib/sales-credit-note/sales-credit-note.d.ts +0 -30
  577. package/lib/sales-credit-note/sales-credit-note.service.d.ts +0 -16
  578. package/lib/sales-invoice/index.d.ts +0 -2
  579. package/lib/sales-invoice/sales-invoice.d.ts +0 -42
  580. package/lib/sales-invoice/sales-invoice.service.d.ts +0 -16
  581. package/lib/sku.d.ts +0 -3
  582. package/lib/stripe-file/file.d.ts +0 -6
  583. package/lib/stripe-file/index.d.ts +0 -3
  584. package/lib/stripe-file/purpose.d.ts +0 -11
  585. package/lib/stripe-file/stripe-file.service.d.ts +0 -12
  586. package/lib/subscription/can-create-subscriptions-item.d.ts +0 -6
  587. package/lib/subscription/index.d.ts +0 -1
  588. package/lib/tax-rate/index.d.ts +0 -2
  589. package/lib/tax-rate/tax-rate.d.ts +0 -20
  590. package/lib/tax-rate/tax-rate.service.d.ts +0 -15
  591. package/vendasta-billing.metadata.json +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../billing_sdk/src/lib/applied_bundle/applied_bundle.ts","../../../billing_sdk/src/lib/_internal/enums/frequency.enum.ts","../../../billing_sdk/src/lib/_internal/enums/applied-discount.enum.ts","../../../billing_sdk/src/lib/_internal/enums/currency.enum.ts","../../../billing_sdk/src/lib/_internal/enums/contract.enum.ts","../../../billing_sdk/src/lib/_internal/enums/product-summary.enum.ts","../../../billing_sdk/src/lib/_internal/enums/invoice.enum.ts","../../../billing_sdk/src/lib/_internal/enums/payout.enum.ts","../../../billing_sdk/src/lib/_internal/enums/sort-direction.enum.ts","../../../billing_sdk/src/lib/_internal/enums/merchant.enum.ts","../../../billing_sdk/src/lib/_internal/enums/month.enum.ts","../../../billing_sdk/src/lib/_internal/enums/merchant-report.enum.ts","../../../billing_sdk/src/lib/_internal/enums/card.enum.ts","../../../billing_sdk/src/lib/_internal/enums/payment.enum.ts","../../../billing_sdk/src/lib/_internal/enums/payment-card.enum.ts","../../../billing_sdk/src/lib/_internal/enums/pricing-plan.enum.ts","../../../billing_sdk/src/lib/_internal/enums/product.enum.ts","../../../billing_sdk/src/lib/_internal/enums/purchase.enum.ts","../../../billing_sdk/src/lib/_internal/enums/refund.enum.ts","../../../billing_sdk/src/lib/_internal/enums/sales-credit-note.enum.ts","../../../billing_sdk/src/lib/_internal/enums/sales-invoice.enum.ts","../../../billing_sdk/src/lib/_internal/enums/subscribe-validation.enum.ts","../../../billing_sdk/src/lib/_internal/enums/subscription.enum.ts","../../../billing_sdk/src/lib/_internal/enums/payment-processor.enum.ts","../../../billing_sdk/src/lib/_internal/enums/recurring-invoice.enum.ts","../../../billing_sdk/src/lib/_internal/objects/common.ts","../../../billing_sdk/src/lib/_internal/objects/billable-item.ts","../../../billing_sdk/src/lib/_internal/objects/applied-discount.ts","../../../billing_sdk/src/lib/_internal/objects/bundle.ts","../../../billing_sdk/src/lib/_internal/objects/commitment.ts","../../../billing_sdk/src/lib/_internal/objects/contract.ts","../../../billing_sdk/src/lib/_internal/objects/customer-summary.ts","../../../billing_sdk/src/lib/_internal/objects/external-account.ts","../../../billing_sdk/src/lib/_internal/objects/product-summary.ts","../../../billing_sdk/src/lib/_internal/objects/discount.ts","../../../billing_sdk/src/lib/_internal/objects/applied-tax-rate.ts","../../../billing_sdk/src/lib/_internal/objects/field-mask.ts","../../../billing_sdk/src/lib/_internal/objects/tax-rate.ts","../../../billing_sdk/src/lib/_internal/objects/applied-bundle.ts","../../../billing_sdk/src/lib/_internal/objects/invoice.ts","../../../billing_sdk/src/lib/_internal/objects/balance.ts","../../../billing_sdk/src/lib/_internal/objects/date-range.ts","../../../billing_sdk/src/lib/_internal/objects/payout.ts","../../../billing_sdk/src/lib/_internal/objects/merchant.ts","../../../billing_sdk/src/lib/_internal/objects/merchant-report.ts","../../../billing_sdk/src/lib/_internal/objects/metered-component.ts","../../../billing_sdk/src/lib/_internal/objects/payment.ts","../../../billing_sdk/src/lib/_internal/objects/payment-card.ts","../../../billing_sdk/src/lib/_internal/objects/pricing-plan.ts","../../../billing_sdk/src/lib/_internal/objects/pricing-plan-product.ts","../../../billing_sdk/src/lib/_internal/objects/product.ts","../../../billing_sdk/src/lib/_internal/objects/product-pricing.ts","../../../billing_sdk/src/lib/_internal/objects/purchase.ts","../../../billing_sdk/src/lib/_internal/objects/refund.ts","../../../billing_sdk/src/lib/_internal/objects/sales-credit-note.ts","../../../billing_sdk/src/lib/_internal/objects/sales-invoice.ts","../../../billing_sdk/src/lib/_internal/objects/subscribe-validation.ts","../../../billing_sdk/src/lib/_internal/objects/subscription.ts","../../../billing_sdk/src/lib/_internal/objects/contract-document.ts","../../../billing_sdk/src/lib/_internal/objects/retail-customer-configuration.ts","../../../billing_sdk/src/lib/_internal/objects/credit.ts","../../../billing_sdk/src/lib/_internal/objects/invoice-template.ts","../../../billing_sdk/src/lib/_internal/objects/recurring-invoice.ts","../../../billing_sdk/src/lib/_internal/objects/api.ts","../../../billing_sdk/src/lib/_generated/host.service.ts","../../../billing_sdk/src/lib/_internal/bank-reconciliation.api.service.ts","../../../billing_sdk/src/lib/_internal/billing.api.service.ts","../../../billing_sdk/src/lib/_internal/bundle.api.service.ts","../../../billing_sdk/src/lib/_internal/contract-document.api.service.ts","../../../billing_sdk/src/lib/_internal/contract.api.service.ts","../../../billing_sdk/src/lib/_internal/credit.api.service.ts","../../../billing_sdk/src/lib/_internal/discount.api.service.ts","../../../billing_sdk/src/lib/_internal/invoice.api.service.ts","../../../billing_sdk/src/lib/_internal/invoice-template.api.service.ts","../../../billing_sdk/src/lib/_internal/merchant.api.service.ts","../../../billing_sdk/src/lib/_internal/payment-method.api.service.ts","../../../billing_sdk/src/lib/_internal/payment.api.service.ts","../../../billing_sdk/src/lib/_internal/pricing.api.service.ts","../../../billing_sdk/src/lib/_internal/product.api.service.ts","../../../billing_sdk/src/lib/_internal/product-summary.api.service.ts","../../../billing_sdk/src/lib/_internal/purchase.api.service.ts","../../../billing_sdk/src/lib/_internal/recurring-invoice.api.service.ts","../../../billing_sdk/src/lib/_internal/refund.api.service.ts","../../../billing_sdk/src/lib/_internal/retail-customer-configuration.api.service.ts","../../../billing_sdk/src/lib/_internal/sales-credit-note.api.service.ts","../../../billing_sdk/src/lib/_internal/sales-invoice.api.service.ts","../../../billing_sdk/src/lib/_internal/tax.api.service.ts","../../../billing_sdk/src/lib/_internal/vendor.api.service.ts","../../../billing_sdk/src/lib/applied_discount/applied_discount.ts","../../../billing_sdk/src/lib/bank_account/bank-account.service.ts","../../../billing_sdk/src/lib/bank_account/bank_account.ts","../../../billing_sdk/src/lib/pricing/billing-strategy.ts","../../../billing_sdk/src/lib/pricing/currency.ts","../../../billing_sdk/src/lib/pricing/frequency.ts","../../../billing_sdk/src/lib/pricing/product-pricing-rules.ts","../../../billing_sdk/src/lib/pricing/product-pricing-type.ts","../../../billing_sdk/src/lib/pricing/commitment.ts","../../../billing_sdk/src/lib/pricing/product-pricing.ts","../../../billing_sdk/src/lib/pricing/pricing-plan-product.ts","../../../billing_sdk/src/lib/pricing/pricing-plan.ts","../../../billing_sdk/src/lib/pricing/wholesale-pricing.service.ts","../../../node_modules/tslib/tslib.es6.js","../../../billing_sdk/src/lib/pricing/pricing-plan.service.ts","../../../billing_sdk/src/lib/bank_reconciliation/payout.ts","../../../billing_sdk/src/lib/core/sort-direction.ts","../../../billing_sdk/src/lib/core/paged-response.ts","../../../billing_sdk/src/lib/bank_reconciliation/bank-reconciliation.service.ts","../../../billing_sdk/src/lib/billable-item/billable-item.ts","../../../billing_sdk/src/lib/billable-item/billable-item.service.ts","../../../billing_sdk/src/lib/billing-host.service.ts","../../../billing_sdk/src/lib/http-shared/error-handlers.ts","../../../billing_sdk/src/lib/revenue/revenue.service.ts","../../../billing_sdk/src/lib/purchase/purchase.ts","../../../billing_sdk/src/lib/merchant-report/merchant-report.service.ts","../../../billing_sdk/src/lib/purchase/purchase_status.ts","../../../billing_sdk/src/lib/contract/dimension.ts","../../../billing_sdk/src/lib/contract/contract.ts","../../../billing_sdk/src/lib/contract/contract.service.ts","../../../billing_sdk/src/lib/product/list-products.ts","../../../billing_sdk/src/lib/product/product.ts","../../../billing_sdk/src/lib/billing.service.ts","../../../billing_sdk/src/lib/customer_summary/customer-summary.ts","../../../billing_sdk/src/lib/discount/discount_type.ts","../../../billing_sdk/src/lib/bundle/bundle.ts","../../../billing_sdk/src/lib/bundle/bundle.service.ts","../../../billing_sdk/src/lib/contract-document/contract-document.service.ts","../../../billing_sdk/src/lib/contract-document/contract-document.ts","../../../billing_sdk/src/lib/credit/credit.service.ts","../../../billing_sdk/src/lib/credit/credit.ts","../../../billing_sdk/src/lib/discount/discount.service.ts","../../../billing_sdk/src/lib/discount/discount.ts","../../../billing_sdk/src/lib/retail-customer-configuration/retail-customer-configuration.ts","../../../billing_sdk/src/lib/invoice/invoice.ts","../../../billing_sdk/src/lib/retail-customer-configuration/retail-customer-configuration.service.ts","../../../billing_sdk/src/lib/invoice/invoice.service.ts","../../../billing_sdk/src/lib/invoice-template/invoice-template.ts","../../../billing_sdk/src/lib/merchant/payout-summary.ts","../../../billing_sdk/src/lib/merchant/retail-configuration.ts","../../../billing_sdk/src/lib/merchant/merchant.service.ts","../../../billing_sdk/src/lib/invoice-template/invoice-template.service.ts","../../../billing_sdk/src/lib/merchant/merchant.ts","../../../billing_sdk/src/lib/payment/dispute.ts","../../../billing_sdk/src/lib/payment/payment-source.ts","../../../billing_sdk/src/lib/payment/payment-status.ts","../../../billing_sdk/src/lib/payment/payment-allocation-type.ts","../../../billing_sdk/src/lib/payment/payment.ts","../../../billing_sdk/src/lib/payment-card/payment-card.ts","../../../billing_sdk/src/lib/payment/retail-payment.ts","../../../billing_sdk/src/lib/payment/retail-status.ts","../../../billing_sdk/src/lib/payment-card/payment-card.service.ts","../../../billing_sdk/src/lib/payment/payment.service.ts","../../../billing_sdk/src/lib/payment-method/payment-method.service.ts","../../../billing_sdk/src/lib/product-summary/subscription-retention.ts","../../../billing_sdk/src/lib/product-summary/product-summary.service.ts","../../../billing_sdk/src/lib/purchase/purchase.service.ts","../../../billing_sdk/src/lib/purchase/list-purchases.ts","../../../billing_sdk/src/lib/refund/refund.ts","../../../billing_sdk/src/lib/refund/refund.service.ts","../../../billing_sdk/src/lib/recurring_invoice/collection-method.ts","../../../billing_sdk/src/lib/recurring_invoice/interval.ts","../../../billing_sdk/src/lib/recurring_invoice/payment-processor.ts","../../../billing_sdk/src/lib/recurring_invoice/status.ts","../../../billing_sdk/src/lib/recurring_invoice/recurring-invoice.ts","../../../billing_sdk/src/lib/recurring_invoice/recurring-invoice.service.ts","../../../billing_sdk/src/lib/sales-credit-note/sales-credit-note.ts","../../../billing_sdk/src/lib/sales-invoice/sales-invoice.ts","../../../billing_sdk/src/lib/sales-credit-note/sales-credit-note.service.ts","../../../billing_sdk/src/lib/sales-invoice/sales-invoice.service.ts","../../../billing_sdk/src/lib/stripe-file/purpose.ts","../../../billing_sdk/src/lib/stripe-file/stripe-file.service.ts","../../../billing_sdk/src/lib/tax-rate/tax-rate.ts","../../../billing_sdk/src/lib/tax-rate/tax-rate.service.ts","../../../billing_sdk/src/lib/sku.ts","../../../billing_sdk/src/lib/contract/mutations.ts"],"names":["convertApiAppliedBundle","ab","bundleId","bundleInstanceId","name","hideBundleItems","Frequency","DiscountType","Currency","ContractSubscriptionStatus","ProductSummaryBillingStrategy","ProductSummaryDiscountDiscountType","ProductSummaryProductType","PricingRuleType","ListInvoicesRequestFiltersDateFilterDateField","InvoiceStatus","PayoutStatus","PayoutType","SortDirection","SearchMerchantsRequestSortBy","Month","MerchantReportStatus","CardType","DisputeStatus","PaymentAllocationType","PaymentSource","PaymentStatus","RetailPaymentReferenceType","PaymentCardCARD_TYPE","PaymentCardFUNDING_TYPE","BillingStrategy","ProductPricingType","ProductType","CreditType","PurchaseStatus","ListPurchaseRequestState","ReferenceType","RefundReason","RefundStatus","SalesCreditNoteStatus","PaymentStatuses","SalesInvoiceStatus","SalesInvoiceType","SubscribeValidationStatus","RenewalState","PaymentProcessor","CollectionMethod","Interval","RecurringInvoiceStatus","PagedRequestOptions","kwargs","Object","assign","this","fromProto","proto","m","pageSize","parseInt","prototype","toApiJson","toReturn","cursor","PagedResponseMetadata","nextCursor","hasMore","enumStringToValue","enumRef","value","BillItemRequest","billingStart","Date","proratedTo","merchantId","sku","customerId","orderId","BillMultipleItemsRequest","items","map","Item","BillMultipleItemsResponse","id","BillableItem","expiry","created","updated","frequency","e.Frequency","nextRenewal","customerAddress","BillableItemCustomerAddress","customUnitPrice","retailFrequency","nextRetailRenewal","retailUnitPrice","customerName","productName","CanBillItemRequest","address","city","state","zip","country","DeleteBillableItemRequest","ExpireBillableItemRequest","ListBillableItemsRequestFilters","skus","GetBillableItemRequest","GetBillableItemResponse","item","GetMultiSubscriptionsRequest","subscriptionKeys","GetMultiSubscriptionsRequestKey","GetMultiSubscriptionsResponse","subscriptions","ListBillableItemsRequest","filters","pagingOptions","searchTerm","ListBillableItemsResponse","pagingMetadata","AppliedDiscount","type","e.DiscountType","totalAmount","description","Bundle","BundleItem","hideBundleDetails","discountType","discountAmount","quantity","price","BundleItemPrice","productId","defaultSku","BundlePricing","prices","BundlePricingPriceAndFrequency","currency","ListBundlesRequestFilters","GetMultiBundleResponseBundlesEntry","key","GetMultiBundleRequest","bundleIds","GetMultiBundleResponse","bundles","keys","reduce","obj","k","ListBundlesRequest","ListBundlesResponse","amount","setupFee","effectivePrice","initialPrice","UpsertBundleRequest","Commitment","initial","recurring","Contract","netD","e.Currency","signed","activated","modified","verified","creditLimit","end","subscriptionUpdateStatus","e.ContractSubscriptionStatus","subscriptionId","status","dimension","pricingPlanId","CreateContractRequest","GetMultiContractsResponseContractsEntry","currencyCode","CreateContractResponse","contract","GetContractRequest","GetContractResponse","GetMultiContractsRequest","merchantIds","GetMultiContractsResponse","contracts","ListContractsRequest","ListContractsResponse","UpdateContractRequestMutation","ResetContractPricingRequest","UpdateContractRequest","mutations","UpdateContractResponse","UpdateContractSubscriptionRequest","CustomerSummary","purchaseItemQuantity","purchaseItemTotal","GetMultiCustomerSummariesRequest","periodStart","periodEnd","customerIds","GetMultiCustomerSummariesResponse","customerSummaries","BankAccount","accountHolderName","bankName","routingNumber","last4","defaultForCurrency","CreateStripeExternalAccountRequest","stripeToken","DeleteBankAccountRequest","bankAccountId","ListBankAccountsRequest","ListBankAccountsResponse","bankAccount","SetDefaultBankAccountRequest","ProductSummaryDiscount","e.ProductSummaryDiscountDiscountType","resetEachPeriod","ListSubscriptionRetentionRequestFilters","start","GetProductSummariesTotalRequest","startDate","endDate","GetProductSummariesTotalResponse","ListProductSummariesRequest","ListProductSummariesResponse","results","ProductSummary","totalResults","ListSubscriptionRetentionByGroupResponse","metricsByGroup","ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup","ListSubscriptionRetentionBySKUResponse","subscriptionMetrics","RetentionMetrics","ListSubscriptionRetentionRequest","Pricing","e.PricingRuleType","rules","PricingRule","totalQuantity","totalDiscount","pricing","discounts","billingStrategy","e.ProductSummaryBillingStrategy","productType","e.ProductSummaryProductType","volumeCommitment","proratedPercent","startingCount","activations","deactivations","churn","retention","min","max","units","unitPrice","groupId","CreateDiscountRequest","Discount","discountId","ExpireDiscountRequest","ListDiscountsRequestFilters","ListDiscountsRequest","ListDiscountsResponse","UpdateDiscountRequest","AppliedTaxRate","taxRateId","percentage","FieldMask","paths","ArchiveTaxRequest","CalculateTaxRequest","CalculateTaxResponse","taxableAmount","taxRates","TaxRate","CreateTaxRequest","countryCode","stateCode","accountingSystemId","ListTaxRequestFilters","includeArchived","GetMultiTaxRequest","ids","GetMultiTaxResponse","ListTaxRequest","ListTaxResponse","archived","UpdateTaxRequest","AppliedBundle","bundleItems","AppliedBundleItem","AddBundleRequest","invoiceId","AddBundleResponse","invoice","Invoice","AddLineItemRequest","AddLineItemResponse","ChargeInvoiceRequest","paymentMethodId","CreateInvoiceRequest","CreateInvoiceResponse","InvoiceCustomerAddress","address2","ListInvoicesRequestFiltersDateFilter","dateField","e.ListInvoicesRequestFiltersDateFilterDateField","dateLte","dateGte","DeleteInvoiceRequest","DeleteLineItemRequest","DeleteLineItemResponse","DuplicateInvoiceRequest","DuplicateInvoiceResponse","ListInvoicesRequestFilters","statuses","v","e.InvoiceStatus","dateFilter","pastDue","number","GetInvoiceRequest","GetInvoiceResponse","subtotal","total","amountPaid","issued","due","InvoiceItem","paid","amountTax","appliedTaxes","defaultTaxRates","appliedBundles","amountDiscount","voided","origin","collectionMethod","contactId","memo","defaultPaymentMethod","externalCustomerIdentifier","ListInvoicesRequest","ListInvoicesResponse","invoices","PayInvoiceRequest","RemoveBundleRequest","RemoveBundleResponse","SendInvoiceRequest","emailAddresses","languageCode","UpdateBundleRequest","UpdateBundleResponse","UpdateDefaultTaxRatesRequest","taxRateIds","UpdateDefaultTaxRatesResponse","UpdateInvoiceRequest","fieldMask","UpdateInvoiceResponse","UpdateLineItemRequest","UpdateLineItemResponse","VoidInvoiceRequest","Balance","futurePayouts","inTransit","DateRange","ListPayoutsRequestFilters","arrivalDateRange","ListPayoutsRequest","ListPayoutsResponse","payouts","Payout","arrivalDate","e.PayoutStatus","e.PayoutType","lastFourDigits","bankId","ReconcilePayoutRequest","bankReconciliationId","payoutId","allowRetries","ReconcilePayoutResponse","pipelineId","RetailPayout","failureCode","failureMessage","ChargeSalesInvoiceRequest","ConnectStripeAccountRequest","failureUrl","successUrl","ConnectStripeAccountResponse","stripeUrl","error","CreateMerchantRequest","includeInFinancialRecords","CreateMerchantRequestIncludeInFinancialRecords","zipCode","emailAddress","phoneNumber","contactName","companyName","additionalEmailAddresses","hasAlternativePaymentMethod","DefaultCustomerConfiguration","invoiceDay","generateMethod","GetMerchantRequest","GetMerchantResponse","merchant","Merchant","GetMultiRetailConfigurationsRequest","retailGroupIds","GetMultiRetailConfigurationsResponse","retailConfigurations","RetailConfiguration","GetOutstandingBalanceRequest","GetOutstandingBalanceResponse","outstandingBalance","GetPayoutSummaryRequest","GetPayoutSummaryResponse","balances","nextInTransitPayoutExpectedDate","payoutDelayDays","payoutInterval","GetRetailBalanceRequest","GetRetailBalanceResponse","GetRetailPayoutRequest","GetRetailPayoutResponse","payout","UpdateMerchantRequestIncludeInFinancialRecords","ListRetailPayoutsRequest","ListRetailPayoutsResponse","autoPostInvoices","autoChargeInvoices","stripeAccountId","defaultCustomerConfiguration","currencyConversionRate","retailGroupId","GetMultiRetailConfigurationsResponseRetailConfigurationsEntry","SearchMerchantsRequest","sortBy","e.SearchMerchantsRequestSortBy","sortDirection","e.SortDirection","SearchMerchantsResponse","merchants","SetAutoChargeInvoicesRequest","SetAutoPostInvoicesRequest","shouldAutoPostInvoices","SetDefaultPaymentCardRequest","cardId","SetHasAlternativePaymentMethodRequest","SetIncludeInFinancialRecordsRequest","UpdateMerchantRequest","UpsertDefaultRetailCustomerConfigurationRequest","UpsertRetailConfigurationRequest","ListMerchantBillingReportsRequest","ListMerchantBillingReportsResponse","reports","MerchantReport","year","month","e.Month","e.MerchantReportStatus","CreateMeteredComponentRequest","component","MeteredComponent","componentId","TickComponentUsageRequest","idempotencyKey","RetailPaymentCardDetails","cardType","e.CardType","CloseRetailDisputeRequest","disputeId","ConfigureRetailPaymentProviderRequest","ConfigureRetailPaymentProviderResponse","ConfirmRetailPaymentRequest","Dispute","e.DisputeStatus","evidence","DisputeEvidence","evidenceDetails","DisputeEvidenceDetails","fee","paymentId","isChargeRefundable","reason","feeCurrencyCode","customerCommunication","File","customerSignature","shippingDocumentation","receipt","uncategorizedFile","billingAddress","customerEmailAddress","productDescription","SubmitEvidenceRequestDisputeEvidence","customerSignatureFileId","customerCommunicationFileId","receiptFileId","shippingDocumentationFileId","uncategorizedFileId","dueBy","submissionCount","hasEvidence","filename","url","GetRetailDisputeRequest","GetRetailDisputeResponse","dispute","GetRetailPaymentProviderRequest","GetRetailPaymentProviderResponse","statementDescriptor","stripeConnectId","GetRetailPaymentRequest","GetRetailPaymentResponse","payment","RetailPayment","ListPaymentRequestListPaymentFilters","allocationIds","ListPaymentRequest","ListPaymentResponse","payments","Payment","ListRetailDisputesRequest","ListRetailDisputesResponse","disputes","ListRetailPaymentsRequestListRetailPaymentsFilters","createdDateGte","createdDateLte","ListRetailPaymentsRequest","ListRetailPaymentsResponse","PrepareRetailPaymentRequestOrder","paymentSource","e.PaymentSource","allocations","PaymentPaymentAllocation","e.PaymentStatus","externalReferenceId","e.PaymentAllocationType","referenceId","PrepareRetailPaymentRequest","order","PrepareRetailPaymentResponse","stripeClientSecret","intentId","referenceType","e.RetailPaymentReferenceType","applicationFee","cardDetails","disputed","RetailPaymentsEnabledRequest","RetailPaymentsEnabledResponse","enabled","RetailStatusRequest","RetailStatusResponse","requirements","RetailStatusResponseVerificationRequirements","supportedRegion","canAcceptPayment","disabledReason","SubmitEvidenceRequest","submit","UpdateRetailPaymentProviderRequest","RetailStatusResponseVerificationError","requirement","code","CreatePaymentCardRequest","DeletePaymentCardRequest","ListPaymentCardsRequest","ListPaymentCardsResponse","paymentCard","PaymentCard","e.PaymentCardCARD_TYPE","fundingType","e.PaymentCardFUNDING_TYPE","cardholderName","expiryMonth","expiryYear","default","SetDefaultPaymentMethodRequest","UpdatePaymentCardRequest","ComponentPricing","CreatePricingPlanRequest","defaultBillingStrategy","e.BillingStrategy","CreatePricingPlanResponse","GetMultiPricingPlanRequest","pricingPlanIds","GetMultiPricingPlanResponse","plans","PricingPlan","PricingPlanProductPricing","e.ProductPricingType","ProductPricingRule","minUnits","maxUnits","componentPricing","UpdatePricingPlanRequest","UpdatePricingPlanResponse","CreatePricingPlanProductRequest","commitment","strategy","CreatePricingPlanProductResponse","DeletePricingPlanProductRequest","GetMultiPricingPlanProductRequest","GetMultiPricingPlanProductResponse","pricingPlanProducts","PricingPlanProduct","GetPricingPlanProductRequest","GetPricingPlanProductResponse","pricingPlanProduct","pricingPlanDefaultStrategy","ListPricingPlanProductsRequestListPricingPlanProductsFilters","ListPricingPlanProductsRequest","ListPricingPlanProductsResponse","products","PricingPlanProductPricingEntry","CreatePricingPlanProductRequestPricingEntry","UpdatePricingPlanProductRequestPricingEntry","pricingType","UpdatePricingPlanProductRequest","UpdatePricingPlanProductResponse","UpsertWholesalePricingRequest","termCommitment","CreateProductRequest","e.ProductType","editionId","reportingCode","DeleteProductRequest","GetMultiProductRequest","GetMultiProductResponse","Product","ListProductsRequestListProductsFilters","hasDiscount","hasPricingOverride","ListProductsRequest","ListProductsResponse","iconUrl","GetMultiProductResponseProductsEntry","UpdateProductRequest","ProductPrices","ProductPricing","pricingRules","isStartingPrice","resolvedFrom","AppliedCredit","appliedAmount","e.CreditType","ListPurchaseRequestListPurchaseBillingStrategyFilter","ListPurchaseRequestListPurchaseFilters","billingStrategyFilter","e.ListPurchaseRequestState","minPrice","e.PurchaseStatus","purchaseId","includeVoided","ListPurchaseItemsRequestListPurchaseItemsFilters","ListPurchaseItemsRequest","ListPurchaseItemsResponse","purchaseItems","PurchaseItem","ListPurchaseRequest","ListPurchaseResponse","purchases","Purchase","timestamp","dunningAttempt","creditAmount","appliedCredits","taxAmount","appliedTaxRates","renewal","isDunning","appliedDiscounts","day","RetryPurchaseRequest","shouldEnterDunning","VoidPurchaseRequest","CreateRefundRequest","e.RefundReason","e.ReferenceType","ListRefundsRequest","paymentIds","ListRefundsResponse","refunds","Refund","e.RefundStatus","chargeId","refundId","email","CreateSalesCreditNoteRequest","creditNoteDate","dueDate","creditNoteReason","ListSalesCreditNoteRequestListSalesCreditNoteFilters","e.SalesCreditNoteStatus","ListSalesCreditNoteRequest","ListSalesCreditNoteResponse","creditNote","SalesCreditNote","outstanding","creditNoteId","creditNoteNumber","invoiceNumber","paymentStatus","GetSalesInvoiceRequest","GetSalesInvoiceResponse","SalesInvoice","ListSalesInvoiceRequestListSalesInvoiceFilters","e.SalesInvoiceStatus","paymentStatuses","e.PaymentStatuses","ListSalesInvoiceRequest","ListSalesInvoiceResponse","PostSalesInvoiceRequest","invoiceDate","e.SalesInvoiceType","SendSalesInvoiceEmailRequest","SendSalesInvoiceReceiptEmailRequest","SubscribeValidation","e.SubscribeValidationStatus","AlignmentSubscription","CanCreateSubscriptionsRequest","CanCreateSubscriptionsRequestSubscriptionItem","CanCreateSubscriptionsResponse","validationResponse","ValidateResponse","ChangeCustomUnitPriceRequest","ChangeFrequencyRequest","ChangeRenewalDateRequest","nextRenewalDate","CreateSubscriptionRequest","renewalState","e.RenewalState","alignWith","retailAmount","retailBundleId","forResale","CreateSubscriptionsRequest","Subscription","CreateSubscriptionsResponse","ReverseSubscriptionRequest","SetRenewalStartRequest","renewalStart","CanCreateSubscriptionsRequestSkusEntry","ContractDocument","DeleteContractDocumentRequest","ListContractDocumentsRequestFilters","ListContractDocumentsRequest","ListContractDocumentsResponse","contractDocuments","GetRetailCustomerConfigurationRequest","GetRetailCustomerConfigurationResponse","configuration","RetailCustomerConfiguration","nextInvoiceDate","autoPost","autoGenerate","useTemplateInvoice","UpsertRetailCustomerConfigurationRequest","AddCreditRequest","CreditBalance","GetBalanceRequest","GetBalanceResponse","creditBalance","AddTemplateBundleRequest","AddTemplateBundleResponse","invoiceTemplate","InvoiceTemplate","AddTemplateLineItemRequest","AddTemplateLineItemResponse","CreateTemplateRequest","CreateTemplateResponse","DeleteInvoiceTemplateRequest","DeleteTemplateLineItemRequest","DeleteTemplateLineItemResponse","GetInvoiceTemplateRequest","GetInvoiceTemplateResponse","InvoiceTemplateItem","UpsertInvoiceTemplateRequestInvoiceTemplateItemRequest","UpdateTemplateBundleRequest","UpdateTemplateBundleResponse","UpdateTemplateDefaultTaxRatesRequest","UpdateTemplateDefaultTaxRatesResponse","UpdateTemplateLineItemRequest","UpdateTemplateLineItemResponse","UpsertInvoiceTemplateRequest","UpsertInvoiceTemplateResponse","DeleteRecurringInvoiceRequest","GetRecurringInvoiceRequest","ListRecurringInvoicesRequest","ListRecurringInvoicesResponse","recurringInvoices","RecurringInvoice","e.RecurringInvoiceStatus","issuedAt","nextIssue","intervalCount","interval","e.Interval","e.CollectionMethod","paymentProcessor","e.PaymentProcessor","RecurringInvoiceItem","recipientUserId","paymentProcessorId","RecurringInvoiceBundle","lineItems","RecurringInvoiceLineItem","hideLineItems","lineItem","bundle","UpdateRecurringInvoiceRequest","recurringInvoice","DeleteRetailPricingRequest","GenerateBillableItemsCSVRequest","GenerateBillableItemsCSVResponse","GenerateVendorReportRequest","vendorName","markAsApproved","GenerateVendorReportResponse","bucket","GetMultiBundleRetailPricingRequest","storeId","GetMultiBundleRetailPricingResponse","GetMultiProductPricingRequest","GetMultiProductPricingResponse","productPrices","GetMultiRetailPricingRequest","GetMultiRetailPricingResponse","GetPurchaseCostRequest","GetPurchaseCostResponse","totalCost","subtotalCost","billingFrequency","GetRevenueStatsRequest","GetRevenueStatsResponse","totalRevenue","GetStatisticsRequest","GetStatisticsResponse","totalBillableCustomers","currentBasketSize","changeInBasketSize30Days","GetWholesaleComparisonRequestGetWholesaleComparisonFilters","GetWholesaleComparisonRequest","filter","GetWholesaleComparisonResponse","GetWholesaleComparisonResponseGetWholesaleComparisonResult","productPricing","GetMultiBundleRetailPricingResponsePricesEntry","UpsertRetailPricingRequestPricingEntry","GetMultiRetailPricingResponseProductPricesEntry","GetMultiProductPricingResponseProductPricesEntry","SetWholesaleProductStrategyRequest","SetWholesaleProductVolumeCommitmentRequest","StartRevRecTemplateBackfillRequest","UpsertRetailPricingRequest","HostService","environmentService","host","_host","getEnvironment","Environment","LOCAL","TEST","DEMO","PROD","httpsHost","_httpsHost","hostWithScheme","httpsHostWithScheme","Injectable","args","providedIn","EnvironmentService","BankReconciliationApiService","http","hostService","apiOptions","headers","HttpHeaders","Content-Type","withCredentials","listPayouts","r","request","post","pipe","resp","share","reconcilePayout","HttpClient","BillingApiService","canBillItem","observe","canCreateSubscriptions","createSubscription","createSubscriptions","reverseSubscription","setRenewalStart","billItem","billMultipleItems","getBillableItem","getMultiSubscriptions","listBillableItems","expireBillableItem","deleteBillableItem","listMerchantBillingReports","listProductSummaries","getProductSummariesTotal","generateBillableItemsCsv","createPricingPlan","updatePricingPlan","getMultiPricingPlan","createPricingPlanProduct","updatePricingPlanProduct","deletePricingPlanProduct","listPricingPlanProducts","getPricingPlanProduct","getMultiPricingPlanProduct","getMultiProductPricing","tickComponentUsage","createMeteredComponent","listContracts","getMultiContract","listProducts","getMultiProduct","resetContractPricing","getPurchaseCost","changeFrequency","changeRenewalDate","changeCustomUnitPrice","startRevRecTemplateBackfill","BundleApiService","upsert","getMulti","list","ContractDocumentApiService","delete","ContractApiService","get","updateSubscription","create","update","CreditApiService","add","getBalance","DiscountApiService","expire","InvoiceApiService","addBundle","addLineItem","charge","deleteLineItem","removeBundle","send","pay","updateDefaultTaxRates","updateLineItem","void","duplicate","updateBundle","InvoiceTemplateApiService","updateTemplateDefaultTaxRates","MerchantApiService","getOutstandingBalance","createPaymentCard","setDefaultPaymentCard","listPaymentCards","updatePaymentCard","getStatistics","search","setAutoPostInvoices","setAutoChargeInvoices","setIncludeInFinancialRecords","setHasAlternativePaymentMethod","sendSalesInvoiceEmail","chargeSalesInvoice","sendSalesInvoiceReceiptEmail","createStripeExternalAccount","listBankAccounts","setDefaultBankAccount","deleteBankAccount","getMultiRetailConfigurations","upsertRetailConfiguration","upsertDefaultRetailCustomerConfiguration","getRetailBalance","getPayoutSummary","listRetailPayouts","getRetailPayout","PaymentMethodApiService","deletePaymentCard","setDefaultPaymentMethod","PaymentApiService","getRetail","listRetail","listRetailDisputes","getRetailDispute","closeRetailDispute","prepareRetail","confirmRetail","retailStatus","retailPaymentsEnabled","configureRetailProvider","updateRetailProvider","getRetailProvider","submitEvidence","PricingApiService","getMultiRetail","upsertRetail","deleteRetail","getMultiBundleRetail","getWholesaleComparison","setWholesaleProductStrategy","setWholesaleProductVolumeCommitment","upsertWholesale","ProductApiService","ProductSummaryApiService","listSubscriptionRetentionByGroup","listSubscriptionRetentionBySku","PurchaseApiService","getMultiCustomerSummaries","listPurchaseItems","retry","RecurringInvoiceApiService","createRecurringInvoice","updateRecurringInvoice","getRecurringInvoice","listRecurringInvoices","deleteRecurringInvoice","RefundApiService","RetailCustomerConfigurationApiService","SalesCreditNoteApiService","SalesInvoiceApiService","TaxApiService","calculate","archive","AppliedDiscountType","VendorApiService","generateReport","getRevenueStats","appliedDiscountTypeFromAPI","adt","DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT","FIXED_AMOUNT_PER_UNIT","DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS","FIXED_NUMBER_OF_UNITS","DISCOUNT_TYPE_PERCENT_AMOUNT","PERCENT_AMOUNT","FIXED_AMOUNT","appliedDiscountTypeToApi","DISCOUNT_TYPE_FIXED_AMOUNT","appliedDiscountFromApi","ad","BankAccountService","merchantApi","res","bankAccounts","ba","billingStrategyFromAPI","bsAPI","PricingPlanBillingStrategy","BILLING_STRATEGY_END_OF_PERIOD","EndOfPeriod","BILLING_STRATEGY_START_OF_PERIOD","StartOfPeriod","BILLING_STRATEGY_INSTANTLY","Instantly","BILLING_STRATEGY_END_OF_DAY","EndOfDay","Invalid","billingStrategyToAPI","BILLING_STRATEGY_NONE","currencyFromApi","cApi","CurrencyApi","USD","CAD","EUR","AUD","GBP","NZD","BRL","CHF","CNY","CZK","INR","JPY","KHR","KRW","MXN","NOK","RUB","SEK","SGD","TRY","ZAR","DZD","AWG","FJD","KYD","frequencyFromLegacyApi","fApi","Monthly","Yearly","OneTime","frequencyFromApi","FrequencyApi","MONTHLY","YEARLY","ONE_TIME","frequencyToApi","INVALID","productPricingRulesFromApi","pprApi","productPricingTypeFromApi","pptApi","ProductPricingTypeApi","PRODUCT_PRICING_TYPE_STANDARD","Standard","PRODUCT_PRICING_TYPE_STAIRSTEP","Stairstep","PRODUCT_PRICING_TYPE_TIERED","Tiered","productPricingTypeToApi","ppt","PRODUCT_PRICING_TYPE_INVALID","commitmentFromAPI","comAPI","purchaseCostFromAPI","pcApi","discountTotal","productPricingFromApi","pApi","pricesFromApi","p","pricingPlanProductFromApi","apiProduct","pricingMap","apiCurrency","hasOwnProperty","pricingApi","currencyPricingMapToApi","currencyPricingMap","c","apiPricingMap","pricingPlanProductPricingToApi","productPricingRulesToApi","rule","ApiRule","ApiPricing","Distribution","WholesalePricingService","pricingService","billingApi","setProductBillingStrategy","setProductVolumeCommitment","getMultiWholesalePrices","upsertPricing","pricingPlanFromAPI","defaultStrategy","extendStatics","d","b","setPrototypeOf","__proto__","Array","call","__extends","__","constructor","__values","o","s","Symbol","iterator","i","length","next","done","TypeError","__read","n","e","ar","push","__spread","arguments","concat","RetailPricingPlanName","PricingPlanService","billingService","distribution","env","Retail","retailPlans","Wholesale","wholesalePlans","pricingPlans","isDefault","find","WholesalePricingPlanName","Default","nameForId","idForName","pricingPlanName","pricingPlan","idForSubscriptionName","subscriptionName","setDefaultStrategy","demoRetailPricingPlans","MSRP","prodRetailPricingPlans","PayoutStatusType","demoWholesalePricingPlans","VBPFree","VBPStarter","VBPBasic","VBPProfessional","VBPEnterprise","VBPEnterprisePilot","VBP2Startup","VBP2Essentials","VBP2Growth","VBP2Scale","VBP2Premium","BasicSubscription","ProfessionalSubscription","EnterpriseSubscription","EliteSubscription","PremiumSubscription","prodWholesalePricingPlans","Map","PayoutTypeType","NOT_SET","ɵ1","PAID","ɵ2","PENDING","ɵ3","IN_TRANSIT","ɵ4","CANCELED","ɵ5","FAILED","payoutStatusLabelMap","ApiPayoutStatus","PAYOUT_STATUS_NOT_SET","ɵ0","PAYOUT_STATUS_PAID","PAYOUT_STATUS_PENDING","PAYOUT_STATUS_IN_TRANSIT","PAYOUT_STATUS_CANCELED","PAYOUT_STATUS_FAILED","convertApiPayoutStatus","t","ɵ7","BANK_ACCOUNT","ɵ8","CARD","payoutTypeLabelMap","ApiPayoutType","PAYOUT_TYPE_NOT_SET","ɵ6","PAYOUT_TYPE_BANK_ACCOUNT","PAYOUT_TYPE_CARD","BankReconciliationService","apiService","arrivalDateStart","arrivalDateEnd","PagedResponse","pbPayout","billableItemFromApi","apiItem","apiAddress","zeroDate","valueOf","SubscriptionService","exportCSV","jsonFilters","listSubscriptionsFiltersToHTTPJson","responseType","BillingHostService","environment","billingHosts","microserviceHosts","defineProperty","billingHost","handleCsvError","ErrorEvent","console","message","observableThrowError","handleFileUploadError","RevenueApiService","downloadCsv","queryParams","catchError","AppliedCreditType","MerchantReportApiService","generateCsv","purchaseStatusFromApi","psApi","PurchaseStatusApi","PURCHASE_STATUS_PENDING","Pending","PURCHASE_STATUS_DUE","Due","PURCHASE_STATUS_SUCCESS","Success","PURCHASE_STATUS_DUNNING","Dunning","PURCHASE_STATUS_FAILED","Failed","Unset","purchaseFromApi","purchaseItemFromApi","ac","appliedCreditFromAPI","at","appliedTaxRateFromAPI","currencyApi","undefined","purchaseDay","appliedCreditTypeFromAPI","CREDIT_TYPE_CREDIT_NOTE","CREDIT_TYPE_PROMOTIONAL","CREDIT_TYPE_UNSET","dimensionId","DimensionNameFromId","existing_enterprise","new_enterprise","agency","CP_unassisted","CP_growth_MT","CP_growth_HT","Agency","Dimension","NewEnterprise","ExistingEnterprise","ChannelPartnersUnassistedPLG","ChannelPartnersGrowthMediumTouch","ChannelPartnersGrowthHighTouch","contractFromApi","ContractService","api","productFromApi","listProductsFilterToApi","pt","ApiProductType","PRODUCT_TYPE_STANDARD_PRODUCT","Vendasta","PRODUCT_TYPE_VENDASTA_PRODUCT","PRODUCT_TYPE_SUBSCRIPTION","Fee","PRODUCT_TYPE_FEE","PartnerSupportSales","PRODUCT_TYPE_PARTNER_SUPPORT_SALES","PRODUCT_TYPE_INVALID","productTypeToApi","BillingService","revenueApi","merchantReportApi","purchaseApi","vendorApi","req","response","canCreateSubscriptionsWithFrequencies","downloadRevenueCsv","downloadBillingReportCsv","generateBillingReportCsv","canBillCreateSnapshot","canBillRefreshSnapshot","ok","CommitmentApi","mapTo","_a","productPricesApi","productPricings","_b","_c","productPricingResponse","getMultiRetailPricing","requestGroupId","retailPricesApi","retailPricings","retailPricingResponse","ppp","listPurchases","purchase","voidPurchase","purchaseItem","retryPurchase","customerSummary","csApi","contractsAPI","contractResponse","generateVendorReport","getVendorStats","apiFilters","productsMap","forEach","changeBillableItemFrequency","freq","changeBillableItemNextRenewalDate","changeBillableItemCustomUnitPrice","startRevRecBackfillWorkflow","discountTypeFromApi","ApiDiscountType","discountTypeToApi","bundleFromApi","apiBundle","apiBundleItem","BundleService","bundleApiService","bundleItem","bundlesMap","set","ContractDocumentService","contractDocumentApi","upload","file","Content-Disposition","params","documents","doc","apiContractDocument","download","merchant_id","CreditService","creditApi","apiCreditBalance","DiscountService","discountApi","apiDiscount","SKU","startDateTime","endDateTime","resetEachPeriodFlag","dt","collectionMethodToApi","MANUAL_COLLECTION","CHARGE_AUTOMATICALLY","SEND_EMAIL","collectionMethodFromApi","UNSET","retailCustomerConfigurationFromApi","config","InvoiceOrigin","RetailCustomerConfigurationService","configApiService","convertApiStatus","ApiInvoiceStatus","DUE","VOID","DRAFT","convertApiOrigin","MANUAL","SALES_ORDER","RENEWAL","convertApiAppliedTaxRate","convertApiTaxRate","tr","convertApiInvoice","ca","invoiceItems","ii","convertApiInvoiceItem","listInvoiceFiltersToApi","InternalInvoiceStatus","invoiceStatusToApi","CREATED","InvoiceDateField","InvoiceService","invoiceApiService","generatePDF","documentType","invoice_id","document_type","preview","updateCurrency","pbInvoice","ApiInvoice","fm","updateDueDate","updateContact","updateCollectionMethod","apiCollectionMethod","updateMemo","updateDefaultPaymentMethod","updateDefaultTaxes","mask","convertApiInvoiceTemplate","convertApiInvoiceTemplateItem","PayoutInterval","GenerateMethod","SortMerchantsBy","InvoiceTemplateService","invoiceTemplateApiService","itemsRequest","appliedDiscountToApi","MerchantFromAPI","payoutIntervalFromAPI","Daily","Weekly","generateMethodToApi","SUBSCRIPTION","TEMPLATE","generateMethodFromApi","defaultCustomerConfigurationFromApi","MerchantService","SortByApi","SortDirectionApi","createExternalAccount","generateAccountBalanceReport","configMap","nextInTransitPayout","balance","retailPayouts","disputeFromApi","disputeStatusFromApi","disputeEvidenceFromApi","disputeEvidenceDetailsFromApi","fileFromApi","DisputeStatusApi","DISPUTE_STATUS_WARNING_NEEDS_RESPONSE","WARNING_NEEDS_RESPONSE","DISPUTE_STATUS_WARNING_UNDER_REVIEW","WARNING_UNDER_REVIEW","DISPUTE_STATUS_WARNING_CLOSED","WARNING_CLOSED","DISPUTE_STATUS_NEEDS_RESPONSE","NEEDS_RESPONSE","DISPUTE_STATUS_UNDER_REVIEW","UNDER_REVIEW","DISPUTE_STATUS_CHARGE_REFUNDED","CHARGE_REFUNDED","DISPUTE_STATUS_LOST","LOST","DISPUTE_STATUS_WON","WON","paymentSourceFromApi","PaymentSourceApi","PAYMENT_SOURCE_STRIPE","STRIPE","PAYMENT_SOURCE_VCASH","VCASH","paymentStatusFromApi","PaymentStatusApi","PAYMENT_STATUS_FAILED","PAYMENT_STATUS_SUCCEEDED","Succeeded","paymentAllocationTypeFromApi","PaymentAllocationTypeApi","PAYMENT_ALLOCATION_TYPE_INVOICE","INVOICE","PAYMENT_ALLOCATION_TYPE_PURCHASE","PURCHASE","paymentFromApi","paymentAllocationFromApi","FundingType","PaymentCardType","DeclineReasons","nextSteps","AMEX","ɵ1$1","VISA","ɵ2$1","MASTERCARD","ɵ3$1","JCB","ɵ4$1","DINERS_CLUB","ɵ5$1","DISCOVER","ɵ6$1","UNKNOWN","paymentCardTypeLabelMap","ɵ0$1","DEBIT","ɵ8$1","CREDIT","ɵ9","PREPAID","ɵ10","fundingTypeLabelMap","FUNDING_TYPE_DEBIT","ɵ7$1","FUNDING_TYPE_CREDIT","FUNDING_TYPE_PREPAID","FUNDING_TYPE_UNKNOWN","convertApiFundingType","convertApiPaymentCardDetails","RetailPaymentStatus","DisabledReason","PaymentCardService","setDefaultCard","getFirstPaymentCard","getAll","cards","paymentCards","token","retailPaymentFromApi","retailPaymentStatusFromApi","cardTypeFromApi","CARD_TYPE_VISA","CARD_TYPE_MASTERCARD","CARD_TYPE_AMEX","CARD_TYPE_DISCOVER","CARD_TYPE_JCB","CARD_TYPE_DINERS_CLUB","Disputed","PAYMENT_STATUS_REFUNDED","Refunded","PAYMENT_STATUS_PARTIALLY_REFUNDED","PartialyRefunded","disabledReasonFromAPI","REJECTED","OTHER","LISTED","retailResponseFromAPI","errors","verificationErrorFromAPI","PaymentService","paymentApi","listPayments","prepareRetailPayment","retailPayments","closeDispute","PaymentMethodService","subscriptionMetricFromAPI","mApi","subscriptionMetricByGroupFromAPI","metrics","metric","groupID","ProductSummaryService","productSummaryApi","listSubscriptionRetentionBySKU","merchantID","PurchaseService","toISOString","bs","listPurchaseFiltersToHTTPJson","reasonToApi","REQUESTED_BY_CUSTOMER","ApiReason","FRAUDULENT","DUPLICATE","reasonFromApi","statusFromApi","ApiStatus","SUCCEEDED","referenceFromApi","ApiReferenceType","PURCHASE_ITEM","refundFromApi","refund","RefundService","refundApiService","handleError","convertFromApiCollectionMethod","ApiCollectionMethod","COLLECTION_METHOD_INVALID","COLLECTION_METHOD_MANUAL","COLLECTION_METHOD_EMAIL","COLLECTION_METHOD_CHARGE_AUTOMATICALLY","convertToApiCollectionMethod","convertFromApiInterval","ApiInterval","INTERVAL_INVALID","INTERVAL_DAY","DAY","INTERVAL_WEEK","WEEK","INTERVAL_MONTH","MONTH","INTERVAL_YEAR","YEAR","convertToApiInterval","convertFromApiPaymentProcessor","ApiPaymentProcessor","PAYMENT_PROCESSOR_INVALID","PAYMENT_PROCESSOR_UNSET","PAYMENT_PROCESSOR_STRIPE","convertToApiPaymentProcessor","convertFromApiRecurringInvoiceStatus","ApiRecurringInvoiceStatus","RECURRING_INVOICE_STATUS_INVALID","RECURRING_INVOICE_STATUS_INACTIVE","INACTIVE","RECURRING_INVOICE_STATUS_ACTIVE","ACTIVE","RECURRING_INVOICE_STATUS_ARCHIVED","ARCHIVED","convertToApiRecurringInvoiceStatus","LineItem","_this","_super","convertFromApiRecurringInvoiceLineItem","li","convertFromApiRecurringInvoiceItem","convertFromApiRecurringInvoiceLineItemBundle","convertFromApiRecurringInvoice","convertToApiRecurringInvoiceLineItem","RecurringInvoiceLineItemApi","convertToApiRecurringInvoiceItem","RecurringInvoiceBundleApi","RecurringInvoiceItemApi","RecurringInvoiceService","recurringInvoiceApiService","RecurringInvoiceApi","ListRecurringInvoicesByCustomerID","ListRecurringInvoicesByMerchantID","listSalesCreditNoteFiltersToApi","ReadyToPost","InternalSalesCreditNoteStatus","SALES_CREDIT_NOTE_STATUS_READY_TO_POST","Complete","SALES_CREDIT_NOTE_STATUS_COMPLETE","Discarded","SALES_CREDIT_NOTE_STATUS_DISCARDED","SALES_CREDIT_NOTE_STATUS_IN_PROGRESS","salesCreditNoteStatusToApi","salesCreditNoteStatusFromApi","sApi","InProgress","PaymentStatusType","SalesCreditNoteService","salesCreditNoteApi","downloadPdf","salesCreditNoteId","handleDownloadPDFError","bind","createAutomatedCreditNote","salesCreditNotes","siApi","salesInvoiceFromApi","salesInvoiceStatusFromApi","salesInvoiceTypeFromApi","listSalesInvoiceFiltersToApi","InternalSalesInvoiceStatus","SALES_INVOICE_STATUS_READY_TO_POST","SALES_INVOICE_STATUS_COMPLETE","SALES_INVOICE_STATUS_DISCARDED","SALES_INVOICE_STATUS_IN_PROGRESS","salesInvoiceStatusToApi","Paid","PAYMENT_STATUSES_PAID","Part_Paid","PAYMENT_STATUSES_PART_PAID","Unpaid","PAYMENT_STATUSES_UNPAID","Not_Applicable","PAYMENT_STATUSES_NOT_APPLICABLE","PAYMENT_STATUSES_NOT_SET","salesInvoicePaymentStatusToApi","InternalSalesInvoiceType","SALES_INVOICE_TYPE_INVOICED","Invoiced","SALES_INVOICE_TYPE_INSTANT","Instant","SalesInvoiceService","salesInvoiceApi","salesInvoiceId","listSalesInvoices","salesInvoices","postSalesInvoice","getSalesInvoice","FilePurpose","StripeFileService","httpClient","uploadFile","purpose","formData","FormData","append","taxRateFromApi","apiTaxRate","TaxRateService","taxRateApi"],"mappings":"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","sourcesContent":["import {AppliedBundle as ApiAppliedBundle} from '../_internal';\n\nexport interface AppliedBundle {\n bundleId?: string;\n bundleInstanceId?: string;\n name?: string;\n bundleItems?: AppliedBundleItem[];\n hideBundleItems?: boolean;\n}\n\nexport interface AppliedBundleItem {\n productId?: string;\n discountType?: string;\n discountAmount?: number;\n quantity?: number;\n}\n\nexport function convertApiAppliedBundle(ab: ApiAppliedBundle): AppliedBundle {\n if (!ab) {\n return null\n }\n\n return {\n bundleId: ab.bundleId,\n bundleInstanceId: ab.bundleInstanceId,\n name: ab.name,\n hideBundleItems: ab.hideBundleItems || false,\n }\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum Frequency {\n INVALID = 0,\n MONTHLY = 1,\n YEARLY = 2,\n ONE_TIME = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum DiscountType {\n DISCOUNT_TYPE_FIXED_AMOUNT = 0,\n DISCOUNT_TYPE_PERCENT_AMOUNT = 1,\n DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS = 2,\n DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum Currency {\n USD = 0,\n CAD = 1,\n EUR = 2,\n AUD = 3,\n GBP = 4,\n NZD = 5,\n BRL = 6,\n CHF = 7,\n CNY = 8,\n CZK = 9,\n INR = 10,\n JPY = 11,\n KHR = 12,\n KRW = 13,\n MXN = 14,\n NOK = 15,\n RUB = 16,\n SEK = 17,\n SGD = 18,\n TRY = 19,\n ZAR = 20,\n DZD = 21,\n AWG = 22,\n FJD = 23,\n KYD = 24,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum ContractSubscriptionStatus {\n CONTRACT_SUBSCRIPTION_STATUS_UNSET = 0,\n CONTRACT_SUBSCRIPTION_STATUS_PENDING = 1,\n CONTRACT_SUBSCRIPTION_STATUS_SUCCEEDED = 2,\n CONTRACT_SUBSCRIPTION_STATUS_FAILED = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum ProductSummaryBillingStrategy {\n CHARGE_AT_END_OF_BILLING_PERIOD = 0,\n CHARGE_AT_START_OF_BILLING_PERIOD = 1,\n CHARGE_INSTANTLY = 2,\n CHARGE_AT_END_OF_DAY = 3,\n}\n\nexport enum ProductSummaryDiscountDiscountType {\n FIXED_AMOUNT = 0,\n PERCENT_AMOUNT = 1,\n FIXED_NUMBER_OF_UNITS = 2,\n FIXED_AMOUNT_PER_UNIT = 3,\n}\n\nexport enum ProductSummaryProductType {\n BUNDLE = 0,\n FEE = 1,\n PRODUCT = 2,\n SUBSCRIPTION = 3,\n VENDASTA_PRODUCT = 4,\n}\n\nexport enum PricingRuleType {\n STANDARD = 0,\n STAIRSTEP = 1,\n TIERED = 2,\n CUSTOM = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum ListInvoicesRequestFiltersDateFilterDateField {\n CREATED = 0,\n}\n\nexport enum InvoiceStatus {\n DRAFT = 0,\n DUE = 1,\n PAID = 2,\n VOID = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum PayoutStatus {\n PAYOUT_STATUS_NOT_SET = 0,\n PAYOUT_STATUS_PAID = 1,\n PAYOUT_STATUS_PENDING = 2,\n PAYOUT_STATUS_IN_TRANSIT = 3,\n PAYOUT_STATUS_CANCELED = 4,\n PAYOUT_STATUS_FAILED = 5,\n}\n\nexport enum PayoutType {\n PAYOUT_TYPE_NOT_SET = 0,\n PAYOUT_TYPE_BANK_ACCOUNT = 1,\n PAYOUT_TYPE_CARD = 2,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum SortDirection {\n SORT_DIRECTION_ASCENDING = 0,\n SORT_DIRECTION_DESCENDING = 1,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum SearchMerchantsRequestSortBy {\n SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID = 0,\n SEARCH_MERCHANTS_REQUEST_SORT_BY_COMPANY_NAME = 1,\n SEARCH_MERCHANTS_REQUEST_SORT_BY_CONTACT_NAME = 2,\n SEARCH_MERCHANTS_REQUEST_SORT_BY_EMAIL_ADDRESS = 3,\n SEARCH_MERCHANTS_REQUEST_SORT_BY_COUNTRY = 4,\n SEARCH_MERCHANTS_REQUEST_SORT_BY_STATE = 5,\n SEARCH_MERCHANTS_REQUEST_SORT_BY_CREATED = 6,\n SEARCH_MERCHANTS_REQUEST_SORT_BY_UPDATED = 7,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum Month {\n INVALID_MONTH = 0,\n JANUARY = 1,\n FEBRUARY = 2,\n MARCH = 3,\n APRIL = 4,\n MAY = 5,\n JUNE = 6,\n JULY = 7,\n AUGUST = 8,\n SEPTEMBER = 9,\n OCTOBER = 10,\n NOVEMBER = 11,\n DECEMBER = 12,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum MerchantReportStatus {\n FAILED = 0,\n PENDING = 1,\n COMPLETED = 2,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum CardType {\n CARD_TYPE_UNKNOWN = 0,\n CARD_TYPE_VISA = 1,\n CARD_TYPE_MASTERCARD = 2,\n CARD_TYPE_AMEX = 3,\n CARD_TYPE_DISCOVER = 4,\n CARD_TYPE_JCB = 5,\n CARD_TYPE_DINERS_CLUB = 6,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum DisputeStatus {\n DISPUTE_STATUS_UNSET = 0,\n DISPUTE_STATUS_WARNING_NEEDS_RESPONSE = 1,\n DISPUTE_STATUS_WARNING_UNDER_REVIEW = 2,\n DISPUTE_STATUS_WARNING_CLOSED = 3,\n DISPUTE_STATUS_NEEDS_RESPONSE = 4,\n DISPUTE_STATUS_UNDER_REVIEW = 5,\n DISPUTE_STATUS_CHARGE_REFUNDED = 6,\n DISPUTE_STATUS_WON = 7,\n DISPUTE_STATUS_LOST = 8,\n}\n\nexport enum PaymentAllocationType {\n PAYMENT_ALLOCATION_TYPE_UNSET = 0,\n PAYMENT_ALLOCATION_TYPE_PURCHASE = 1,\n PAYMENT_ALLOCATION_TYPE_INVOICE = 2,\n}\n\nexport enum PaymentSource {\n PAYMENT_SOURCE_NONE = 0,\n PAYMENT_SOURCE_STRIPE = 1,\n PAYMENT_SOURCE_VCASH = 2,\n}\n\nexport enum PaymentStatus {\n PAYMENT_STATUS_UNSET = 0,\n PAYMENT_STATUS_SUCCEEDED = 1,\n PAYMENT_STATUS_FAILED = 2,\n PAYMENT_STATUS_REFUNDED = 3,\n PAYMENT_STATUS_PARTIALLY_REFUNDED = 4,\n}\n\nexport enum RetailPaymentReferenceType {\n RETAIL_PAYMENT_REFERENCE_TYPE_UNSET = 0,\n RETAIL_PAYMENT_REFERENCE_TYPE_INVOICE = 1,\n RETAIL_PAYMENT_REFERENCE_TYPE_SALES_ORDER = 2,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum PaymentCardCARD_TYPE {\n UNKNOWN = 0,\n VISA = 1,\n MASTERCARD = 2,\n AMEX = 3,\n DISCOVER = 4,\n JCB = 5,\n DINERS_CLUB = 6,\n}\n\nexport enum PaymentCardFUNDING_TYPE {\n FUNDING_TYPE_UNKNOWN = 0,\n FUNDING_TYPE_CREDIT = 1,\n FUNDING_TYPE_DEBIT = 2,\n FUNDING_TYPE_PREPAID = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum BillingStrategy {\n BILLING_STRATEGY_NONE = 0,\n BILLING_STRATEGY_END_OF_PERIOD = 1,\n BILLING_STRATEGY_START_OF_PERIOD = 2,\n BILLING_STRATEGY_INSTANTLY = 3,\n BILLING_STRATEGY_END_OF_DAY = 4,\n}\n\nexport enum ProductPricingType {\n PRODUCT_PRICING_TYPE_INVALID = 0,\n PRODUCT_PRICING_TYPE_STANDARD = 1,\n PRODUCT_PRICING_TYPE_STAIRSTEP = 2,\n PRODUCT_PRICING_TYPE_TIERED = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum ProductType {\n PRODUCT_TYPE_INVALID = 0,\n PRODUCT_TYPE_STANDARD_PRODUCT = 1,\n PRODUCT_TYPE_VENDASTA_PRODUCT = 2,\n PRODUCT_TYPE_SUBSCRIPTION = 3,\n PRODUCT_TYPE_FEE = 4,\n PRODUCT_TYPE_PRIVATE_PRODUCT = 5,\n PRODUCT_TYPE_PARTNER_SUPPORT_SALES = 6,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum CreditType {\n CREDIT_TYPE_UNSET = 0,\n CREDIT_TYPE_CREDIT_NOTE = 1,\n CREDIT_TYPE_PROMOTIONAL = 2,\n}\n\nexport enum PurchaseStatus {\n PURCHASE_STATUS_UNSET = 0,\n PURCHASE_STATUS_PENDING = 1,\n PURCHASE_STATUS_DUE = 2,\n PURCHASE_STATUS_SUCCESS = 3,\n PURCHASE_STATUS_DUNNING = 4,\n PURCHASE_STATUS_FAILED = 5,\n}\n\nexport enum ListPurchaseRequestState {\n LIST_PURCHASE_REQUEST_STATE_ALL = 0,\n LIST_PURCHASE_REQUEST_STATE_OVERDUE = 1,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum ReferenceType {\n PURCHASE = 0,\n PURCHASE_ITEM = 1,\n INVOICE = 2,\n}\n\nexport enum RefundReason {\n REQUESTED_BY_CUSTOMER = 0,\n DUPLICATE = 1,\n FRAUDULENT = 2,\n}\n\nexport enum RefundStatus {\n SUCCEEDED = 0,\n FAILED = 1,\n PENDING = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum SalesCreditNoteStatus {\n SALES_CREDIT_NOTE_STATUS_IN_PROGRESS = 0,\n SALES_CREDIT_NOTE_STATUS_READY_TO_POST = 1,\n SALES_CREDIT_NOTE_STATUS_COMPLETE = 2,\n SALES_CREDIT_NOTE_STATUS_DISCARDED = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum PaymentStatuses {\n PAYMENT_STATUSES_NOT_SET = 0,\n PAYMENT_STATUSES_UNPAID = 1,\n PAYMENT_STATUSES_PAID = 2,\n PAYMENT_STATUSES_PART_PAID = 3,\n PAYMENT_STATUSES_NOT_APPLICABLE = 4,\n}\n\nexport enum SalesInvoiceStatus {\n SALES_INVOICE_STATUS_IN_PROGRESS = 0,\n SALES_INVOICE_STATUS_READY_TO_POST = 1,\n SALES_INVOICE_STATUS_COMPLETE = 2,\n SALES_INVOICE_STATUS_DISCARDED = 3,\n}\n\nexport enum SalesInvoiceType {\n SALES_INVOICE_TYPE_UNSET = 0,\n SALES_INVOICE_TYPE_INVOICED = 1,\n SALES_INVOICE_TYPE_INSTANT = 2,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum SubscribeValidationStatus {\n SUBSCRIBE_VALIDATION_STATUS_UNSET = 0,\n SUBSCRIBE_VALIDATION_STATUS_CANNOT_INSTANT_BILL = 1,\n SUBSCRIBE_VALIDATION_STATUS_MISSING_MERCHANT_INFO = 2,\n SUBSCRIBE_VALIDATION_STATUS_MISSING_PAYMENT_INFO = 3,\n SUBSCRIBE_VALIDATION_STATUS_WILL_CAUSE_FUTURE_CHARGES = 4,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum RenewalState {\n RENEWAL_STATE_IMMEDIATE = 0,\n RENEWAL_STATE_DELAYED = 1,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum PaymentProcessor {\n PAYMENT_PROCESSOR_INVALID = 0,\n PAYMENT_PROCESSOR_UNSET = 1,\n PAYMENT_PROCESSOR_STRIPE = 2,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\n\nexport enum CollectionMethod {\n COLLECTION_METHOD_INVALID = 0,\n COLLECTION_METHOD_MANUAL = 1,\n COLLECTION_METHOD_EMAIL = 2,\n COLLECTION_METHOD_CHARGE_AUTOMATICALLY = 3,\n}\n\nexport enum Interval {\n INTERVAL_INVALID = 0,\n INTERVAL_DAY = 1,\n INTERVAL_WEEK = 2,\n INTERVAL_MONTH = 3,\n INTERVAL_YEAR = 4,\n}\n\nexport enum RecurringInvoiceStatus {\n RECURRING_INVOICE_STATUS_INVALID = 0,\n RECURRING_INVOICE_STATUS_INACTIVE = 1,\n RECURRING_INVOICE_STATUS_ACTIVE = 2,\n RECURRING_INVOICE_STATUS_ARCHIVED = 3,\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class PagedRequestOptions implements i.PagedRequestOptionsInterface {\n cursor: string;\n pageSize: number;\n\n static fromProto(proto: any): PagedRequestOptions {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.PagedRequestOptionsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n return toReturn;\n }\n}\n\nexport class PagedResponseMetadata implements i.PagedResponseMetadataInterface {\n nextCursor: string;\n hasMore: boolean;\n\n static fromProto(proto: any): PagedResponseMetadata {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.PagedResponseMetadataInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class BillItemRequest implements i.BillItemRequestInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n billingStart: Date;\n proratedTo: Date;\n\n static fromProto(proto: any): BillItemRequest {\n let m = new BillItemRequest();\n m = Object.assign(m, proto);\n if (proto.billingStart) {m.billingStart = new Date(proto.billingStart);}\n if (proto.proratedTo) {m.proratedTo = new Date(proto.proratedTo);}\n return m;\n }\n\n constructor(kwargs?: i.BillItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {toReturn['billingStart'] = 'toApiJson' in this.billingStart ? (this.billingStart as any).toApiJson() : this.billingStart;}\n if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? (this.proratedTo as any).toApiJson() : this.proratedTo;}\n return toReturn;\n }\n}\n\nexport class BillMultipleItemsRequest implements i.BillMultipleItemsRequestInterface {\n merchantId: string;\n items: Item[];\n\n static fromProto(proto: any): BillMultipleItemsRequest {\n let m = new BillMultipleItemsRequest();\n m = Object.assign(m, proto);\n if (proto.items) {m.items = proto.items.map(Item.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.BillMultipleItemsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.items !== 'undefined' && this.items !== null) {toReturn['items'] = 'toApiJson' in this.items ? (this.items as any).toApiJson() : this.items;}\n return toReturn;\n }\n}\n\nexport class BillMultipleItemsResponse implements i.BillMultipleItemsResponseInterface {\n id: string;\n\n static fromProto(proto: any): BillMultipleItemsResponse {\n let m = new BillMultipleItemsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.BillMultipleItemsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class BillableItem implements i.BillableItemInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n expiry: Date;\n billingStart: Date;\n created: Date;\n updated: Date;\n frequency: e.Frequency;\n nextRenewal: Date;\n customerName: string;\n productName: string;\n customerAddress: BillableItemCustomerAddress;\n customUnitPrice: number;\n retailFrequency: e.Frequency;\n nextRetailRenewal: Date;\n retailUnitPrice: number;\n\n static fromProto(proto: any): BillableItem {\n let m = new BillableItem();\n m = Object.assign(m, proto);\n if (proto.expiry) {m.expiry = new Date(proto.expiry);}\n if (proto.billingStart) {m.billingStart = new Date(proto.billingStart);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.nextRenewal) {m.nextRenewal = new Date(proto.nextRenewal);}\n if (proto.customerAddress) {m.customerAddress = BillableItemCustomerAddress.fromProto(proto.customerAddress);}\n if (proto.customUnitPrice) {m.customUnitPrice = parseInt(proto.customUnitPrice, 10);}\n if (proto.retailFrequency) {m.retailFrequency = enumStringToValue<e.Frequency>(e.Frequency, proto.retailFrequency);}\n if (proto.nextRetailRenewal) {m.nextRetailRenewal = new Date(proto.nextRetailRenewal);}\n if (proto.retailUnitPrice) {m.retailUnitPrice = parseInt(proto.retailUnitPrice, 10);}\n return m;\n }\n\n constructor(kwargs?: i.BillableItemInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {toReturn['expiry'] = 'toApiJson' in this.expiry ? (this.expiry as any).toApiJson() : this.expiry;}\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {toReturn['billingStart'] = 'toApiJson' in this.billingStart ? (this.billingStart as any).toApiJson() : this.billingStart;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.nextRenewal !== 'undefined' && this.nextRenewal !== null) {toReturn['nextRenewal'] = 'toApiJson' in this.nextRenewal ? (this.nextRenewal as any).toApiJson() : this.nextRenewal;}\n if (typeof this.customerName !== 'undefined') {toReturn['customerName'] = this.customerName;}\n if (typeof this.productName !== 'undefined') {toReturn['productName'] = this.productName;}\n if (typeof this.customerAddress !== 'undefined' && this.customerAddress !== null) {toReturn['customerAddress'] = 'toApiJson' in this.customerAddress ? (this.customerAddress as any).toApiJson() : this.customerAddress;}\n if (typeof this.customUnitPrice !== 'undefined') {toReturn['customUnitPrice'] = this.customUnitPrice;}\n if (typeof this.retailFrequency !== 'undefined') {toReturn['retailFrequency'] = this.retailFrequency;}\n if (typeof this.nextRetailRenewal !== 'undefined' && this.nextRetailRenewal !== null) {toReturn['nextRetailRenewal'] = 'toApiJson' in this.nextRetailRenewal ? (this.nextRetailRenewal as any).toApiJson() : this.nextRetailRenewal;}\n if (typeof this.retailUnitPrice !== 'undefined') {toReturn['retailUnitPrice'] = this.retailUnitPrice;}\n return toReturn;\n }\n}\n\nexport class CanBillItemRequest implements i.CanBillItemRequestInterface {\n merchantId: string;\n sku: string;\n\n static fromProto(proto: any): CanBillItemRequest {\n let m = new CanBillItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CanBillItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n return toReturn;\n }\n}\n\nexport class BillableItemCustomerAddress implements i.BillableItemCustomerAddressInterface {\n address: string;\n city: string;\n state: string;\n zip: string;\n country: string;\n\n static fromProto(proto: any): BillableItemCustomerAddress {\n let m = new BillableItemCustomerAddress();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.BillableItemCustomerAddressInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.address !== 'undefined') {toReturn['address'] = this.address;}\n if (typeof this.city !== 'undefined') {toReturn['city'] = this.city;}\n if (typeof this.state !== 'undefined') {toReturn['state'] = this.state;}\n if (typeof this.zip !== 'undefined') {toReturn['zip'] = this.zip;}\n if (typeof this.country !== 'undefined') {toReturn['country'] = this.country;}\n return toReturn;\n }\n}\n\nexport class DeleteBillableItemRequest implements i.DeleteBillableItemRequestInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n\n static fromProto(proto: any): DeleteBillableItemRequest {\n let m = new DeleteBillableItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeleteBillableItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n return toReturn;\n }\n}\n\nexport class ExpireBillableItemRequest implements i.ExpireBillableItemRequestInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n expiry: Date;\n\n static fromProto(proto: any): ExpireBillableItemRequest {\n let m = new ExpireBillableItemRequest();\n m = Object.assign(m, proto);\n if (proto.expiry) {m.expiry = new Date(proto.expiry);}\n return m;\n }\n\n constructor(kwargs?: i.ExpireBillableItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {toReturn['expiry'] = 'toApiJson' in this.expiry ? (this.expiry as any).toApiJson() : this.expiry;}\n return toReturn;\n }\n}\n\nexport class ListBillableItemsRequestFilters implements i.ListBillableItemsRequestFiltersInterface {\n skus: string[];\n merchantId: string;\n customerId: string;\n\n static fromProto(proto: any): ListBillableItemsRequestFilters {\n let m = new ListBillableItemsRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ListBillableItemsRequestFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.skus !== 'undefined') {toReturn['skus'] = this.skus;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n return toReturn;\n }\n}\n\nexport class GetBillableItemRequest implements i.GetBillableItemRequestInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n\n static fromProto(proto: any): GetBillableItemRequest {\n let m = new GetBillableItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetBillableItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n return toReturn;\n }\n}\n\nexport class GetBillableItemResponse implements i.GetBillableItemResponseInterface {\n item: BillableItem;\n\n static fromProto(proto: any): GetBillableItemResponse {\n let m = new GetBillableItemResponse();\n m = Object.assign(m, proto);\n if (proto.item) {m.item = BillableItem.fromProto(proto.item);}\n return m;\n }\n\n constructor(kwargs?: i.GetBillableItemResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.item !== 'undefined' && this.item !== null) {toReturn['item'] = 'toApiJson' in this.item ? (this.item as any).toApiJson() : this.item;}\n return toReturn;\n }\n}\n\nexport class GetMultiSubscriptionsRequest implements i.GetMultiSubscriptionsRequestInterface {\n subscriptionKeys: GetMultiSubscriptionsRequestKey[];\n\n static fromProto(proto: any): GetMultiSubscriptionsRequest {\n let m = new GetMultiSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.subscriptionKeys) {m.subscriptionKeys = proto.subscriptionKeys.map(GetMultiSubscriptionsRequestKey.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiSubscriptionsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subscriptionKeys !== 'undefined' && this.subscriptionKeys !== null) {toReturn['subscriptionKeys'] = 'toApiJson' in this.subscriptionKeys ? (this.subscriptionKeys as any).toApiJson() : this.subscriptionKeys;}\n return toReturn;\n }\n}\n\nexport class GetMultiSubscriptionsResponse implements i.GetMultiSubscriptionsResponseInterface {\n subscriptions: BillableItem[];\n\n static fromProto(proto: any): GetMultiSubscriptionsResponse {\n let m = new GetMultiSubscriptionsResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptions) {m.subscriptions = proto.subscriptions.map(BillableItem.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiSubscriptionsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subscriptions !== 'undefined' && this.subscriptions !== null) {toReturn['subscriptions'] = 'toApiJson' in this.subscriptions ? (this.subscriptions as any).toApiJson() : this.subscriptions;}\n return toReturn;\n }\n}\n\nexport class Item implements i.ItemInterface {\n sku: string;\n customerId: string;\n orderId: string;\n billingStart: Date;\n\n static fromProto(proto: any): Item {\n let m = new Item();\n m = Object.assign(m, proto);\n if (proto.billingStart) {m.billingStart = new Date(proto.billingStart);}\n return m;\n }\n\n constructor(kwargs?: i.ItemInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {toReturn['billingStart'] = 'toApiJson' in this.billingStart ? (this.billingStart as any).toApiJson() : this.billingStart;}\n return toReturn;\n }\n}\n\nexport class GetMultiSubscriptionsRequestKey implements i.GetMultiSubscriptionsRequestKeyInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n\n static fromProto(proto: any): GetMultiSubscriptionsRequestKey {\n let m = new GetMultiSubscriptionsRequestKey();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiSubscriptionsRequestKeyInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n return toReturn;\n }\n}\n\nexport class ListBillableItemsRequest implements i.ListBillableItemsRequestInterface {\n filters: ListBillableItemsRequestFilters;\n pagingOptions: PagedRequestOptions;\n searchTerm: string;\n\n static fromProto(proto: any): ListBillableItemsRequest {\n let m = new ListBillableItemsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListBillableItemsRequestFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListBillableItemsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n if (typeof this.searchTerm !== 'undefined') {toReturn['searchTerm'] = this.searchTerm;}\n return toReturn;\n }\n}\n\nexport class ListBillableItemsResponse implements i.ListBillableItemsResponseInterface {\n items: BillableItem[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListBillableItemsResponse {\n let m = new ListBillableItemsResponse();\n m = Object.assign(m, proto);\n if (proto.items) {m.items = proto.items.map(BillableItem.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListBillableItemsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.items !== 'undefined' && this.items !== null) {toReturn['items'] = 'toApiJson' in this.items ? (this.items as any).toApiJson() : this.items;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AppliedDiscount implements i.AppliedDiscountInterface {\n type: e.DiscountType;\n value: number;\n totalAmount: number;\n description: string;\n\n static fromProto(proto: any): AppliedDiscount {\n let m = new AppliedDiscount();\n m = Object.assign(m, proto);\n if (proto.type) {m.type = enumStringToValue<e.DiscountType>(e.DiscountType, proto.type);}\n if (proto.value) {m.value = parseInt(proto.value, 10);}\n if (proto.totalAmount) {m.totalAmount = parseInt(proto.totalAmount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.AppliedDiscountInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.value !== 'undefined') {toReturn['value'] = this.value;}\n if (typeof this.totalAmount !== 'undefined') {toReturn['totalAmount'] = this.totalAmount;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class Bundle implements i.BundleInterface {\n merchantId: string;\n bundleId: string;\n name: string;\n items: BundleItem[];\n created: Date;\n updated: Date;\n hideBundleDetails: boolean;\n\n static fromProto(proto: any): Bundle {\n let m = new Bundle();\n m = Object.assign(m, proto);\n if (proto.items) {m.items = proto.items.map(BundleItem.fromProto);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n return m;\n }\n\n constructor(kwargs?: i.BundleInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.items !== 'undefined' && this.items !== null) {toReturn['items'] = 'toApiJson' in this.items ? (this.items as any).toApiJson() : this.items;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.hideBundleDetails !== 'undefined') {toReturn['hideBundleDetails'] = this.hideBundleDetails;}\n return toReturn;\n }\n}\n\nexport class BundleItem implements i.BundleItemInterface {\n productId: string;\n discountType: e.DiscountType;\n discountAmount: number;\n quantity: number;\n defaultSku: string;\n price: BundleItemPrice;\n\n static fromProto(proto: any): BundleItem {\n let m = new BundleItem();\n m = Object.assign(m, proto);\n if (proto.discountType) {m.discountType = enumStringToValue<e.DiscountType>(e.DiscountType, proto.discountType);}\n if (proto.discountAmount) {m.discountAmount = parseInt(proto.discountAmount, 10);}\n if (proto.quantity) {m.quantity = parseInt(proto.quantity, 10);}\n if (proto.price) {m.price = BundleItemPrice.fromProto(proto.price);}\n return m;\n }\n\n constructor(kwargs?: i.BundleItemInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.productId !== 'undefined') {toReturn['productId'] = this.productId;}\n if (typeof this.discountType !== 'undefined') {toReturn['discountType'] = this.discountType;}\n if (typeof this.discountAmount !== 'undefined') {toReturn['discountAmount'] = this.discountAmount;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.defaultSku !== 'undefined') {toReturn['defaultSku'] = this.defaultSku;}\n if (typeof this.price !== 'undefined' && this.price !== null) {toReturn['price'] = 'toApiJson' in this.price ? (this.price as any).toApiJson() : this.price;}\n return toReturn;\n }\n}\n\nexport class BundlePricing implements i.BundlePricingInterface {\n bundleId: string;\n currency: string;\n prices: BundlePricingPriceAndFrequency[];\n\n static fromProto(proto: any): BundlePricing {\n let m = new BundlePricing();\n m = Object.assign(m, proto);\n if (proto.prices) {m.prices = proto.prices.map(BundlePricingPriceAndFrequency.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.BundlePricingInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.prices !== 'undefined' && this.prices !== null) {toReturn['prices'] = 'toApiJson' in this.prices ? (this.prices as any).toApiJson() : this.prices;}\n return toReturn;\n }\n}\n\nexport class GetMultiBundleResponseBundlesEntry implements i.GetMultiBundleResponseBundlesEntryInterface {\n key: string;\n value: Bundle;\n\n static fromProto(proto: any): GetMultiBundleResponseBundlesEntry {\n let m = new GetMultiBundleResponseBundlesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = Bundle.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiBundleResponseBundlesEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class ListBundlesRequestFilters implements i.ListBundlesRequestFiltersInterface {\n merchantId: string;\n\n static fromProto(proto: any): ListBundlesRequestFilters {\n let m = new ListBundlesRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ListBundlesRequestFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetMultiBundleRequest implements i.GetMultiBundleRequestInterface {\n merchantId: string;\n bundleIds: string[];\n\n static fromProto(proto: any): GetMultiBundleRequest {\n let m = new GetMultiBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiBundleRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.bundleIds !== 'undefined') {toReturn['bundleIds'] = this.bundleIds;}\n return toReturn;\n }\n}\n\nexport class GetMultiBundleResponse implements i.GetMultiBundleResponseInterface {\n bundles: {[key: string]: Bundle};\n\n static fromProto(proto: any): GetMultiBundleResponse {\n let m = new GetMultiBundleResponse();\n m = Object.assign(m, proto);\n if (proto.bundles) {m.bundles = Object.keys(proto.bundles).reduce<any>((obj, k) => { obj[k] = Bundle.fromProto(proto.bundles[k]); return obj; }, {});}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiBundleResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.bundles !== 'undefined' && this.bundles !== null) {toReturn['bundles'] = 'toApiJson' in this.bundles ? (this.bundles as any).toApiJson() : this.bundles;}\n return toReturn;\n }\n}\n\nexport class ListBundlesRequest implements i.ListBundlesRequestInterface {\n filters: ListBundlesRequestFilters;\n searchTerm: string;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListBundlesRequest {\n let m = new ListBundlesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListBundlesRequestFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListBundlesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.searchTerm !== 'undefined') {toReturn['searchTerm'] = this.searchTerm;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListBundlesResponse implements i.ListBundlesResponseInterface {\n bundles: Bundle[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListBundlesResponse {\n let m = new ListBundlesResponse();\n m = Object.assign(m, proto);\n if (proto.bundles) {m.bundles = proto.bundles.map(Bundle.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListBundlesResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.bundles !== 'undefined' && this.bundles !== null) {toReturn['bundles'] = 'toApiJson' in this.bundles ? (this.bundles as any).toApiJson() : this.bundles;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class BundleItemPrice implements i.BundleItemPriceInterface {\n amount: number;\n setupFee: number;\n\n static fromProto(proto: any): BundleItemPrice {\n let m = new BundleItemPrice();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.setupFee) {m.setupFee = parseInt(proto.setupFee, 10);}\n return m;\n }\n\n constructor(kwargs?: i.BundleItemPriceInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.setupFee !== 'undefined') {toReturn['setupFee'] = this.setupFee;}\n return toReturn;\n }\n}\n\nexport class BundlePricingPriceAndFrequency implements i.BundlePricingPriceAndFrequencyInterface {\n frequency: e.Frequency;\n effectivePrice: number;\n initialPrice: number;\n setupFee: number;\n\n static fromProto(proto: any): BundlePricingPriceAndFrequency {\n let m = new BundlePricingPriceAndFrequency();\n m = Object.assign(m, proto);\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.effectivePrice) {m.effectivePrice = parseInt(proto.effectivePrice, 10);}\n if (proto.initialPrice) {m.initialPrice = parseInt(proto.initialPrice, 10);}\n if (proto.setupFee) {m.setupFee = parseInt(proto.setupFee, 10);}\n return m;\n }\n\n constructor(kwargs?: i.BundlePricingPriceAndFrequencyInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.effectivePrice !== 'undefined') {toReturn['effectivePrice'] = this.effectivePrice;}\n if (typeof this.initialPrice !== 'undefined') {toReturn['initialPrice'] = this.initialPrice;}\n if (typeof this.setupFee !== 'undefined') {toReturn['setupFee'] = this.setupFee;}\n return toReturn;\n }\n}\n\nexport class UpsertBundleRequest implements i.UpsertBundleRequestInterface {\n merchantId: string;\n bundleId: string;\n name: string;\n items: BundleItem[];\n hideBundleDetails: boolean;\n\n static fromProto(proto: any): UpsertBundleRequest {\n let m = new UpsertBundleRequest();\n m = Object.assign(m, proto);\n if (proto.items) {m.items = proto.items.map(BundleItem.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.UpsertBundleRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.items !== 'undefined' && this.items !== null) {toReturn['items'] = 'toApiJson' in this.items ? (this.items as any).toApiJson() : this.items;}\n if (typeof this.hideBundleDetails !== 'undefined') {toReturn['hideBundleDetails'] = this.hideBundleDetails;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class Commitment implements i.CommitmentInterface {\n initial: number;\n recurring: number;\n\n static fromProto(proto: any): Commitment {\n let m = new Commitment();\n m = Object.assign(m, proto);\n if (proto.initial) {m.initial = parseInt(proto.initial, 10);}\n if (proto.recurring) {m.recurring = parseInt(proto.recurring, 10);}\n return m;\n }\n\n constructor(kwargs?: i.CommitmentInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.initial !== 'undefined') {toReturn['initial'] = this.initial;}\n if (typeof this.recurring !== 'undefined') {toReturn['recurring'] = this.recurring;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class Contract implements i.ContractInterface {\n merchantId: string;\n netD: number;\n created: Date;\n subscriptionId: string;\n currency: e.Currency;\n signed: Date;\n activated: Date;\n modified: Date;\n verified: Date;\n status: string;\n creditLimit: number;\n dimension: string;\n pricingPlanId: string;\n end: Date;\n subscriptionUpdateStatus: e.ContractSubscriptionStatus;\n\n static fromProto(proto: any): Contract {\n let m = new Contract();\n m = Object.assign(m, proto);\n if (proto.netD) {m.netD = parseInt(proto.netD, 10);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n if (proto.signed) {m.signed = new Date(proto.signed);}\n if (proto.activated) {m.activated = new Date(proto.activated);}\n if (proto.modified) {m.modified = new Date(proto.modified);}\n if (proto.verified) {m.verified = new Date(proto.verified);}\n if (proto.creditLimit) {m.creditLimit = parseInt(proto.creditLimit, 10);}\n if (proto.end) {m.end = new Date(proto.end);}\n if (proto.subscriptionUpdateStatus) {m.subscriptionUpdateStatus = enumStringToValue<e.ContractSubscriptionStatus>(e.ContractSubscriptionStatus, proto.subscriptionUpdateStatus);}\n return m;\n }\n\n constructor(kwargs?: i.ContractInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.netD !== 'undefined') {toReturn['netD'] = this.netD;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.subscriptionId !== 'undefined') {toReturn['subscriptionId'] = this.subscriptionId;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.signed !== 'undefined' && this.signed !== null) {toReturn['signed'] = 'toApiJson' in this.signed ? (this.signed as any).toApiJson() : this.signed;}\n if (typeof this.activated !== 'undefined' && this.activated !== null) {toReturn['activated'] = 'toApiJson' in this.activated ? (this.activated as any).toApiJson() : this.activated;}\n if (typeof this.modified !== 'undefined' && this.modified !== null) {toReturn['modified'] = 'toApiJson' in this.modified ? (this.modified as any).toApiJson() : this.modified;}\n if (typeof this.verified !== 'undefined' && this.verified !== null) {toReturn['verified'] = 'toApiJson' in this.verified ? (this.verified as any).toApiJson() : this.verified;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.creditLimit !== 'undefined') {toReturn['creditLimit'] = this.creditLimit;}\n if (typeof this.dimension !== 'undefined') {toReturn['dimension'] = this.dimension;}\n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.end !== 'undefined' && this.end !== null) {toReturn['end'] = 'toApiJson' in this.end ? (this.end as any).toApiJson() : this.end;}\n if (typeof this.subscriptionUpdateStatus !== 'undefined') {toReturn['subscriptionUpdateStatus'] = this.subscriptionUpdateStatus;}\n return toReturn;\n }\n}\n\nexport class GetMultiContractsResponseContractsEntry implements i.GetMultiContractsResponseContractsEntryInterface {\n key: string;\n value: Contract;\n\n static fromProto(proto: any): GetMultiContractsResponseContractsEntry {\n let m = new GetMultiContractsResponseContractsEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = Contract.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiContractsResponseContractsEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class CreateContractRequest implements i.CreateContractRequestInterface {\n merchantId: string;\n currencyCode: string;\n\n static fromProto(proto: any): CreateContractRequest {\n let m = new CreateContractRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateContractRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n return toReturn;\n }\n}\n\nexport class CreateContractResponse implements i.CreateContractResponseInterface {\n contract: Contract;\n\n static fromProto(proto: any): CreateContractResponse {\n let m = new CreateContractResponse();\n m = Object.assign(m, proto);\n if (proto.contract) {m.contract = Contract.fromProto(proto.contract);}\n return m;\n }\n\n constructor(kwargs?: i.CreateContractResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.contract !== 'undefined' && this.contract !== null) {toReturn['contract'] = 'toApiJson' in this.contract ? (this.contract as any).toApiJson() : this.contract;}\n return toReturn;\n }\n}\n\nexport class GetContractRequest implements i.GetContractRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): GetContractRequest {\n let m = new GetContractRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetContractRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetContractResponse implements i.GetContractResponseInterface {\n contract: Contract;\n\n static fromProto(proto: any): GetContractResponse {\n let m = new GetContractResponse();\n m = Object.assign(m, proto);\n if (proto.contract) {m.contract = Contract.fromProto(proto.contract);}\n return m;\n }\n\n constructor(kwargs?: i.GetContractResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.contract !== 'undefined' && this.contract !== null) {toReturn['contract'] = 'toApiJson' in this.contract ? (this.contract as any).toApiJson() : this.contract;}\n return toReturn;\n }\n}\n\nexport class GetMultiContractsRequest implements i.GetMultiContractsRequestInterface {\n merchantIds: string[];\n\n static fromProto(proto: any): GetMultiContractsRequest {\n let m = new GetMultiContractsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiContractsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantIds !== 'undefined') {toReturn['merchantIds'] = this.merchantIds;}\n return toReturn;\n }\n}\n\nexport class GetMultiContractsResponse implements i.GetMultiContractsResponseInterface {\n contracts: {[key: string]: Contract};\n\n static fromProto(proto: any): GetMultiContractsResponse {\n let m = new GetMultiContractsResponse();\n m = Object.assign(m, proto);\n if (proto.contracts) {m.contracts = Object.keys(proto.contracts).reduce<any>((obj, k) => { obj[k] = Contract.fromProto(proto.contracts[k]); return obj; }, {});}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiContractsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.contracts !== 'undefined' && this.contracts !== null) {toReturn['contracts'] = 'toApiJson' in this.contracts ? (this.contracts as any).toApiJson() : this.contracts;}\n return toReturn;\n }\n}\n\nexport class ListContractsRequest implements i.ListContractsRequestInterface {\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListContractsRequest {\n let m = new ListContractsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListContractsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListContractsResponse implements i.ListContractsResponseInterface {\n contracts: Contract[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListContractsResponse {\n let m = new ListContractsResponse();\n m = Object.assign(m, proto);\n if (proto.contracts) {m.contracts = proto.contracts.map(Contract.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListContractsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.contracts !== 'undefined' && this.contracts !== null) {toReturn['contracts'] = 'toApiJson' in this.contracts ? (this.contracts as any).toApiJson() : this.contracts;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class UpdateContractRequestMutation implements i.UpdateContractRequestMutationInterface {\n netD: number;\n currencyCode: string;\n status: string;\n dimension: string;\n signed: Date;\n activated: Date;\n end: Date;\n modified: Date;\n creditLimit: number;\n subscriptionId: string;\n\n static fromProto(proto: any): UpdateContractRequestMutation {\n let m = new UpdateContractRequestMutation();\n m = Object.assign(m, proto);\n if (proto.netD) {m.netD = parseInt(proto.netD, 10);}\n if (proto.signed) {m.signed = new Date(proto.signed);}\n if (proto.activated) {m.activated = new Date(proto.activated);}\n if (proto.end) {m.end = new Date(proto.end);}\n if (proto.modified) {m.modified = new Date(proto.modified);}\n if (proto.creditLimit) {m.creditLimit = parseInt(proto.creditLimit, 10);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateContractRequestMutationInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.netD !== 'undefined') {toReturn['netD'] = this.netD;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.dimension !== 'undefined') {toReturn['dimension'] = this.dimension;}\n if (typeof this.signed !== 'undefined' && this.signed !== null) {toReturn['signed'] = 'toApiJson' in this.signed ? (this.signed as any).toApiJson() : this.signed;}\n if (typeof this.activated !== 'undefined' && this.activated !== null) {toReturn['activated'] = 'toApiJson' in this.activated ? (this.activated as any).toApiJson() : this.activated;}\n if (typeof this.end !== 'undefined' && this.end !== null) {toReturn['end'] = 'toApiJson' in this.end ? (this.end as any).toApiJson() : this.end;}\n if (typeof this.modified !== 'undefined' && this.modified !== null) {toReturn['modified'] = 'toApiJson' in this.modified ? (this.modified as any).toApiJson() : this.modified;}\n if (typeof this.creditLimit !== 'undefined') {toReturn['creditLimit'] = this.creditLimit;}\n if (typeof this.subscriptionId !== 'undefined') {toReturn['subscriptionId'] = this.subscriptionId;}\n return toReturn;\n }\n}\n\nexport class ResetContractPricingRequest implements i.ResetContractPricingRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): ResetContractPricingRequest {\n let m = new ResetContractPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ResetContractPricingRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class UpdateContractRequest implements i.UpdateContractRequestInterface {\n merchantId: string;\n mutations: UpdateContractRequestMutation[];\n\n static fromProto(proto: any): UpdateContractRequest {\n let m = new UpdateContractRequest();\n m = Object.assign(m, proto);\n if (proto.mutations) {m.mutations = proto.mutations.map(UpdateContractRequestMutation.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateContractRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {toReturn['mutations'] = 'toApiJson' in this.mutations ? (this.mutations as any).toApiJson() : this.mutations;}\n return toReturn;\n }\n}\n\nexport class UpdateContractResponse implements i.UpdateContractResponseInterface {\n contract: Contract;\n\n static fromProto(proto: any): UpdateContractResponse {\n let m = new UpdateContractResponse();\n m = Object.assign(m, proto);\n if (proto.contract) {m.contract = Contract.fromProto(proto.contract);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateContractResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.contract !== 'undefined' && this.contract !== null) {toReturn['contract'] = 'toApiJson' in this.contract ? (this.contract as any).toApiJson() : this.contract;}\n return toReturn;\n }\n}\n\nexport class UpdateContractSubscriptionRequest implements i.UpdateContractSubscriptionRequestInterface {\n merchantId: string;\n subscriptionId: string;\n frequency: e.Frequency;\n\n static fromProto(proto: any): UpdateContractSubscriptionRequest {\n let m = new UpdateContractSubscriptionRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateContractSubscriptionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.subscriptionId !== 'undefined') {toReturn['subscriptionId'] = this.subscriptionId;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class CustomerSummary implements i.CustomerSummaryInterface {\n customerId: string;\n purchaseItemQuantity: number;\n purchaseItemTotal: number;\n currency: e.Currency;\n\n static fromProto(proto: any): CustomerSummary {\n let m = new CustomerSummary();\n m = Object.assign(m, proto);\n if (proto.purchaseItemQuantity) {m.purchaseItemQuantity = parseInt(proto.purchaseItemQuantity, 10);}\n if (proto.purchaseItemTotal) {m.purchaseItemTotal = parseInt(proto.purchaseItemTotal, 10);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n return m;\n }\n\n constructor(kwargs?: i.CustomerSummaryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.purchaseItemQuantity !== 'undefined') {toReturn['purchaseItemQuantity'] = this.purchaseItemQuantity;}\n if (typeof this.purchaseItemTotal !== 'undefined') {toReturn['purchaseItemTotal'] = this.purchaseItemTotal;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n return toReturn;\n }\n}\n\nexport class GetMultiCustomerSummariesRequest implements i.GetMultiCustomerSummariesRequestInterface {\n customerIds: string[];\n merchantId: string;\n periodStart: Date;\n periodEnd: Date;\n\n static fromProto(proto: any): GetMultiCustomerSummariesRequest {\n let m = new GetMultiCustomerSummariesRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {m.periodStart = new Date(proto.periodStart);}\n if (proto.periodEnd) {m.periodEnd = new Date(proto.periodEnd);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiCustomerSummariesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.customerIds !== 'undefined') {toReturn['customerIds'] = this.customerIds;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {toReturn['periodStart'] = 'toApiJson' in this.periodStart ? (this.periodStart as any).toApiJson() : this.periodStart;}\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? (this.periodEnd as any).toApiJson() : this.periodEnd;}\n return toReturn;\n }\n}\n\nexport class GetMultiCustomerSummariesResponse implements i.GetMultiCustomerSummariesResponseInterface {\n customerSummaries: CustomerSummary[];\n\n static fromProto(proto: any): GetMultiCustomerSummariesResponse {\n let m = new GetMultiCustomerSummariesResponse();\n m = Object.assign(m, proto);\n if (proto.customerSummaries) {m.customerSummaries = proto.customerSummaries.map(CustomerSummary.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiCustomerSummariesResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.customerSummaries !== 'undefined' && this.customerSummaries !== null) {toReturn['customerSummaries'] = 'toApiJson' in this.customerSummaries ? (this.customerSummaries as any).toApiJson() : this.customerSummaries;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class BankAccount implements i.BankAccountInterface {\n id: string;\n accountHolderName: string;\n bankName: string;\n country: string;\n currency: string;\n routingNumber: string;\n last4: string;\n defaultForCurrency: boolean;\n\n static fromProto(proto: any): BankAccount {\n let m = new BankAccount();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.BankAccountInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.accountHolderName !== 'undefined') {toReturn['accountHolderName'] = this.accountHolderName;}\n if (typeof this.bankName !== 'undefined') {toReturn['bankName'] = this.bankName;}\n if (typeof this.country !== 'undefined') {toReturn['country'] = this.country;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.routingNumber !== 'undefined') {toReturn['routingNumber'] = this.routingNumber;}\n if (typeof this.last4 !== 'undefined') {toReturn['last4'] = this.last4;}\n if (typeof this.defaultForCurrency !== 'undefined') {toReturn['defaultForCurrency'] = this.defaultForCurrency;}\n return toReturn;\n }\n}\n\nexport class CreateStripeExternalAccountRequest implements i.CreateStripeExternalAccountRequestInterface {\n merchantId: string;\n stripeToken: string;\n\n static fromProto(proto: any): CreateStripeExternalAccountRequest {\n let m = new CreateStripeExternalAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateStripeExternalAccountRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.stripeToken !== 'undefined') {toReturn['stripeToken'] = this.stripeToken;}\n return toReturn;\n }\n}\n\nexport class DeleteBankAccountRequest implements i.DeleteBankAccountRequestInterface {\n merchantId: string;\n bankAccountId: string;\n\n static fromProto(proto: any): DeleteBankAccountRequest {\n let m = new DeleteBankAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeleteBankAccountRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.bankAccountId !== 'undefined') {toReturn['bankAccountId'] = this.bankAccountId;}\n return toReturn;\n }\n}\n\nexport class ListBankAccountsRequest implements i.ListBankAccountsRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): ListBankAccountsRequest {\n let m = new ListBankAccountsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ListBankAccountsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class ListBankAccountsResponse implements i.ListBankAccountsResponseInterface {\n bankAccount: BankAccount[];\n\n static fromProto(proto: any): ListBankAccountsResponse {\n let m = new ListBankAccountsResponse();\n m = Object.assign(m, proto);\n if (proto.bankAccount) {m.bankAccount = proto.bankAccount.map(BankAccount.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListBankAccountsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.bankAccount !== 'undefined' && this.bankAccount !== null) {toReturn['bankAccount'] = 'toApiJson' in this.bankAccount ? (this.bankAccount as any).toApiJson() : this.bankAccount;}\n return toReturn;\n }\n}\n\nexport class SetDefaultBankAccountRequest implements i.SetDefaultBankAccountRequestInterface {\n merchantId: string;\n bankAccountId: string;\n\n static fromProto(proto: any): SetDefaultBankAccountRequest {\n let m = new SetDefaultBankAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SetDefaultBankAccountRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.bankAccountId !== 'undefined') {toReturn['bankAccountId'] = this.bankAccountId;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedResponseMetadata, PagedRequestOptions } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class ProductSummaryDiscount implements i.ProductSummaryDiscountInterface {\n type: e.ProductSummaryDiscountDiscountType;\n value: number;\n totalAmount: number;\n description: string;\n resetEachPeriod: boolean;\n\n static fromProto(proto: any): ProductSummaryDiscount {\n let m = new ProductSummaryDiscount();\n m = Object.assign(m, proto);\n if (proto.type) {m.type = enumStringToValue<e.ProductSummaryDiscountDiscountType>(e.ProductSummaryDiscountDiscountType, proto.type);}\n if (proto.value) {m.value = parseInt(proto.value, 10);}\n if (proto.totalAmount) {m.totalAmount = parseInt(proto.totalAmount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ProductSummaryDiscountInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.value !== 'undefined') {toReturn['value'] = this.value;}\n if (typeof this.totalAmount !== 'undefined') {toReturn['totalAmount'] = this.totalAmount;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.resetEachPeriod !== 'undefined') {toReturn['resetEachPeriod'] = this.resetEachPeriod;}\n return toReturn;\n }\n}\n\nexport class ListSubscriptionRetentionRequestFilters implements i.ListSubscriptionRetentionRequestFiltersInterface {\n start: Date;\n end: Date;\n\n static fromProto(proto: any): ListSubscriptionRetentionRequestFilters {\n let m = new ListSubscriptionRetentionRequestFilters();\n m = Object.assign(m, proto);\n if (proto.start) {m.start = new Date(proto.start);}\n if (proto.end) {m.end = new Date(proto.end);}\n return m;\n }\n\n constructor(kwargs?: i.ListSubscriptionRetentionRequestFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.start !== 'undefined' && this.start !== null) {toReturn['start'] = 'toApiJson' in this.start ? (this.start as any).toApiJson() : this.start;}\n if (typeof this.end !== 'undefined' && this.end !== null) {toReturn['end'] = 'toApiJson' in this.end ? (this.end as any).toApiJson() : this.end;}\n return toReturn;\n }\n}\n\nexport class GetProductSummariesTotalRequest implements i.GetProductSummariesTotalRequestInterface {\n merchantId: string;\n startDate: Date;\n endDate: Date;\n\n static fromProto(proto: any): GetProductSummariesTotalRequest {\n let m = new GetProductSummariesTotalRequest();\n m = Object.assign(m, proto);\n if (proto.startDate) {m.startDate = new Date(proto.startDate);}\n if (proto.endDate) {m.endDate = new Date(proto.endDate);}\n return m;\n }\n\n constructor(kwargs?: i.GetProductSummariesTotalRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {toReturn['startDate'] = 'toApiJson' in this.startDate ? (this.startDate as any).toApiJson() : this.startDate;}\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {toReturn['endDate'] = 'toApiJson' in this.endDate ? (this.endDate as any).toApiJson() : this.endDate;}\n return toReturn;\n }\n}\n\nexport class GetProductSummariesTotalResponse implements i.GetProductSummariesTotalResponseInterface {\n totalAmount: number;\n\n static fromProto(proto: any): GetProductSummariesTotalResponse {\n let m = new GetProductSummariesTotalResponse();\n m = Object.assign(m, proto);\n if (proto.totalAmount) {m.totalAmount = parseInt(proto.totalAmount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.GetProductSummariesTotalResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.totalAmount !== 'undefined') {toReturn['totalAmount'] = this.totalAmount;}\n return toReturn;\n }\n}\n\nexport class ListProductSummariesRequest implements i.ListProductSummariesRequestInterface {\n merchantId: string;\n startDate: Date;\n endDate: Date;\n cursor: string;\n pageSize: number;\n skus: string[];\n\n static fromProto(proto: any): ListProductSummariesRequest {\n let m = new ListProductSummariesRequest();\n m = Object.assign(m, proto);\n if (proto.startDate) {m.startDate = new Date(proto.startDate);}\n if (proto.endDate) {m.endDate = new Date(proto.endDate);}\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ListProductSummariesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {toReturn['startDate'] = 'toApiJson' in this.startDate ? (this.startDate as any).toApiJson() : this.startDate;}\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {toReturn['endDate'] = 'toApiJson' in this.endDate ? (this.endDate as any).toApiJson() : this.endDate;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.skus !== 'undefined') {toReturn['skus'] = this.skus;}\n return toReturn;\n }\n}\n\nexport class ListProductSummariesResponse implements i.ListProductSummariesResponseInterface {\n results: ProductSummary[];\n nextCursor: string;\n hasMore: boolean;\n totalResults: number;\n\n static fromProto(proto: any): ListProductSummariesResponse {\n let m = new ListProductSummariesResponse();\n m = Object.assign(m, proto);\n if (proto.results) {m.results = proto.results.map(ProductSummary.fromProto);}\n if (proto.totalResults) {m.totalResults = parseInt(proto.totalResults, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ListProductSummariesResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.results !== 'undefined' && this.results !== null) {toReturn['results'] = 'toApiJson' in this.results ? (this.results as any).toApiJson() : this.results;}\n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n if (typeof this.totalResults !== 'undefined') {toReturn['totalResults'] = this.totalResults;}\n return toReturn;\n }\n}\n\nexport class ListSubscriptionRetentionByGroupResponse implements i.ListSubscriptionRetentionByGroupResponseInterface {\n metricsByGroup: ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListSubscriptionRetentionByGroupResponse {\n let m = new ListSubscriptionRetentionByGroupResponse();\n m = Object.assign(m, proto);\n if (proto.metricsByGroup) {m.metricsByGroup = proto.metricsByGroup.map(ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListSubscriptionRetentionByGroupResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.metricsByGroup !== 'undefined' && this.metricsByGroup !== null) {toReturn['metricsByGroup'] = 'toApiJson' in this.metricsByGroup ? (this.metricsByGroup as any).toApiJson() : this.metricsByGroup;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class ListSubscriptionRetentionBySKUResponse implements i.ListSubscriptionRetentionBySKUResponseInterface {\n subscriptionMetrics: RetentionMetrics[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListSubscriptionRetentionBySKUResponse {\n let m = new ListSubscriptionRetentionBySKUResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptionMetrics) {m.subscriptionMetrics = proto.subscriptionMetrics.map(RetentionMetrics.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListSubscriptionRetentionBySKUResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.subscriptionMetrics !== 'undefined' && this.subscriptionMetrics !== null) {toReturn['subscriptionMetrics'] = 'toApiJson' in this.subscriptionMetrics ? (this.subscriptionMetrics as any).toApiJson() : this.subscriptionMetrics;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class ListSubscriptionRetentionRequest implements i.ListSubscriptionRetentionRequestInterface {\n merchantId: string;\n filters: ListSubscriptionRetentionRequestFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListSubscriptionRetentionRequest {\n let m = new ListSubscriptionRetentionRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListSubscriptionRetentionRequestFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListSubscriptionRetentionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class Pricing implements i.PricingInterface {\n type: e.PricingRuleType;\n rules: PricingRule[];\n\n static fromProto(proto: any): Pricing {\n let m = new Pricing();\n m = Object.assign(m, proto);\n if (proto.type) {m.type = enumStringToValue<e.PricingRuleType>(e.PricingRuleType, proto.type);}\n if (proto.rules) {m.rules = proto.rules.map(PricingRule.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.PricingInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.rules !== 'undefined' && this.rules !== null) {toReturn['rules'] = 'toApiJson' in this.rules ? (this.rules as any).toApiJson() : this.rules;}\n return toReturn;\n }\n}\n\nexport class ProductSummary implements i.ProductSummaryInterface {\n sku: string;\n productName: string;\n totalQuantity: number;\n totalAmount: number;\n totalDiscount: number;\n pricing: Pricing;\n discounts: ProductSummaryDiscount[];\n billingStrategy: e.ProductSummaryBillingStrategy;\n productType: e.ProductSummaryProductType;\n frequency: e.Frequency;\n proratedPercent: number;\n volumeCommitment: number;\n setupFee: number;\n\n static fromProto(proto: any): ProductSummary {\n let m = new ProductSummary();\n m = Object.assign(m, proto);\n if (proto.totalQuantity) {m.totalQuantity = parseInt(proto.totalQuantity, 10);}\n if (proto.totalAmount) {m.totalAmount = parseInt(proto.totalAmount, 10);}\n if (proto.totalDiscount) {m.totalDiscount = parseInt(proto.totalDiscount, 10);}\n if (proto.pricing) {m.pricing = Pricing.fromProto(proto.pricing);}\n if (proto.discounts) {m.discounts = proto.discounts.map(ProductSummaryDiscount.fromProto);}\n if (proto.billingStrategy) {m.billingStrategy = enumStringToValue<e.ProductSummaryBillingStrategy>(e.ProductSummaryBillingStrategy, proto.billingStrategy);}\n if (proto.productType) {m.productType = enumStringToValue<e.ProductSummaryProductType>(e.ProductSummaryProductType, proto.productType);}\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.volumeCommitment) {m.volumeCommitment = parseInt(proto.volumeCommitment, 10);}\n if (proto.setupFee) {m.setupFee = parseInt(proto.setupFee, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ProductSummaryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.productName !== 'undefined') {toReturn['productName'] = this.productName;}\n if (typeof this.totalQuantity !== 'undefined') {toReturn['totalQuantity'] = this.totalQuantity;}\n if (typeof this.totalAmount !== 'undefined') {toReturn['totalAmount'] = this.totalAmount;}\n if (typeof this.totalDiscount !== 'undefined') {toReturn['totalDiscount'] = this.totalDiscount;}\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {toReturn['pricing'] = 'toApiJson' in this.pricing ? (this.pricing as any).toApiJson() : this.pricing;}\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {toReturn['discounts'] = 'toApiJson' in this.discounts ? (this.discounts as any).toApiJson() : this.discounts;}\n if (typeof this.billingStrategy !== 'undefined') {toReturn['billingStrategy'] = this.billingStrategy;}\n if (typeof this.productType !== 'undefined') {toReturn['productType'] = this.productType;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.proratedPercent !== 'undefined') {toReturn['proratedPercent'] = this.proratedPercent;}\n if (typeof this.volumeCommitment !== 'undefined') {toReturn['volumeCommitment'] = this.volumeCommitment;}\n if (typeof this.setupFee !== 'undefined') {toReturn['setupFee'] = this.setupFee;}\n return toReturn;\n }\n}\n\nexport class RetentionMetrics implements i.RetentionMetricsInterface {\n sku: string;\n productName: string;\n startingCount: number;\n activations: number;\n deactivations: number;\n churn: number;\n retention: number;\n\n static fromProto(proto: any): RetentionMetrics {\n let m = new RetentionMetrics();\n m = Object.assign(m, proto);\n if (proto.startingCount) {m.startingCount = parseInt(proto.startingCount, 10);}\n if (proto.activations) {m.activations = parseInt(proto.activations, 10);}\n if (proto.deactivations) {m.deactivations = parseInt(proto.deactivations, 10);}\n return m;\n }\n\n constructor(kwargs?: i.RetentionMetricsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.productName !== 'undefined') {toReturn['productName'] = this.productName;}\n if (typeof this.startingCount !== 'undefined') {toReturn['startingCount'] = this.startingCount;}\n if (typeof this.activations !== 'undefined') {toReturn['activations'] = this.activations;}\n if (typeof this.deactivations !== 'undefined') {toReturn['deactivations'] = this.deactivations;}\n if (typeof this.churn !== 'undefined') {toReturn['churn'] = this.churn;}\n if (typeof this.retention !== 'undefined') {toReturn['retention'] = this.retention;}\n return toReturn;\n }\n}\n\nexport class PricingRule implements i.PricingRuleInterface {\n min: number;\n max: number;\n units: number;\n unitPrice: number;\n totalAmount: number;\n\n static fromProto(proto: any): PricingRule {\n let m = new PricingRule();\n m = Object.assign(m, proto);\n if (proto.min) {m.min = parseInt(proto.min, 10);}\n if (proto.max) {m.max = parseInt(proto.max, 10);}\n if (proto.units) {m.units = parseInt(proto.units, 10);}\n if (proto.unitPrice) {m.unitPrice = parseInt(proto.unitPrice, 10);}\n if (proto.totalAmount) {m.totalAmount = parseInt(proto.totalAmount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.PricingRuleInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.min !== 'undefined') {toReturn['min'] = this.min;}\n if (typeof this.max !== 'undefined') {toReturn['max'] = this.max;}\n if (typeof this.units !== 'undefined') {toReturn['units'] = this.units;}\n if (typeof this.unitPrice !== 'undefined') {toReturn['unitPrice'] = this.unitPrice;}\n if (typeof this.totalAmount !== 'undefined') {toReturn['totalAmount'] = this.totalAmount;}\n return toReturn;\n }\n}\n\nexport class ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup implements i.ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroupInterface {\n groupId: string;\n subscriptionMetrics: RetentionMetrics[];\n\n static fromProto(proto: any): ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup {\n let m = new ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup();\n m = Object.assign(m, proto);\n if (proto.subscriptionMetrics) {m.subscriptionMetrics = proto.subscriptionMetrics.map(RetentionMetrics.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroupInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.groupId !== 'undefined') {toReturn['groupId'] = this.groupId;}\n if (typeof this.subscriptionMetrics !== 'undefined' && this.subscriptionMetrics !== null) {toReturn['subscriptionMetrics'] = 'toApiJson' in this.subscriptionMetrics ? (this.subscriptionMetrics as any).toApiJson() : this.subscriptionMetrics;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class CreateDiscountRequest implements i.CreateDiscountRequestInterface {\n merchantId: string;\n sku: string;\n discountType: e.DiscountType;\n amount: number;\n start: Date;\n end: Date;\n resetEachPeriod: boolean;\n description: string;\n\n static fromProto(proto: any): CreateDiscountRequest {\n let m = new CreateDiscountRequest();\n m = Object.assign(m, proto);\n if (proto.discountType) {m.discountType = enumStringToValue<e.DiscountType>(e.DiscountType, proto.discountType);}\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.start) {m.start = new Date(proto.start);}\n if (proto.end) {m.end = new Date(proto.end);}\n return m;\n }\n\n constructor(kwargs?: i.CreateDiscountRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.discountType !== 'undefined') {toReturn['discountType'] = this.discountType;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.start !== 'undefined' && this.start !== null) {toReturn['start'] = 'toApiJson' in this.start ? (this.start as any).toApiJson() : this.start;}\n if (typeof this.end !== 'undefined' && this.end !== null) {toReturn['end'] = 'toApiJson' in this.end ? (this.end as any).toApiJson() : this.end;}\n if (typeof this.resetEachPeriod !== 'undefined') {toReturn['resetEachPeriod'] = this.resetEachPeriod;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n return toReturn;\n }\n}\n\nexport class Discount implements i.DiscountInterface {\n discountId: number;\n discountType: e.DiscountType;\n amount: number;\n start: Date;\n end: Date;\n resetEachPeriod: boolean;\n merchantId: string;\n created: Date;\n updated: Date;\n sku: string;\n id: string;\n description: string;\n\n static fromProto(proto: any): Discount {\n let m = new Discount();\n m = Object.assign(m, proto);\n if (proto.discountId) {m.discountId = parseInt(proto.discountId, 10);}\n if (proto.discountType) {m.discountType = enumStringToValue<e.DiscountType>(e.DiscountType, proto.discountType);}\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.start) {m.start = new Date(proto.start);}\n if (proto.end) {m.end = new Date(proto.end);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n return m;\n }\n\n constructor(kwargs?: i.DiscountInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.discountId !== 'undefined') {toReturn['discountId'] = this.discountId;}\n if (typeof this.discountType !== 'undefined') {toReturn['discountType'] = this.discountType;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.start !== 'undefined' && this.start !== null) {toReturn['start'] = 'toApiJson' in this.start ? (this.start as any).toApiJson() : this.start;}\n if (typeof this.end !== 'undefined' && this.end !== null) {toReturn['end'] = 'toApiJson' in this.end ? (this.end as any).toApiJson() : this.end;}\n if (typeof this.resetEachPeriod !== 'undefined') {toReturn['resetEachPeriod'] = this.resetEachPeriod;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n return toReturn;\n }\n}\n\nexport class ExpireDiscountRequest implements i.ExpireDiscountRequestInterface {\n merchantId: string;\n id: string;\n\n static fromProto(proto: any): ExpireDiscountRequest {\n let m = new ExpireDiscountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ExpireDiscountRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class ListDiscountsRequestFilters implements i.ListDiscountsRequestFiltersInterface {\n merchantId: string;\n expiry: Date;\n skus: string[];\n\n static fromProto(proto: any): ListDiscountsRequestFilters {\n let m = new ListDiscountsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.expiry) {m.expiry = new Date(proto.expiry);}\n return m;\n }\n\n constructor(kwargs?: i.ListDiscountsRequestFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {toReturn['expiry'] = 'toApiJson' in this.expiry ? (this.expiry as any).toApiJson() : this.expiry;}\n if (typeof this.skus !== 'undefined') {toReturn['skus'] = this.skus;}\n return toReturn;\n }\n}\n\nexport class ListDiscountsRequest implements i.ListDiscountsRequestInterface {\n filters: ListDiscountsRequestFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListDiscountsRequest {\n let m = new ListDiscountsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListDiscountsRequestFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListDiscountsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListDiscountsResponse implements i.ListDiscountsResponseInterface {\n discounts: Discount[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListDiscountsResponse {\n let m = new ListDiscountsResponse();\n m = Object.assign(m, proto);\n if (proto.discounts) {m.discounts = proto.discounts.map(Discount.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListDiscountsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {toReturn['discounts'] = 'toApiJson' in this.discounts ? (this.discounts as any).toApiJson() : this.discounts;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class UpdateDiscountRequest implements i.UpdateDiscountRequestInterface {\n merchantId: string;\n id: string;\n discountType: e.DiscountType;\n amount: number;\n start: Date;\n end: Date;\n resetEachPeriod: boolean;\n description: string;\n\n static fromProto(proto: any): UpdateDiscountRequest {\n let m = new UpdateDiscountRequest();\n m = Object.assign(m, proto);\n if (proto.discountType) {m.discountType = enumStringToValue<e.DiscountType>(e.DiscountType, proto.discountType);}\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.start) {m.start = new Date(proto.start);}\n if (proto.end) {m.end = new Date(proto.end);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateDiscountRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.discountType !== 'undefined') {toReturn['discountType'] = this.discountType;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.start !== 'undefined' && this.start !== null) {toReturn['start'] = 'toApiJson' in this.start ? (this.start as any).toApiJson() : this.start;}\n if (typeof this.end !== 'undefined' && this.end !== null) {toReturn['end'] = 'toApiJson' in this.end ? (this.end as any).toApiJson() : this.end;}\n if (typeof this.resetEachPeriod !== 'undefined') {toReturn['resetEachPeriod'] = this.resetEachPeriod;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AppliedTaxRate implements i.AppliedTaxRateInterface {\n amount: number;\n taxRateId: string;\n name: string;\n percentage: number;\n\n static fromProto(proto: any): AppliedTaxRate {\n let m = new AppliedTaxRate();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.AppliedTaxRateInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.taxRateId !== 'undefined') {toReturn['taxRateId'] = this.taxRateId;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.percentage !== 'undefined') {toReturn['percentage'] = this.percentage;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class FieldMask implements i.FieldMaskInterface {\n paths: string[];\n\n static fromProto(proto: any): FieldMask {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.FieldMaskInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.paths !== 'undefined') {toReturn['paths'] = this.paths;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class ArchiveTaxRequest implements i.ArchiveTaxRequestInterface {\n merchantId: string;\n id: string;\n\n static fromProto(proto: any): ArchiveTaxRequest {\n let m = new ArchiveTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ArchiveTaxRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class CalculateTaxRequest implements i.CalculateTaxRequestInterface {\n merchantId: string;\n customerId: string;\n amount: number;\n\n static fromProto(proto: any): CalculateTaxRequest {\n let m = new CalculateTaxRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.CalculateTaxRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n return toReturn;\n }\n}\n\nexport class CalculateTaxResponse implements i.CalculateTaxResponseInterface {\n taxableAmount: number;\n taxRates: TaxRate[];\n\n static fromProto(proto: any): CalculateTaxResponse {\n let m = new CalculateTaxResponse();\n m = Object.assign(m, proto);\n if (proto.taxableAmount) {m.taxableAmount = parseInt(proto.taxableAmount, 10);}\n if (proto.taxRates) {m.taxRates = proto.taxRates.map(TaxRate.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.CalculateTaxResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.taxableAmount !== 'undefined') {toReturn['taxableAmount'] = this.taxableAmount;}\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {toReturn['taxRates'] = 'toApiJson' in this.taxRates ? (this.taxRates as any).toApiJson() : this.taxRates;}\n return toReturn;\n }\n}\n\nexport class CreateTaxRequest implements i.CreateTaxRequestInterface {\n merchantId: string;\n countryCode: string;\n stateCode: string;\n name: string;\n description: string;\n percentage: number;\n accountingSystemId: string;\n\n static fromProto(proto: any): CreateTaxRequest {\n let m = new CreateTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateTaxRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.countryCode !== 'undefined') {toReturn['countryCode'] = this.countryCode;}\n if (typeof this.stateCode !== 'undefined') {toReturn['stateCode'] = this.stateCode;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.percentage !== 'undefined') {toReturn['percentage'] = this.percentage;}\n if (typeof this.accountingSystemId !== 'undefined') {toReturn['accountingSystemId'] = this.accountingSystemId;}\n return toReturn;\n }\n}\n\nexport class ListTaxRequestFilters implements i.ListTaxRequestFiltersInterface {\n merchantId: string;\n includeArchived: boolean;\n\n static fromProto(proto: any): ListTaxRequestFilters {\n let m = new ListTaxRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ListTaxRequestFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.includeArchived !== 'undefined') {toReturn['includeArchived'] = this.includeArchived;}\n return toReturn;\n }\n}\n\nexport class GetMultiTaxRequest implements i.GetMultiTaxRequestInterface {\n merchantId: string;\n ids: string[];\n\n static fromProto(proto: any): GetMultiTaxRequest {\n let m = new GetMultiTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiTaxRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.ids !== 'undefined') {toReturn['ids'] = this.ids;}\n return toReturn;\n }\n}\n\nexport class GetMultiTaxResponse implements i.GetMultiTaxResponseInterface {\n taxRates: TaxRate[];\n\n static fromProto(proto: any): GetMultiTaxResponse {\n let m = new GetMultiTaxResponse();\n m = Object.assign(m, proto);\n if (proto.taxRates) {m.taxRates = proto.taxRates.map(TaxRate.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiTaxResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {toReturn['taxRates'] = 'toApiJson' in this.taxRates ? (this.taxRates as any).toApiJson() : this.taxRates;}\n return toReturn;\n }\n}\n\nexport class ListTaxRequest implements i.ListTaxRequestInterface {\n filters: ListTaxRequestFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListTaxRequest {\n let m = new ListTaxRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListTaxRequestFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListTaxRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListTaxResponse implements i.ListTaxResponseInterface {\n taxRates: TaxRate[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListTaxResponse {\n let m = new ListTaxResponse();\n m = Object.assign(m, proto);\n if (proto.taxRates) {m.taxRates = proto.taxRates.map(TaxRate.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListTaxResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {toReturn['taxRates'] = 'toApiJson' in this.taxRates ? (this.taxRates as any).toApiJson() : this.taxRates;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class TaxRate implements i.TaxRateInterface {\n id: string;\n merchantId: string;\n countryCode: string;\n stateCode: string;\n name: string;\n description: string;\n percentage: number;\n accountingSystemId: string;\n archived: Date;\n\n static fromProto(proto: any): TaxRate {\n let m = new TaxRate();\n m = Object.assign(m, proto);\n if (proto.archived) {m.archived = new Date(proto.archived);}\n return m;\n }\n\n constructor(kwargs?: i.TaxRateInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.countryCode !== 'undefined') {toReturn['countryCode'] = this.countryCode;}\n if (typeof this.stateCode !== 'undefined') {toReturn['stateCode'] = this.stateCode;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.percentage !== 'undefined') {toReturn['percentage'] = this.percentage;}\n if (typeof this.accountingSystemId !== 'undefined') {toReturn['accountingSystemId'] = this.accountingSystemId;}\n if (typeof this.archived !== 'undefined' && this.archived !== null) {toReturn['archived'] = 'toApiJson' in this.archived ? (this.archived as any).toApiJson() : this.archived;}\n return toReturn;\n }\n}\n\nexport class UpdateTaxRequest implements i.UpdateTaxRequestInterface {\n merchantId: string;\n id: string;\n countryCode: string;\n stateCode: string;\n name: string;\n description: string;\n percentage: number;\n accountingSystemId: string;\n\n static fromProto(proto: any): UpdateTaxRequest {\n let m = new UpdateTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdateTaxRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.countryCode !== 'undefined') {toReturn['countryCode'] = this.countryCode;}\n if (typeof this.stateCode !== 'undefined') {toReturn['stateCode'] = this.stateCode;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.percentage !== 'undefined') {toReturn['percentage'] = this.percentage;}\n if (typeof this.accountingSystemId !== 'undefined') {toReturn['accountingSystemId'] = this.accountingSystemId;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AppliedBundle implements i.AppliedBundleInterface {\n bundleId: string;\n name: string;\n bundleItems: AppliedBundleItem[];\n hideBundleItems: boolean;\n bundleInstanceId: string;\n\n static fromProto(proto: any): AppliedBundle {\n let m = new AppliedBundle();\n m = Object.assign(m, proto);\n if (proto.bundleItems) {m.bundleItems = proto.bundleItems.map(AppliedBundleItem.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.AppliedBundleInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.bundleItems !== 'undefined' && this.bundleItems !== null) {toReturn['bundleItems'] = 'toApiJson' in this.bundleItems ? (this.bundleItems as any).toApiJson() : this.bundleItems;}\n if (typeof this.hideBundleItems !== 'undefined') {toReturn['hideBundleItems'] = this.hideBundleItems;}\n if (typeof this.bundleInstanceId !== 'undefined') {toReturn['bundleInstanceId'] = this.bundleInstanceId;}\n return toReturn;\n }\n}\n\nexport class AppliedBundleItem implements i.AppliedBundleItemInterface {\n productId: string;\n discountType: string;\n discountAmount: number;\n quantity: number;\n\n static fromProto(proto: any): AppliedBundleItem {\n let m = new AppliedBundleItem();\n m = Object.assign(m, proto);\n if (proto.discountAmount) {m.discountAmount = parseInt(proto.discountAmount, 10);}\n if (proto.quantity) {m.quantity = parseInt(proto.quantity, 10);}\n return m;\n }\n\n constructor(kwargs?: i.AppliedBundleItemInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.productId !== 'undefined') {toReturn['productId'] = this.productId;}\n if (typeof this.discountType !== 'undefined') {toReturn['discountType'] = this.discountType;}\n if (typeof this.discountAmount !== 'undefined') {toReturn['discountAmount'] = this.discountAmount;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { AppliedBundle } from './applied-bundle';\nimport { AppliedDiscount } from './applied-discount';\nimport { AppliedTaxRate } from './applied-tax-rate';\nimport { FieldMask } from './field-mask';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport { TaxRate } from './tax-rate';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AddBundleRequest implements i.AddBundleRequestInterface {\n invoiceId: string;\n merchantId: string;\n bundleId: string;\n\n static fromProto(proto: any): AddBundleRequest {\n let m = new AddBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.AddBundleRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n return toReturn;\n }\n}\n\nexport class AddBundleResponse implements i.AddBundleResponseInterface {\n invoice: Invoice;\n\n static fromProto(proto: any): AddBundleResponse {\n let m = new AddBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = Invoice.fromProto(proto.invoice);}\n return m;\n }\n\n constructor(kwargs?: i.AddBundleResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n return toReturn;\n }\n}\n\nexport class AddLineItemRequest implements i.AddLineItemRequestInterface {\n merchantId: string;\n invoiceId: string;\n sku: string;\n amount: number;\n quantity: number;\n description: string;\n taxRates: string[];\n\n static fromProto(proto: any): AddLineItemRequest {\n let m = new AddLineItemRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.AddLineItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.taxRates !== 'undefined') {toReturn['taxRates'] = this.taxRates;}\n return toReturn;\n }\n}\n\nexport class AddLineItemResponse implements i.AddLineItemResponseInterface {\n invoice: Invoice;\n\n static fromProto(proto: any): AddLineItemResponse {\n let m = new AddLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = Invoice.fromProto(proto.invoice);}\n return m;\n }\n\n constructor(kwargs?: i.AddLineItemResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n return toReturn;\n }\n}\n\nexport class ChargeInvoiceRequest implements i.ChargeInvoiceRequestInterface {\n merchantId: string;\n customerId: string;\n invoiceId: string;\n paymentMethodId: string;\n\n static fromProto(proto: any): ChargeInvoiceRequest {\n let m = new ChargeInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ChargeInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.paymentMethodId !== 'undefined') {toReturn['paymentMethodId'] = this.paymentMethodId;}\n return toReturn;\n }\n}\n\nexport class CreateInvoiceRequest implements i.CreateInvoiceRequestInterface {\n merchantId: string;\n customerId: string;\n currencyCode: string;\n orderId: string;\n\n static fromProto(proto: any): CreateInvoiceRequest {\n let m = new CreateInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n return toReturn;\n }\n}\n\nexport class CreateInvoiceResponse implements i.CreateInvoiceResponseInterface {\n invoiceId: string;\n\n static fromProto(proto: any): CreateInvoiceResponse {\n let m = new CreateInvoiceResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateInvoiceResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\nexport class InvoiceCustomerAddress implements i.InvoiceCustomerAddressInterface {\n address: string;\n city: string;\n state: string;\n zip: string;\n country: string;\n address2: string;\n\n static fromProto(proto: any): InvoiceCustomerAddress {\n let m = new InvoiceCustomerAddress();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.InvoiceCustomerAddressInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.address !== 'undefined') {toReturn['address'] = this.address;}\n if (typeof this.city !== 'undefined') {toReturn['city'] = this.city;}\n if (typeof this.state !== 'undefined') {toReturn['state'] = this.state;}\n if (typeof this.zip !== 'undefined') {toReturn['zip'] = this.zip;}\n if (typeof this.country !== 'undefined') {toReturn['country'] = this.country;}\n if (typeof this.address2 !== 'undefined') {toReturn['address2'] = this.address2;}\n return toReturn;\n }\n}\n\nexport class ListInvoicesRequestFiltersDateFilter implements i.ListInvoicesRequestFiltersDateFilterInterface {\n dateField: e.ListInvoicesRequestFiltersDateFilterDateField;\n dateLte: Date;\n dateGte: Date;\n\n static fromProto(proto: any): ListInvoicesRequestFiltersDateFilter {\n let m = new ListInvoicesRequestFiltersDateFilter();\n m = Object.assign(m, proto);\n if (proto.dateField) {m.dateField = enumStringToValue<e.ListInvoicesRequestFiltersDateFilterDateField>(e.ListInvoicesRequestFiltersDateFilterDateField, proto.dateField);}\n if (proto.dateLte) {m.dateLte = new Date(proto.dateLte);}\n if (proto.dateGte) {m.dateGte = new Date(proto.dateGte);}\n return m;\n }\n\n constructor(kwargs?: i.ListInvoicesRequestFiltersDateFilterInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.dateField !== 'undefined') {toReturn['dateField'] = this.dateField;}\n if (typeof this.dateLte !== 'undefined' && this.dateLte !== null) {toReturn['dateLte'] = 'toApiJson' in this.dateLte ? (this.dateLte as any).toApiJson() : this.dateLte;}\n if (typeof this.dateGte !== 'undefined' && this.dateGte !== null) {toReturn['dateGte'] = 'toApiJson' in this.dateGte ? (this.dateGte as any).toApiJson() : this.dateGte;}\n return toReturn;\n }\n}\n\nexport class DeleteInvoiceRequest implements i.DeleteInvoiceRequestInterface {\n merchantId: string;\n invoiceId: string;\n\n static fromProto(proto: any): DeleteInvoiceRequest {\n let m = new DeleteInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeleteInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\nexport class DeleteLineItemRequest implements i.DeleteLineItemRequestInterface {\n merchantId: string;\n invoiceId: string;\n id: string;\n\n static fromProto(proto: any): DeleteLineItemRequest {\n let m = new DeleteLineItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeleteLineItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class DeleteLineItemResponse implements i.DeleteLineItemResponseInterface {\n invoice: Invoice;\n\n static fromProto(proto: any): DeleteLineItemResponse {\n let m = new DeleteLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = Invoice.fromProto(proto.invoice);}\n return m;\n }\n\n constructor(kwargs?: i.DeleteLineItemResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n return toReturn;\n }\n}\n\nexport class DuplicateInvoiceRequest implements i.DuplicateInvoiceRequestInterface {\n merchantId: string;\n invoiceId: string;\n\n static fromProto(proto: any): DuplicateInvoiceRequest {\n let m = new DuplicateInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DuplicateInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\nexport class DuplicateInvoiceResponse implements i.DuplicateInvoiceResponseInterface {\n invoiceId: string;\n\n static fromProto(proto: any): DuplicateInvoiceResponse {\n let m = new DuplicateInvoiceResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DuplicateInvoiceResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\nexport class ListInvoicesRequestFilters implements i.ListInvoicesRequestFiltersInterface {\n merchantId: string;\n customerId: string;\n statuses: e.InvoiceStatus[];\n pastDue: boolean;\n number: string;\n dateFilter: ListInvoicesRequestFiltersDateFilter;\n\n static fromProto(proto: any): ListInvoicesRequestFilters {\n let m = new ListInvoicesRequestFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {m.statuses = proto.statuses.map((v: string) => enumStringToValue<e.InvoiceStatus>(e.InvoiceStatus, v));}\n if (proto.dateFilter) {m.dateFilter = ListInvoicesRequestFiltersDateFilter.fromProto(proto.dateFilter);}\n return m;\n }\n\n constructor(kwargs?: i.ListInvoicesRequestFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.statuses !== 'undefined') {toReturn['statuses'] = this.statuses;}\n if (typeof this.pastDue !== 'undefined') {toReturn['pastDue'] = this.pastDue;}\n if (typeof this.number !== 'undefined') {toReturn['number'] = this.number;}\n if (typeof this.dateFilter !== 'undefined' && this.dateFilter !== null) {toReturn['dateFilter'] = 'toApiJson' in this.dateFilter ? (this.dateFilter as any).toApiJson() : this.dateFilter;}\n return toReturn;\n }\n}\n\nexport class GetInvoiceRequest implements i.GetInvoiceRequestInterface {\n merchantId: string;\n invoiceId: string;\n\n static fromProto(proto: any): GetInvoiceRequest {\n let m = new GetInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\nexport class GetInvoiceResponse implements i.GetInvoiceResponseInterface {\n invoice: Invoice;\n\n static fromProto(proto: any): GetInvoiceResponse {\n let m = new GetInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = Invoice.fromProto(proto.invoice);}\n return m;\n }\n\n constructor(kwargs?: i.GetInvoiceResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n return toReturn;\n }\n}\n\nexport class Invoice implements i.InvoiceInterface {\n merchantId: string;\n id: string;\n number: string;\n customerId: string;\n status: e.InvoiceStatus;\n subtotal: number;\n total: number;\n amountPaid: number;\n issued: Date;\n due: Date;\n created: Date;\n updated: Date;\n items: InvoiceItem[];\n currency: e.Currency;\n paid: Date;\n orderId: string;\n amountTax: number;\n appliedTaxes: AppliedTaxRate[];\n defaultTaxRates: TaxRate[];\n appliedBundles: AppliedBundle[];\n amountDiscount: number;\n customerName: string;\n origin: string;\n collectionMethod: string;\n contactId: string;\n memo: string;\n voided: Date;\n defaultPaymentMethod: string;\n customerAddress: InvoiceCustomerAddress;\n externalCustomerIdentifier: string;\n\n static fromProto(proto: any): Invoice {\n let m = new Invoice();\n m = Object.assign(m, proto);\n if (proto.status) {m.status = enumStringToValue<e.InvoiceStatus>(e.InvoiceStatus, proto.status);}\n if (proto.subtotal) {m.subtotal = parseInt(proto.subtotal, 10);}\n if (proto.total) {m.total = parseInt(proto.total, 10);}\n if (proto.amountPaid) {m.amountPaid = parseInt(proto.amountPaid, 10);}\n if (proto.issued) {m.issued = new Date(proto.issued);}\n if (proto.due) {m.due = new Date(proto.due);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n if (proto.items) {m.items = proto.items.map(InvoiceItem.fromProto);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n if (proto.paid) {m.paid = new Date(proto.paid);}\n if (proto.amountTax) {m.amountTax = parseInt(proto.amountTax, 10);}\n if (proto.appliedTaxes) {m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);}\n if (proto.defaultTaxRates) {m.defaultTaxRates = proto.defaultTaxRates.map(TaxRate.fromProto);}\n if (proto.appliedBundles) {m.appliedBundles = proto.appliedBundles.map(AppliedBundle.fromProto);}\n if (proto.amountDiscount) {m.amountDiscount = parseInt(proto.amountDiscount, 10);}\n if (proto.voided) {m.voided = new Date(proto.voided);}\n if (proto.customerAddress) {m.customerAddress = InvoiceCustomerAddress.fromProto(proto.customerAddress);}\n return m;\n }\n\n constructor(kwargs?: i.InvoiceInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.number !== 'undefined') {toReturn['number'] = this.number;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.subtotal !== 'undefined') {toReturn['subtotal'] = this.subtotal;}\n if (typeof this.total !== 'undefined') {toReturn['total'] = this.total;}\n if (typeof this.amountPaid !== 'undefined') {toReturn['amountPaid'] = this.amountPaid;}\n if (typeof this.issued !== 'undefined' && this.issued !== null) {toReturn['issued'] = 'toApiJson' in this.issued ? (this.issued as any).toApiJson() : this.issued;}\n if (typeof this.due !== 'undefined' && this.due !== null) {toReturn['due'] = 'toApiJson' in this.due ? (this.due as any).toApiJson() : this.due;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.items !== 'undefined' && this.items !== null) {toReturn['items'] = 'toApiJson' in this.items ? (this.items as any).toApiJson() : this.items;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.paid !== 'undefined' && this.paid !== null) {toReturn['paid'] = 'toApiJson' in this.paid ? (this.paid as any).toApiJson() : this.paid;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.amountTax !== 'undefined') {toReturn['amountTax'] = this.amountTax;}\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? (this.appliedTaxes as any).toApiJson() : this.appliedTaxes;}\n if (typeof this.defaultTaxRates !== 'undefined' && this.defaultTaxRates !== null) {toReturn['defaultTaxRates'] = 'toApiJson' in this.defaultTaxRates ? (this.defaultTaxRates as any).toApiJson() : this.defaultTaxRates;}\n if (typeof this.appliedBundles !== 'undefined' && this.appliedBundles !== null) {toReturn['appliedBundles'] = 'toApiJson' in this.appliedBundles ? (this.appliedBundles as any).toApiJson() : this.appliedBundles;}\n if (typeof this.amountDiscount !== 'undefined') {toReturn['amountDiscount'] = this.amountDiscount;}\n if (typeof this.customerName !== 'undefined') {toReturn['customerName'] = this.customerName;}\n if (typeof this.origin !== 'undefined') {toReturn['origin'] = this.origin;}\n if (typeof this.collectionMethod !== 'undefined') {toReturn['collectionMethod'] = this.collectionMethod;}\n if (typeof this.contactId !== 'undefined') {toReturn['contactId'] = this.contactId;}\n if (typeof this.memo !== 'undefined') {toReturn['memo'] = this.memo;}\n if (typeof this.voided !== 'undefined' && this.voided !== null) {toReturn['voided'] = 'toApiJson' in this.voided ? (this.voided as any).toApiJson() : this.voided;}\n if (typeof this.defaultPaymentMethod !== 'undefined') {toReturn['defaultPaymentMethod'] = this.defaultPaymentMethod;}\n if (typeof this.customerAddress !== 'undefined' && this.customerAddress !== null) {toReturn['customerAddress'] = 'toApiJson' in this.customerAddress ? (this.customerAddress as any).toApiJson() : this.customerAddress;}\n if (typeof this.externalCustomerIdentifier !== 'undefined') {toReturn['externalCustomerIdentifier'] = this.externalCustomerIdentifier;}\n return toReturn;\n }\n}\n\nexport class InvoiceItem implements i.InvoiceItemInterface {\n id: string;\n sku: string;\n amount: number;\n quantity: number;\n description: string;\n total: number;\n appliedTaxes: AppliedTaxRate[];\n taxRates: TaxRate[];\n bundleId: string;\n discounts: AppliedDiscount[];\n subtotal: number;\n bundleInstanceId: string;\n\n static fromProto(proto: any): InvoiceItem {\n let m = new InvoiceItem();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.total) {m.total = parseInt(proto.total, 10);}\n if (proto.appliedTaxes) {m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);}\n if (proto.taxRates) {m.taxRates = proto.taxRates.map(TaxRate.fromProto);}\n if (proto.discounts) {m.discounts = proto.discounts.map(AppliedDiscount.fromProto);}\n if (proto.subtotal) {m.subtotal = parseInt(proto.subtotal, 10);}\n return m;\n }\n\n constructor(kwargs?: i.InvoiceItemInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.total !== 'undefined') {toReturn['total'] = this.total;}\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? (this.appliedTaxes as any).toApiJson() : this.appliedTaxes;}\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {toReturn['taxRates'] = 'toApiJson' in this.taxRates ? (this.taxRates as any).toApiJson() : this.taxRates;}\n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {toReturn['discounts'] = 'toApiJson' in this.discounts ? (this.discounts as any).toApiJson() : this.discounts;}\n if (typeof this.subtotal !== 'undefined') {toReturn['subtotal'] = this.subtotal;}\n if (typeof this.bundleInstanceId !== 'undefined') {toReturn['bundleInstanceId'] = this.bundleInstanceId;}\n return toReturn;\n }\n}\n\nexport class ListInvoicesRequest implements i.ListInvoicesRequestInterface {\n filters: ListInvoicesRequestFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListInvoicesRequest {\n let m = new ListInvoicesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListInvoicesRequestFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListInvoicesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListInvoicesResponse implements i.ListInvoicesResponseInterface {\n invoices: Invoice[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListInvoicesResponse {\n let m = new ListInvoicesResponse();\n m = Object.assign(m, proto);\n if (proto.invoices) {m.invoices = proto.invoices.map(Invoice.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListInvoicesResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoices !== 'undefined' && this.invoices !== null) {toReturn['invoices'] = 'toApiJson' in this.invoices ? (this.invoices as any).toApiJson() : this.invoices;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class PayInvoiceRequest implements i.PayInvoiceRequestInterface {\n merchantId: string;\n invoiceId: string;\n\n static fromProto(proto: any): PayInvoiceRequest {\n let m = new PayInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.PayInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\nexport class RemoveBundleRequest implements i.RemoveBundleRequestInterface {\n invoiceId: string;\n merchantId: string;\n bundleId: string;\n bundleInstanceId: string;\n\n static fromProto(proto: any): RemoveBundleRequest {\n let m = new RemoveBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.RemoveBundleRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n if (typeof this.bundleInstanceId !== 'undefined') {toReturn['bundleInstanceId'] = this.bundleInstanceId;}\n return toReturn;\n }\n}\n\nexport class RemoveBundleResponse implements i.RemoveBundleResponseInterface {\n invoice: Invoice;\n\n static fromProto(proto: any): RemoveBundleResponse {\n let m = new RemoveBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = Invoice.fromProto(proto.invoice);}\n return m;\n }\n\n constructor(kwargs?: i.RemoveBundleResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n return toReturn;\n }\n}\n\nexport class SendInvoiceRequest implements i.SendInvoiceRequestInterface {\n merchantId: string;\n invoiceId: string;\n emailAddresses: string[];\n languageCode: string;\n\n static fromProto(proto: any): SendInvoiceRequest {\n let m = new SendInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SendInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.emailAddresses !== 'undefined') {toReturn['emailAddresses'] = this.emailAddresses;}\n if (typeof this.languageCode !== 'undefined') {toReturn['languageCode'] = this.languageCode;}\n return toReturn;\n }\n}\n\nexport class UpdateBundleRequest implements i.UpdateBundleRequestInterface {\n merchantId: string;\n invoiceId: string;\n bundleId: string;\n hideBundleItems: boolean;\n bundleInstanceId: string;\n\n static fromProto(proto: any): UpdateBundleRequest {\n let m = new UpdateBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdateBundleRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n if (typeof this.hideBundleItems !== 'undefined') {toReturn['hideBundleItems'] = this.hideBundleItems;}\n if (typeof this.bundleInstanceId !== 'undefined') {toReturn['bundleInstanceId'] = this.bundleInstanceId;}\n return toReturn;\n }\n}\n\nexport class UpdateBundleResponse implements i.UpdateBundleResponseInterface {\n invoice: Invoice;\n\n static fromProto(proto: any): UpdateBundleResponse {\n let m = new UpdateBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = Invoice.fromProto(proto.invoice);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateBundleResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n return toReturn;\n }\n}\n\nexport class UpdateDefaultTaxRatesRequest implements i.UpdateDefaultTaxRatesRequestInterface {\n invoiceId: string;\n merchantId: string;\n taxRateIds: string[];\n\n static fromProto(proto: any): UpdateDefaultTaxRatesRequest {\n let m = new UpdateDefaultTaxRatesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdateDefaultTaxRatesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.taxRateIds !== 'undefined') {toReturn['taxRateIds'] = this.taxRateIds;}\n return toReturn;\n }\n}\n\nexport class UpdateDefaultTaxRatesResponse implements i.UpdateDefaultTaxRatesResponseInterface {\n invoice: Invoice;\n\n static fromProto(proto: any): UpdateDefaultTaxRatesResponse {\n let m = new UpdateDefaultTaxRatesResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = Invoice.fromProto(proto.invoice);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateDefaultTaxRatesResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n return toReturn;\n }\n}\n\nexport class UpdateInvoiceRequest implements i.UpdateInvoiceRequestInterface {\n invoice: Invoice;\n fieldMask: FieldMask;\n\n static fromProto(proto: any): UpdateInvoiceRequest {\n let m = new UpdateInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = Invoice.fromProto(proto.invoice);}\n if (proto.fieldMask) {m.fieldMask = FieldMask.fromProto(proto.fieldMask);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? (this.fieldMask as any).toApiJson() : this.fieldMask;}\n return toReturn;\n }\n}\n\nexport class UpdateInvoiceResponse implements i.UpdateInvoiceResponseInterface {\n invoice: Invoice;\n\n static fromProto(proto: any): UpdateInvoiceResponse {\n let m = new UpdateInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = Invoice.fromProto(proto.invoice);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateInvoiceResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n return toReturn;\n }\n}\n\nexport class UpdateLineItemRequest implements i.UpdateLineItemRequestInterface {\n merchantId: string;\n invoiceId: string;\n id: string;\n sku: string;\n amount: number;\n quantity: number;\n description: string;\n taxRates: string[];\n\n static fromProto(proto: any): UpdateLineItemRequest {\n let m = new UpdateLineItemRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateLineItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.taxRates !== 'undefined') {toReturn['taxRates'] = this.taxRates;}\n return toReturn;\n }\n}\n\nexport class UpdateLineItemResponse implements i.UpdateLineItemResponseInterface {\n invoice: Invoice;\n\n static fromProto(proto: any): UpdateLineItemResponse {\n let m = new UpdateLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = Invoice.fromProto(proto.invoice);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateLineItemResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n return toReturn;\n }\n}\n\nexport class VoidInvoiceRequest implements i.VoidInvoiceRequestInterface {\n merchantId: string;\n invoiceId: string;\n\n static fromProto(proto: any): VoidInvoiceRequest {\n let m = new VoidInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.VoidInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class Balance implements i.BalanceInterface {\n currencyCode: string;\n amount: number;\n futurePayouts: number;\n inTransit: number;\n\n static fromProto(proto: any): Balance {\n let m = new Balance();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.futurePayouts) {m.futurePayouts = parseInt(proto.futurePayouts, 10);}\n if (proto.inTransit) {m.inTransit = parseInt(proto.inTransit, 10);}\n return m;\n }\n\n constructor(kwargs?: i.BalanceInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.futurePayouts !== 'undefined') {toReturn['futurePayouts'] = this.futurePayouts;}\n if (typeof this.inTransit !== 'undefined') {toReturn['inTransit'] = this.inTransit;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class DateRange implements i.DateRangeInterface {\n start: Date;\n end: Date;\n\n static fromProto(proto: any): DateRange {\n let m = new DateRange();\n m = Object.assign(m, proto);\n if (proto.start) {m.start = new Date(proto.start);}\n if (proto.end) {m.end = new Date(proto.end);}\n return m;\n }\n\n constructor(kwargs?: i.DateRangeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.start !== 'undefined' && this.start !== null) {toReturn['start'] = 'toApiJson' in this.start ? (this.start as any).toApiJson() : this.start;}\n if (typeof this.end !== 'undefined' && this.end !== null) {toReturn['end'] = 'toApiJson' in this.end ? (this.end as any).toApiJson() : this.end;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { DateRange } from './date-range';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class ListPayoutsRequestFilters implements i.ListPayoutsRequestFiltersInterface {\n arrivalDateRange: DateRange;\n\n static fromProto(proto: any): ListPayoutsRequestFilters {\n let m = new ListPayoutsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.arrivalDateRange) {m.arrivalDateRange = DateRange.fromProto(proto.arrivalDateRange);}\n return m;\n }\n\n constructor(kwargs?: i.ListPayoutsRequestFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.arrivalDateRange !== 'undefined' && this.arrivalDateRange !== null) {toReturn['arrivalDateRange'] = 'toApiJson' in this.arrivalDateRange ? (this.arrivalDateRange as any).toApiJson() : this.arrivalDateRange;}\n return toReturn;\n }\n}\n\nexport class ListPayoutsRequest implements i.ListPayoutsRequestInterface {\n filters: ListPayoutsRequestFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListPayoutsRequest {\n let m = new ListPayoutsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListPayoutsRequestFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListPayoutsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListPayoutsResponse implements i.ListPayoutsResponseInterface {\n payouts: Payout[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListPayoutsResponse {\n let m = new ListPayoutsResponse();\n m = Object.assign(m, proto);\n if (proto.payouts) {m.payouts = proto.payouts.map(Payout.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListPayoutsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.payouts !== 'undefined' && this.payouts !== null) {toReturn['payouts'] = 'toApiJson' in this.payouts ? (this.payouts as any).toApiJson() : this.payouts;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class Payout implements i.PayoutInterface {\n id: string;\n arrivalDate: Date;\n amount: number;\n currency: e.Currency;\n status: e.PayoutStatus;\n type: e.PayoutType;\n lastFourDigits: string;\n bankName: string;\n bankId: string;\n\n static fromProto(proto: any): Payout {\n let m = new Payout();\n m = Object.assign(m, proto);\n if (proto.arrivalDate) {m.arrivalDate = new Date(proto.arrivalDate);}\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n if (proto.status) {m.status = enumStringToValue<e.PayoutStatus>(e.PayoutStatus, proto.status);}\n if (proto.type) {m.type = enumStringToValue<e.PayoutType>(e.PayoutType, proto.type);}\n return m;\n }\n\n constructor(kwargs?: i.PayoutInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.arrivalDate !== 'undefined' && this.arrivalDate !== null) {toReturn['arrivalDate'] = 'toApiJson' in this.arrivalDate ? (this.arrivalDate as any).toApiJson() : this.arrivalDate;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.lastFourDigits !== 'undefined') {toReturn['lastFourDigits'] = this.lastFourDigits;}\n if (typeof this.bankName !== 'undefined') {toReturn['bankName'] = this.bankName;}\n if (typeof this.bankId !== 'undefined') {toReturn['bankId'] = this.bankId;}\n return toReturn;\n }\n}\n\nexport class ReconcilePayoutRequest implements i.ReconcilePayoutRequestInterface {\n bankReconciliationId: string;\n payoutId: string;\n allowRetries: boolean;\n\n static fromProto(proto: any): ReconcilePayoutRequest {\n let m = new ReconcilePayoutRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ReconcilePayoutRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.bankReconciliationId !== 'undefined') {toReturn['bankReconciliationId'] = this.bankReconciliationId;}\n if (typeof this.payoutId !== 'undefined') {toReturn['payoutId'] = this.payoutId;}\n if (typeof this.allowRetries !== 'undefined') {toReturn['allowRetries'] = this.allowRetries;}\n return toReturn;\n }\n}\n\nexport class ReconcilePayoutResponse implements i.ReconcilePayoutResponseInterface {\n pipelineId: string;\n\n static fromProto(proto: any): ReconcilePayoutResponse {\n let m = new ReconcilePayoutResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ReconcilePayoutResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pipelineId !== 'undefined') {toReturn['pipelineId'] = this.pipelineId;}\n return toReturn;\n }\n}\n\nexport class RetailPayout implements i.RetailPayoutInterface {\n id: string;\n arrivalDate: Date;\n amount: number;\n currencyCode: string;\n status: e.PayoutStatus;\n type: e.PayoutType;\n lastFourDigits: string;\n bankName: string;\n bankId: string;\n failureCode: string;\n failureMessage: string;\n\n static fromProto(proto: any): RetailPayout {\n let m = new RetailPayout();\n m = Object.assign(m, proto);\n if (proto.arrivalDate) {m.arrivalDate = new Date(proto.arrivalDate);}\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.status) {m.status = enumStringToValue<e.PayoutStatus>(e.PayoutStatus, proto.status);}\n if (proto.type) {m.type = enumStringToValue<e.PayoutType>(e.PayoutType, proto.type);}\n return m;\n }\n\n constructor(kwargs?: i.RetailPayoutInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.arrivalDate !== 'undefined' && this.arrivalDate !== null) {toReturn['arrivalDate'] = 'toApiJson' in this.arrivalDate ? (this.arrivalDate as any).toApiJson() : this.arrivalDate;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.lastFourDigits !== 'undefined') {toReturn['lastFourDigits'] = this.lastFourDigits;}\n if (typeof this.bankName !== 'undefined') {toReturn['bankName'] = this.bankName;}\n if (typeof this.bankId !== 'undefined') {toReturn['bankId'] = this.bankId;}\n if (typeof this.failureCode !== 'undefined') {toReturn['failureCode'] = this.failureCode;}\n if (typeof this.failureMessage !== 'undefined') {toReturn['failureMessage'] = this.failureMessage;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { Balance } from './balance';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport { RetailPayout } from './payout';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class ChargeSalesInvoiceRequest implements i.ChargeSalesInvoiceRequestInterface {\n merchantId: string;\n invoiceId: string;\n amount: number;\n\n static fromProto(proto: any): ChargeSalesInvoiceRequest {\n let m = new ChargeSalesInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ChargeSalesInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n return toReturn;\n }\n}\n\nexport class ConnectStripeAccountRequest implements i.ConnectStripeAccountRequestInterface {\n countryCode: string;\n failureUrl: string;\n successUrl: string;\n merchantId: string;\n\n static fromProto(proto: any): ConnectStripeAccountRequest {\n let m = new ConnectStripeAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ConnectStripeAccountRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.countryCode !== 'undefined') {toReturn['countryCode'] = this.countryCode;}\n if (typeof this.failureUrl !== 'undefined') {toReturn['failureUrl'] = this.failureUrl;}\n if (typeof this.successUrl !== 'undefined') {toReturn['successUrl'] = this.successUrl;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class ConnectStripeAccountResponse implements i.ConnectStripeAccountResponseInterface {\n stripeUrl: string;\n error: string;\n\n static fromProto(proto: any): ConnectStripeAccountResponse {\n let m = new ConnectStripeAccountResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ConnectStripeAccountResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.stripeUrl !== 'undefined') {toReturn['stripeUrl'] = this.stripeUrl;}\n if (typeof this.error !== 'undefined') {toReturn['error'] = this.error;}\n return toReturn;\n }\n}\n\nexport class CreateMerchantRequest implements i.CreateMerchantRequestInterface {\n merchantId: string;\n address: string;\n city: string;\n state: string;\n country: string;\n zipCode: string;\n emailAddress: string;\n phoneNumber: string;\n contactName: string;\n companyName: string;\n additionalEmailAddresses: string[];\n includeInFinancialRecords: CreateMerchantRequestIncludeInFinancialRecords;\n hasAlternativePaymentMethod: boolean;\n\n static fromProto(proto: any): CreateMerchantRequest {\n let m = new CreateMerchantRequest();\n m = Object.assign(m, proto);\n if (proto.includeInFinancialRecords) {m.includeInFinancialRecords = CreateMerchantRequestIncludeInFinancialRecords.fromProto(proto.includeInFinancialRecords);}\n return m;\n }\n\n constructor(kwargs?: i.CreateMerchantRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.address !== 'undefined') {toReturn['address'] = this.address;}\n if (typeof this.city !== 'undefined') {toReturn['city'] = this.city;}\n if (typeof this.state !== 'undefined') {toReturn['state'] = this.state;}\n if (typeof this.country !== 'undefined') {toReturn['country'] = this.country;}\n if (typeof this.zipCode !== 'undefined') {toReturn['zipCode'] = this.zipCode;}\n if (typeof this.emailAddress !== 'undefined') {toReturn['emailAddress'] = this.emailAddress;}\n if (typeof this.phoneNumber !== 'undefined') {toReturn['phoneNumber'] = this.phoneNumber;}\n if (typeof this.contactName !== 'undefined') {toReturn['contactName'] = this.contactName;}\n if (typeof this.companyName !== 'undefined') {toReturn['companyName'] = this.companyName;}\n if (typeof this.additionalEmailAddresses !== 'undefined') {toReturn['additionalEmailAddresses'] = this.additionalEmailAddresses;}\n if (typeof this.includeInFinancialRecords !== 'undefined' && this.includeInFinancialRecords !== null) {toReturn['includeInFinancialRecords'] = 'toApiJson' in this.includeInFinancialRecords ? (this.includeInFinancialRecords as any).toApiJson() : this.includeInFinancialRecords;}\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;}\n return toReturn;\n }\n}\n\nexport class DefaultCustomerConfiguration implements i.DefaultCustomerConfigurationInterface {\n generateMethod: string;\n collectionMethod: string;\n invoiceDay: number;\n\n static fromProto(proto: any): DefaultCustomerConfiguration {\n let m = new DefaultCustomerConfiguration();\n m = Object.assign(m, proto);\n if (proto.invoiceDay) {m.invoiceDay = parseInt(proto.invoiceDay, 10);}\n return m;\n }\n\n constructor(kwargs?: i.DefaultCustomerConfigurationInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.generateMethod !== 'undefined') {toReturn['generateMethod'] = this.generateMethod;}\n if (typeof this.collectionMethod !== 'undefined') {toReturn['collectionMethod'] = this.collectionMethod;}\n if (typeof this.invoiceDay !== 'undefined') {toReturn['invoiceDay'] = this.invoiceDay;}\n return toReturn;\n }\n}\n\nexport class GetMerchantRequest implements i.GetMerchantRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): GetMerchantRequest {\n let m = new GetMerchantRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMerchantRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetMerchantResponse implements i.GetMerchantResponseInterface {\n merchant: Merchant;\n\n static fromProto(proto: any): GetMerchantResponse {\n let m = new GetMerchantResponse();\n m = Object.assign(m, proto);\n if (proto.merchant) {m.merchant = Merchant.fromProto(proto.merchant);}\n return m;\n }\n\n constructor(kwargs?: i.GetMerchantResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchant !== 'undefined' && this.merchant !== null) {toReturn['merchant'] = 'toApiJson' in this.merchant ? (this.merchant as any).toApiJson() : this.merchant;}\n return toReturn;\n }\n}\n\nexport class GetMultiRetailConfigurationsRequest implements i.GetMultiRetailConfigurationsRequestInterface {\n merchantId: string;\n retailGroupIds: string[];\n\n static fromProto(proto: any): GetMultiRetailConfigurationsRequest {\n let m = new GetMultiRetailConfigurationsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiRetailConfigurationsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.retailGroupIds !== 'undefined') {toReturn['retailGroupIds'] = this.retailGroupIds;}\n return toReturn;\n }\n}\n\nexport class GetMultiRetailConfigurationsResponse implements i.GetMultiRetailConfigurationsResponseInterface {\n retailConfigurations: {[key: string]: RetailConfiguration};\n\n static fromProto(proto: any): GetMultiRetailConfigurationsResponse {\n let m = new GetMultiRetailConfigurationsResponse();\n m = Object.assign(m, proto);\n if (proto.retailConfigurations) {m.retailConfigurations = Object.keys(proto.retailConfigurations).reduce<any>((obj, k) => { obj[k] = RetailConfiguration.fromProto(proto.retailConfigurations[k]); return obj; }, {});}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiRetailConfigurationsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.retailConfigurations !== 'undefined' && this.retailConfigurations !== null) {toReturn['retailConfigurations'] = 'toApiJson' in this.retailConfigurations ? (this.retailConfigurations as any).toApiJson() : this.retailConfigurations;}\n return toReturn;\n }\n}\n\nexport class GetOutstandingBalanceRequest implements i.GetOutstandingBalanceRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): GetOutstandingBalanceRequest {\n let m = new GetOutstandingBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetOutstandingBalanceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetOutstandingBalanceResponse implements i.GetOutstandingBalanceResponseInterface {\n outstandingBalance: number;\n currency: e.Currency;\n\n static fromProto(proto: any): GetOutstandingBalanceResponse {\n let m = new GetOutstandingBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.outstandingBalance) {m.outstandingBalance = parseInt(proto.outstandingBalance, 10);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n return m;\n }\n\n constructor(kwargs?: i.GetOutstandingBalanceResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.outstandingBalance !== 'undefined') {toReturn['outstandingBalance'] = this.outstandingBalance;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n return toReturn;\n }\n}\n\nexport class GetPayoutSummaryRequest implements i.GetPayoutSummaryRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): GetPayoutSummaryRequest {\n let m = new GetPayoutSummaryRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetPayoutSummaryRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetPayoutSummaryResponse implements i.GetPayoutSummaryResponseInterface {\n balances: Balance[];\n nextInTransitPayoutExpectedDate: Date;\n payoutInterval: string;\n payoutDelayDays: number;\n\n static fromProto(proto: any): GetPayoutSummaryResponse {\n let m = new GetPayoutSummaryResponse();\n m = Object.assign(m, proto);\n if (proto.balances) {m.balances = proto.balances.map(Balance.fromProto);}\n if (proto.nextInTransitPayoutExpectedDate) {m.nextInTransitPayoutExpectedDate = new Date(proto.nextInTransitPayoutExpectedDate);}\n if (proto.payoutDelayDays) {m.payoutDelayDays = parseInt(proto.payoutDelayDays, 10);}\n return m;\n }\n\n constructor(kwargs?: i.GetPayoutSummaryResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.balances !== 'undefined' && this.balances !== null) {toReturn['balances'] = 'toApiJson' in this.balances ? (this.balances as any).toApiJson() : this.balances;}\n if (typeof this.nextInTransitPayoutExpectedDate !== 'undefined' && this.nextInTransitPayoutExpectedDate !== null) {toReturn['nextInTransitPayoutExpectedDate'] = 'toApiJson' in this.nextInTransitPayoutExpectedDate ? (this.nextInTransitPayoutExpectedDate as any).toApiJson() : this.nextInTransitPayoutExpectedDate;}\n if (typeof this.payoutInterval !== 'undefined') {toReturn['payoutInterval'] = this.payoutInterval;}\n if (typeof this.payoutDelayDays !== 'undefined') {toReturn['payoutDelayDays'] = this.payoutDelayDays;}\n return toReturn;\n }\n}\n\nexport class GetRetailBalanceRequest implements i.GetRetailBalanceRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): GetRetailBalanceRequest {\n let m = new GetRetailBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetRetailBalanceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetRetailBalanceResponse implements i.GetRetailBalanceResponseInterface {\n balances: Balance[];\n\n static fromProto(proto: any): GetRetailBalanceResponse {\n let m = new GetRetailBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.balances) {m.balances = proto.balances.map(Balance.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetRetailBalanceResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.balances !== 'undefined' && this.balances !== null) {toReturn['balances'] = 'toApiJson' in this.balances ? (this.balances as any).toApiJson() : this.balances;}\n return toReturn;\n }\n}\n\nexport class GetRetailPayoutRequest implements i.GetRetailPayoutRequestInterface {\n merchantId: string;\n payoutId: string;\n\n static fromProto(proto: any): GetRetailPayoutRequest {\n let m = new GetRetailPayoutRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetRetailPayoutRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.payoutId !== 'undefined') {toReturn['payoutId'] = this.payoutId;}\n return toReturn;\n }\n}\n\nexport class GetRetailPayoutResponse implements i.GetRetailPayoutResponseInterface {\n payout: RetailPayout;\n\n static fromProto(proto: any): GetRetailPayoutResponse {\n let m = new GetRetailPayoutResponse();\n m = Object.assign(m, proto);\n if (proto.payout) {m.payout = RetailPayout.fromProto(proto.payout);}\n return m;\n }\n\n constructor(kwargs?: i.GetRetailPayoutResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.payout !== 'undefined' && this.payout !== null) {toReturn['payout'] = 'toApiJson' in this.payout ? (this.payout as any).toApiJson() : this.payout;}\n return toReturn;\n }\n}\n\nexport class UpdateMerchantRequestIncludeInFinancialRecords implements i.UpdateMerchantRequestIncludeInFinancialRecordsInterface {\n includeInFinancialRecords: boolean;\n\n static fromProto(proto: any): UpdateMerchantRequestIncludeInFinancialRecords {\n let m = new UpdateMerchantRequestIncludeInFinancialRecords();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdateMerchantRequestIncludeInFinancialRecordsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.includeInFinancialRecords !== 'undefined') {toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;}\n return toReturn;\n }\n}\n\nexport class CreateMerchantRequestIncludeInFinancialRecords implements i.CreateMerchantRequestIncludeInFinancialRecordsInterface {\n includeInFinancialRecords: boolean;\n\n static fromProto(proto: any): CreateMerchantRequestIncludeInFinancialRecords {\n let m = new CreateMerchantRequestIncludeInFinancialRecords();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateMerchantRequestIncludeInFinancialRecordsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.includeInFinancialRecords !== 'undefined') {toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;}\n return toReturn;\n }\n}\n\nexport class ListRetailPayoutsRequest implements i.ListRetailPayoutsRequestInterface {\n merchantId: string;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListRetailPayoutsRequest {\n let m = new ListRetailPayoutsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListRetailPayoutsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListRetailPayoutsResponse implements i.ListRetailPayoutsResponseInterface {\n payouts: RetailPayout[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListRetailPayoutsResponse {\n let m = new ListRetailPayoutsResponse();\n m = Object.assign(m, proto);\n if (proto.payouts) {m.payouts = proto.payouts.map(RetailPayout.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListRetailPayoutsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.payouts !== 'undefined' && this.payouts !== null) {toReturn['payouts'] = 'toApiJson' in this.payouts ? (this.payouts as any).toApiJson() : this.payouts;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class Merchant implements i.MerchantInterface {\n merchantId: string;\n address: string;\n city: string;\n state: string;\n country: string;\n zipCode: string;\n emailAddress: string;\n phoneNumber: string;\n contactName: string;\n companyName: string;\n autoPostInvoices: boolean;\n autoChargeInvoices: boolean;\n includeInFinancialRecords: boolean;\n additionalEmailAddresses: string[];\n hasAlternativePaymentMethod: boolean;\n stripeAccountId: string;\n\n static fromProto(proto: any): Merchant {\n let m = new Merchant();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.MerchantInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.address !== 'undefined') {toReturn['address'] = this.address;}\n if (typeof this.city !== 'undefined') {toReturn['city'] = this.city;}\n if (typeof this.state !== 'undefined') {toReturn['state'] = this.state;}\n if (typeof this.country !== 'undefined') {toReturn['country'] = this.country;}\n if (typeof this.zipCode !== 'undefined') {toReturn['zipCode'] = this.zipCode;}\n if (typeof this.emailAddress !== 'undefined') {toReturn['emailAddress'] = this.emailAddress;}\n if (typeof this.phoneNumber !== 'undefined') {toReturn['phoneNumber'] = this.phoneNumber;}\n if (typeof this.contactName !== 'undefined') {toReturn['contactName'] = this.contactName;}\n if (typeof this.companyName !== 'undefined') {toReturn['companyName'] = this.companyName;}\n if (typeof this.autoPostInvoices !== 'undefined') {toReturn['autoPostInvoices'] = this.autoPostInvoices;}\n if (typeof this.autoChargeInvoices !== 'undefined') {toReturn['autoChargeInvoices'] = this.autoChargeInvoices;}\n if (typeof this.includeInFinancialRecords !== 'undefined') {toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;}\n if (typeof this.additionalEmailAddresses !== 'undefined') {toReturn['additionalEmailAddresses'] = this.additionalEmailAddresses;}\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;}\n if (typeof this.stripeAccountId !== 'undefined') {toReturn['stripeAccountId'] = this.stripeAccountId;}\n return toReturn;\n }\n}\n\nexport class RetailConfiguration implements i.RetailConfigurationInterface {\n merchantId: string;\n retailGroupId: string;\n currencyCode: string;\n defaultCustomerConfiguration: DefaultCustomerConfiguration;\n currencyConversionRate: number;\n\n static fromProto(proto: any): RetailConfiguration {\n let m = new RetailConfiguration();\n m = Object.assign(m, proto);\n if (proto.defaultCustomerConfiguration) {m.defaultCustomerConfiguration = DefaultCustomerConfiguration.fromProto(proto.defaultCustomerConfiguration);}\n if (proto.currencyConversionRate) {m.currencyConversionRate = parseInt(proto.currencyConversionRate, 10);}\n return m;\n }\n\n constructor(kwargs?: i.RetailConfigurationInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.retailGroupId !== 'undefined') {toReturn['retailGroupId'] = this.retailGroupId;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n if (typeof this.defaultCustomerConfiguration !== 'undefined' && this.defaultCustomerConfiguration !== null) {toReturn['defaultCustomerConfiguration'] = 'toApiJson' in this.defaultCustomerConfiguration ? (this.defaultCustomerConfiguration as any).toApiJson() : this.defaultCustomerConfiguration;}\n if (typeof this.currencyConversionRate !== 'undefined') {toReturn['currencyConversionRate'] = this.currencyConversionRate;}\n return toReturn;\n }\n}\n\nexport class GetMultiRetailConfigurationsResponseRetailConfigurationsEntry implements i.GetMultiRetailConfigurationsResponseRetailConfigurationsEntryInterface {\n key: string;\n value: RetailConfiguration;\n\n static fromProto(proto: any): GetMultiRetailConfigurationsResponseRetailConfigurationsEntry {\n let m = new GetMultiRetailConfigurationsResponseRetailConfigurationsEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = RetailConfiguration.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiRetailConfigurationsResponseRetailConfigurationsEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class SearchMerchantsRequest implements i.SearchMerchantsRequestInterface {\n searchTerm: string;\n sortBy: e.SearchMerchantsRequestSortBy;\n sortDirection: e.SortDirection;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): SearchMerchantsRequest {\n let m = new SearchMerchantsRequest();\n m = Object.assign(m, proto);\n if (proto.sortBy) {m.sortBy = enumStringToValue<e.SearchMerchantsRequestSortBy>(e.SearchMerchantsRequestSortBy, proto.sortBy);}\n if (proto.sortDirection) {m.sortDirection = enumStringToValue<e.SortDirection>(e.SortDirection, proto.sortDirection);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.SearchMerchantsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.searchTerm !== 'undefined') {toReturn['searchTerm'] = this.searchTerm;}\n if (typeof this.sortBy !== 'undefined') {toReturn['sortBy'] = this.sortBy;}\n if (typeof this.sortDirection !== 'undefined') {toReturn['sortDirection'] = this.sortDirection;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class SearchMerchantsResponse implements i.SearchMerchantsResponseInterface {\n merchants: Merchant[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): SearchMerchantsResponse {\n let m = new SearchMerchantsResponse();\n m = Object.assign(m, proto);\n if (proto.merchants) {m.merchants = proto.merchants.map(Merchant.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.SearchMerchantsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchants !== 'undefined' && this.merchants !== null) {toReturn['merchants'] = 'toApiJson' in this.merchants ? (this.merchants as any).toApiJson() : this.merchants;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class SetAutoChargeInvoicesRequest implements i.SetAutoChargeInvoicesRequestInterface {\n merchantId: string;\n autoChargeInvoices: boolean;\n\n static fromProto(proto: any): SetAutoChargeInvoicesRequest {\n let m = new SetAutoChargeInvoicesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SetAutoChargeInvoicesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.autoChargeInvoices !== 'undefined') {toReturn['autoChargeInvoices'] = this.autoChargeInvoices;}\n return toReturn;\n }\n}\n\nexport class SetAutoPostInvoicesRequest implements i.SetAutoPostInvoicesRequestInterface {\n merchantId: string;\n shouldAutoPostInvoices: boolean;\n\n static fromProto(proto: any): SetAutoPostInvoicesRequest {\n let m = new SetAutoPostInvoicesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SetAutoPostInvoicesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.shouldAutoPostInvoices !== 'undefined') {toReturn['shouldAutoPostInvoices'] = this.shouldAutoPostInvoices;}\n return toReturn;\n }\n}\n\nexport class SetDefaultPaymentCardRequest implements i.SetDefaultPaymentCardRequestInterface {\n merchantId: string;\n cardId: string;\n\n static fromProto(proto: any): SetDefaultPaymentCardRequest {\n let m = new SetDefaultPaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SetDefaultPaymentCardRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.cardId !== 'undefined') {toReturn['cardId'] = this.cardId;}\n return toReturn;\n }\n}\n\nexport class SetHasAlternativePaymentMethodRequest implements i.SetHasAlternativePaymentMethodRequestInterface {\n merchantId: string;\n hasAlternativePaymentMethod: boolean;\n\n static fromProto(proto: any): SetHasAlternativePaymentMethodRequest {\n let m = new SetHasAlternativePaymentMethodRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SetHasAlternativePaymentMethodRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;}\n return toReturn;\n }\n}\n\nexport class SetIncludeInFinancialRecordsRequest implements i.SetIncludeInFinancialRecordsRequestInterface {\n merchantId: string;\n includeInFinancialRecords: boolean;\n\n static fromProto(proto: any): SetIncludeInFinancialRecordsRequest {\n let m = new SetIncludeInFinancialRecordsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SetIncludeInFinancialRecordsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.includeInFinancialRecords !== 'undefined') {toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;}\n return toReturn;\n }\n}\n\nexport class UpdateMerchantRequest implements i.UpdateMerchantRequestInterface {\n merchantId: string;\n address: string;\n city: string;\n state: string;\n country: string;\n zipCode: string;\n emailAddress: string;\n phoneNumber: string;\n contactName: string;\n companyName: string;\n additionalEmailAddresses: string[];\n includeInFinancialRecords: UpdateMerchantRequestIncludeInFinancialRecords;\n hasAlternativePaymentMethod: boolean;\n\n static fromProto(proto: any): UpdateMerchantRequest {\n let m = new UpdateMerchantRequest();\n m = Object.assign(m, proto);\n if (proto.includeInFinancialRecords) {m.includeInFinancialRecords = UpdateMerchantRequestIncludeInFinancialRecords.fromProto(proto.includeInFinancialRecords);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateMerchantRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.address !== 'undefined') {toReturn['address'] = this.address;}\n if (typeof this.city !== 'undefined') {toReturn['city'] = this.city;}\n if (typeof this.state !== 'undefined') {toReturn['state'] = this.state;}\n if (typeof this.country !== 'undefined') {toReturn['country'] = this.country;}\n if (typeof this.zipCode !== 'undefined') {toReturn['zipCode'] = this.zipCode;}\n if (typeof this.emailAddress !== 'undefined') {toReturn['emailAddress'] = this.emailAddress;}\n if (typeof this.phoneNumber !== 'undefined') {toReturn['phoneNumber'] = this.phoneNumber;}\n if (typeof this.contactName !== 'undefined') {toReturn['contactName'] = this.contactName;}\n if (typeof this.companyName !== 'undefined') {toReturn['companyName'] = this.companyName;}\n if (typeof this.additionalEmailAddresses !== 'undefined') {toReturn['additionalEmailAddresses'] = this.additionalEmailAddresses;}\n if (typeof this.includeInFinancialRecords !== 'undefined' && this.includeInFinancialRecords !== null) {toReturn['includeInFinancialRecords'] = 'toApiJson' in this.includeInFinancialRecords ? (this.includeInFinancialRecords as any).toApiJson() : this.includeInFinancialRecords;}\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;}\n return toReturn;\n }\n}\n\nexport class UpsertDefaultRetailCustomerConfigurationRequest implements i.UpsertDefaultRetailCustomerConfigurationRequestInterface {\n merchantId: string;\n retailGroupId: string;\n defaultCustomerConfiguration: DefaultCustomerConfiguration;\n\n static fromProto(proto: any): UpsertDefaultRetailCustomerConfigurationRequest {\n let m = new UpsertDefaultRetailCustomerConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.defaultCustomerConfiguration) {m.defaultCustomerConfiguration = DefaultCustomerConfiguration.fromProto(proto.defaultCustomerConfiguration);}\n return m;\n }\n\n constructor(kwargs?: i.UpsertDefaultRetailCustomerConfigurationRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.retailGroupId !== 'undefined') {toReturn['retailGroupId'] = this.retailGroupId;}\n if (typeof this.defaultCustomerConfiguration !== 'undefined' && this.defaultCustomerConfiguration !== null) {toReturn['defaultCustomerConfiguration'] = 'toApiJson' in this.defaultCustomerConfiguration ? (this.defaultCustomerConfiguration as any).toApiJson() : this.defaultCustomerConfiguration;}\n return toReturn;\n }\n}\n\nexport class UpsertRetailConfigurationRequest implements i.UpsertRetailConfigurationRequestInterface {\n merchantId: string;\n retailGroupId: string;\n currencyCode: string;\n currencyConversionRate: number;\n\n static fromProto(proto: any): UpsertRetailConfigurationRequest {\n let m = new UpsertRetailConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.currencyConversionRate) {m.currencyConversionRate = parseInt(proto.currencyConversionRate, 10);}\n return m;\n }\n\n constructor(kwargs?: i.UpsertRetailConfigurationRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.retailGroupId !== 'undefined') {toReturn['retailGroupId'] = this.retailGroupId;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n if (typeof this.currencyConversionRate !== 'undefined') {toReturn['currencyConversionRate'] = this.currencyConversionRate;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class ListMerchantBillingReportsRequest implements i.ListMerchantBillingReportsRequestInterface {\n merchantId: string;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListMerchantBillingReportsRequest {\n let m = new ListMerchantBillingReportsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListMerchantBillingReportsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListMerchantBillingReportsResponse implements i.ListMerchantBillingReportsResponseInterface {\n reports: MerchantReport[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListMerchantBillingReportsResponse {\n let m = new ListMerchantBillingReportsResponse();\n m = Object.assign(m, proto);\n if (proto.reports) {m.reports = proto.reports.map(MerchantReport.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListMerchantBillingReportsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.reports !== 'undefined' && this.reports !== null) {toReturn['reports'] = 'toApiJson' in this.reports ? (this.reports as any).toApiJson() : this.reports;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class MerchantReport implements i.MerchantReportInterface {\n merchantId: string;\n year: number;\n month: e.Month;\n created: Date;\n status: e.MerchantReportStatus;\n\n static fromProto(proto: any): MerchantReport {\n let m = new MerchantReport();\n m = Object.assign(m, proto);\n if (proto.year) {m.year = parseInt(proto.year, 10);}\n if (proto.month) {m.month = enumStringToValue<e.Month>(e.Month, proto.month);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.status) {m.status = enumStringToValue<e.MerchantReportStatus>(e.MerchantReportStatus, proto.status);}\n return m;\n }\n\n constructor(kwargs?: i.MerchantReportInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.year !== 'undefined') {toReturn['year'] = this.year;}\n if (typeof this.month !== 'undefined') {toReturn['month'] = this.month;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class CreateMeteredComponentRequest implements i.CreateMeteredComponentRequestInterface {\n component: MeteredComponent;\n sku: string;\n\n static fromProto(proto: any): CreateMeteredComponentRequest {\n let m = new CreateMeteredComponentRequest();\n m = Object.assign(m, proto);\n if (proto.component) {m.component = MeteredComponent.fromProto(proto.component);}\n return m;\n }\n\n constructor(kwargs?: i.CreateMeteredComponentRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.component !== 'undefined' && this.component !== null) {toReturn['component'] = 'toApiJson' in this.component ? (this.component as any).toApiJson() : this.component;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n return toReturn;\n }\n}\n\nexport class MeteredComponent implements i.MeteredComponentInterface {\n componentId: string;\n name: string;\n\n static fromProto(proto: any): MeteredComponent {\n let m = new MeteredComponent();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.MeteredComponentInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.componentId !== 'undefined') {toReturn['componentId'] = this.componentId;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n return toReturn;\n }\n}\n\nexport class TickComponentUsageRequest implements i.TickComponentUsageRequestInterface {\n merchantId: string;\n customerId: string;\n componentId: string;\n orderId: string;\n sku: string;\n quantity: number;\n idempotencyKey: string;\n\n static fromProto(proto: any): TickComponentUsageRequest {\n let m = new TickComponentUsageRequest();\n m = Object.assign(m, proto);\n if (proto.quantity) {m.quantity = parseInt(proto.quantity, 10);}\n return m;\n }\n\n constructor(kwargs?: i.TickComponentUsageRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.componentId !== 'undefined') {toReturn['componentId'] = this.componentId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.idempotencyKey !== 'undefined') {toReturn['idempotencyKey'] = this.idempotencyKey;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class RetailPaymentCardDetails implements i.RetailPaymentCardDetailsInterface {\n cardType: e.CardType;\n lastFourDigits: string;\n\n static fromProto(proto: any): RetailPaymentCardDetails {\n let m = new RetailPaymentCardDetails();\n m = Object.assign(m, proto);\n if (proto.cardType) {m.cardType = enumStringToValue<e.CardType>(e.CardType, proto.cardType);}\n return m;\n }\n\n constructor(kwargs?: i.RetailPaymentCardDetailsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.cardType !== 'undefined') {toReturn['cardType'] = this.cardType;}\n if (typeof this.lastFourDigits !== 'undefined') {toReturn['lastFourDigits'] = this.lastFourDigits;}\n return toReturn;\n }\n}\n\nexport class CloseRetailDisputeRequest implements i.CloseRetailDisputeRequestInterface {\n merchantId: string;\n disputeId: string;\n\n static fromProto(proto: any): CloseRetailDisputeRequest {\n let m = new CloseRetailDisputeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CloseRetailDisputeRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.disputeId !== 'undefined') {toReturn['disputeId'] = this.disputeId;}\n return toReturn;\n }\n}\n\nexport class ConfigureRetailPaymentProviderRequest implements i.ConfigureRetailPaymentProviderRequestInterface {\n merchantId: string;\n failureUrl: string;\n successUrl: string;\n\n static fromProto(proto: any): ConfigureRetailPaymentProviderRequest {\n let m = new ConfigureRetailPaymentProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ConfigureRetailPaymentProviderRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.failureUrl !== 'undefined') {toReturn['failureUrl'] = this.failureUrl;}\n if (typeof this.successUrl !== 'undefined') {toReturn['successUrl'] = this.successUrl;}\n return toReturn;\n }\n}\n\nexport class ConfigureRetailPaymentProviderResponse implements i.ConfigureRetailPaymentProviderResponseInterface {\n stripeUrl: string;\n error: string;\n\n static fromProto(proto: any): ConfigureRetailPaymentProviderResponse {\n let m = new ConfigureRetailPaymentProviderResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ConfigureRetailPaymentProviderResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.stripeUrl !== 'undefined') {toReturn['stripeUrl'] = this.stripeUrl;}\n if (typeof this.error !== 'undefined') {toReturn['error'] = this.error;}\n return toReturn;\n }\n}\n\nexport class ConfirmRetailPaymentRequest implements i.ConfirmRetailPaymentRequestInterface {\n merchantId: string;\n id: string;\n\n static fromProto(proto: any): ConfirmRetailPaymentRequest {\n let m = new ConfirmRetailPaymentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ConfirmRetailPaymentRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class Dispute implements i.DisputeInterface {\n paymentId: string;\n status: e.DisputeStatus;\n id: string;\n amount: number;\n created: Date;\n currencyCode: string;\n evidence: DisputeEvidence;\n evidenceDetails: DisputeEvidenceDetails;\n isChargeRefundable: boolean;\n reason: string;\n fee: number;\n feeCurrencyCode: string;\n\n static fromProto(proto: any): Dispute {\n let m = new Dispute();\n m = Object.assign(m, proto);\n if (proto.status) {m.status = enumStringToValue<e.DisputeStatus>(e.DisputeStatus, proto.status);}\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.evidence) {m.evidence = DisputeEvidence.fromProto(proto.evidence);}\n if (proto.evidenceDetails) {m.evidenceDetails = DisputeEvidenceDetails.fromProto(proto.evidenceDetails);}\n if (proto.fee) {m.fee = parseInt(proto.fee, 10);}\n return m;\n }\n\n constructor(kwargs?: i.DisputeInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.paymentId !== 'undefined') {toReturn['paymentId'] = this.paymentId;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n if (typeof this.evidence !== 'undefined' && this.evidence !== null) {toReturn['evidence'] = 'toApiJson' in this.evidence ? (this.evidence as any).toApiJson() : this.evidence;}\n if (typeof this.evidenceDetails !== 'undefined' && this.evidenceDetails !== null) {toReturn['evidenceDetails'] = 'toApiJson' in this.evidenceDetails ? (this.evidenceDetails as any).toApiJson() : this.evidenceDetails;}\n if (typeof this.isChargeRefundable !== 'undefined') {toReturn['isChargeRefundable'] = this.isChargeRefundable;}\n if (typeof this.reason !== 'undefined') {toReturn['reason'] = this.reason;}\n if (typeof this.fee !== 'undefined') {toReturn['fee'] = this.fee;}\n if (typeof this.feeCurrencyCode !== 'undefined') {toReturn['feeCurrencyCode'] = this.feeCurrencyCode;}\n return toReturn;\n }\n}\n\nexport class DisputeEvidence implements i.DisputeEvidenceInterface {\n customerCommunication: File;\n customerSignature: File;\n shippingDocumentation: File;\n receipt: File;\n uncategorizedFile: File;\n billingAddress: string;\n customerEmailAddress: string;\n customerName: string;\n productDescription: string;\n\n static fromProto(proto: any): DisputeEvidence {\n let m = new DisputeEvidence();\n m = Object.assign(m, proto);\n if (proto.customerCommunication) {m.customerCommunication = File.fromProto(proto.customerCommunication);}\n if (proto.customerSignature) {m.customerSignature = File.fromProto(proto.customerSignature);}\n if (proto.shippingDocumentation) {m.shippingDocumentation = File.fromProto(proto.shippingDocumentation);}\n if (proto.receipt) {m.receipt = File.fromProto(proto.receipt);}\n if (proto.uncategorizedFile) {m.uncategorizedFile = File.fromProto(proto.uncategorizedFile);}\n return m;\n }\n\n constructor(kwargs?: i.DisputeEvidenceInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.customerCommunication !== 'undefined' && this.customerCommunication !== null) {toReturn['customerCommunication'] = 'toApiJson' in this.customerCommunication ? (this.customerCommunication as any).toApiJson() : this.customerCommunication;}\n if (typeof this.customerSignature !== 'undefined' && this.customerSignature !== null) {toReturn['customerSignature'] = 'toApiJson' in this.customerSignature ? (this.customerSignature as any).toApiJson() : this.customerSignature;}\n if (typeof this.shippingDocumentation !== 'undefined' && this.shippingDocumentation !== null) {toReturn['shippingDocumentation'] = 'toApiJson' in this.shippingDocumentation ? (this.shippingDocumentation as any).toApiJson() : this.shippingDocumentation;}\n if (typeof this.receipt !== 'undefined' && this.receipt !== null) {toReturn['receipt'] = 'toApiJson' in this.receipt ? (this.receipt as any).toApiJson() : this.receipt;}\n if (typeof this.uncategorizedFile !== 'undefined' && this.uncategorizedFile !== null) {toReturn['uncategorizedFile'] = 'toApiJson' in this.uncategorizedFile ? (this.uncategorizedFile as any).toApiJson() : this.uncategorizedFile;}\n if (typeof this.billingAddress !== 'undefined') {toReturn['billingAddress'] = this.billingAddress;}\n if (typeof this.customerEmailAddress !== 'undefined') {toReturn['customerEmailAddress'] = this.customerEmailAddress;}\n if (typeof this.customerName !== 'undefined') {toReturn['customerName'] = this.customerName;}\n if (typeof this.productDescription !== 'undefined') {toReturn['productDescription'] = this.productDescription;}\n return toReturn;\n }\n}\n\nexport class SubmitEvidenceRequestDisputeEvidence implements i.SubmitEvidenceRequestDisputeEvidenceInterface {\n billingAddress: string;\n customerEmailAddress: string;\n customerName: string;\n productDescription: string;\n customerSignatureFileId: string;\n customerCommunicationFileId: string;\n receiptFileId: string;\n shippingDocumentationFileId: string;\n uncategorizedFileId: string;\n\n static fromProto(proto: any): SubmitEvidenceRequestDisputeEvidence {\n let m = new SubmitEvidenceRequestDisputeEvidence();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SubmitEvidenceRequestDisputeEvidenceInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.billingAddress !== 'undefined') {toReturn['billingAddress'] = this.billingAddress;}\n if (typeof this.customerEmailAddress !== 'undefined') {toReturn['customerEmailAddress'] = this.customerEmailAddress;}\n if (typeof this.customerName !== 'undefined') {toReturn['customerName'] = this.customerName;}\n if (typeof this.productDescription !== 'undefined') {toReturn['productDescription'] = this.productDescription;}\n if (typeof this.customerSignatureFileId !== 'undefined') {toReturn['customerSignatureFileId'] = this.customerSignatureFileId;}\n if (typeof this.customerCommunicationFileId !== 'undefined') {toReturn['customerCommunicationFileId'] = this.customerCommunicationFileId;}\n if (typeof this.receiptFileId !== 'undefined') {toReturn['receiptFileId'] = this.receiptFileId;}\n if (typeof this.shippingDocumentationFileId !== 'undefined') {toReturn['shippingDocumentationFileId'] = this.shippingDocumentationFileId;}\n if (typeof this.uncategorizedFileId !== 'undefined') {toReturn['uncategorizedFileId'] = this.uncategorizedFileId;}\n return toReturn;\n }\n}\n\nexport class DisputeEvidenceDetails implements i.DisputeEvidenceDetailsInterface {\n dueBy: Date;\n hasEvidence: boolean;\n pastDue: boolean;\n submissionCount: number;\n\n static fromProto(proto: any): DisputeEvidenceDetails {\n let m = new DisputeEvidenceDetails();\n m = Object.assign(m, proto);\n if (proto.dueBy) {m.dueBy = new Date(proto.dueBy);}\n if (proto.submissionCount) {m.submissionCount = parseInt(proto.submissionCount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.DisputeEvidenceDetailsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.dueBy !== 'undefined' && this.dueBy !== null) {toReturn['dueBy'] = 'toApiJson' in this.dueBy ? (this.dueBy as any).toApiJson() : this.dueBy;}\n if (typeof this.hasEvidence !== 'undefined') {toReturn['hasEvidence'] = this.hasEvidence;}\n if (typeof this.pastDue !== 'undefined') {toReturn['pastDue'] = this.pastDue;}\n if (typeof this.submissionCount !== 'undefined') {toReturn['submissionCount'] = this.submissionCount;}\n return toReturn;\n }\n}\n\nexport class File implements i.FileInterface {\n created: Date;\n id: string;\n filename: string;\n url: string;\n\n static fromProto(proto: any): File {\n let m = new File();\n m = Object.assign(m, proto);\n if (proto.created) {m.created = new Date(proto.created);}\n return m;\n }\n\n constructor(kwargs?: i.FileInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.filename !== 'undefined') {toReturn['filename'] = this.filename;}\n if (typeof this.url !== 'undefined') {toReturn['url'] = this.url;}\n return toReturn;\n }\n}\n\nexport class GetRetailDisputeRequest implements i.GetRetailDisputeRequestInterface {\n merchantId: string;\n disputeId: string;\n\n static fromProto(proto: any): GetRetailDisputeRequest {\n let m = new GetRetailDisputeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetRetailDisputeRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.disputeId !== 'undefined') {toReturn['disputeId'] = this.disputeId;}\n return toReturn;\n }\n}\n\nexport class GetRetailDisputeResponse implements i.GetRetailDisputeResponseInterface {\n dispute: Dispute;\n\n static fromProto(proto: any): GetRetailDisputeResponse {\n let m = new GetRetailDisputeResponse();\n m = Object.assign(m, proto);\n if (proto.dispute) {m.dispute = Dispute.fromProto(proto.dispute);}\n return m;\n }\n\n constructor(kwargs?: i.GetRetailDisputeResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.dispute !== 'undefined' && this.dispute !== null) {toReturn['dispute'] = 'toApiJson' in this.dispute ? (this.dispute as any).toApiJson() : this.dispute;}\n return toReturn;\n }\n}\n\nexport class GetRetailPaymentProviderRequest implements i.GetRetailPaymentProviderRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): GetRetailPaymentProviderRequest {\n let m = new GetRetailPaymentProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetRetailPaymentProviderRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetRetailPaymentProviderResponse implements i.GetRetailPaymentProviderResponseInterface {\n statementDescriptor: string;\n stripeConnectId: string;\n\n static fromProto(proto: any): GetRetailPaymentProviderResponse {\n let m = new GetRetailPaymentProviderResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetRetailPaymentProviderResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.statementDescriptor !== 'undefined') {toReturn['statementDescriptor'] = this.statementDescriptor;}\n if (typeof this.stripeConnectId !== 'undefined') {toReturn['stripeConnectId'] = this.stripeConnectId;}\n return toReturn;\n }\n}\n\nexport class GetRetailPaymentRequest implements i.GetRetailPaymentRequestInterface {\n merchantId: string;\n paymentId: string;\n\n static fromProto(proto: any): GetRetailPaymentRequest {\n let m = new GetRetailPaymentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetRetailPaymentRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.paymentId !== 'undefined') {toReturn['paymentId'] = this.paymentId;}\n return toReturn;\n }\n}\n\nexport class GetRetailPaymentResponse implements i.GetRetailPaymentResponseInterface {\n payment: RetailPayment;\n\n static fromProto(proto: any): GetRetailPaymentResponse {\n let m = new GetRetailPaymentResponse();\n m = Object.assign(m, proto);\n if (proto.payment) {m.payment = RetailPayment.fromProto(proto.payment);}\n return m;\n }\n\n constructor(kwargs?: i.GetRetailPaymentResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.payment !== 'undefined' && this.payment !== null) {toReturn['payment'] = 'toApiJson' in this.payment ? (this.payment as any).toApiJson() : this.payment;}\n return toReturn;\n }\n}\n\nexport class ListPaymentRequestListPaymentFilters implements i.ListPaymentRequestListPaymentFiltersInterface {\n merchantId: string;\n allocationIds: string[];\n start: Date;\n end: Date;\n\n static fromProto(proto: any): ListPaymentRequestListPaymentFilters {\n let m = new ListPaymentRequestListPaymentFilters();\n m = Object.assign(m, proto);\n if (proto.start) {m.start = new Date(proto.start);}\n if (proto.end) {m.end = new Date(proto.end);}\n return m;\n }\n\n constructor(kwargs?: i.ListPaymentRequestListPaymentFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.allocationIds !== 'undefined') {toReturn['allocationIds'] = this.allocationIds;}\n if (typeof this.start !== 'undefined' && this.start !== null) {toReturn['start'] = 'toApiJson' in this.start ? (this.start as any).toApiJson() : this.start;}\n if (typeof this.end !== 'undefined' && this.end !== null) {toReturn['end'] = 'toApiJson' in this.end ? (this.end as any).toApiJson() : this.end;}\n return toReturn;\n }\n}\n\nexport class ListPaymentRequest implements i.ListPaymentRequestInterface {\n filters: ListPaymentRequestListPaymentFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListPaymentRequest {\n let m = new ListPaymentRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListPaymentRequestListPaymentFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListPaymentRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListPaymentResponse implements i.ListPaymentResponseInterface {\n payments: Payment[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListPaymentResponse {\n let m = new ListPaymentResponse();\n m = Object.assign(m, proto);\n if (proto.payments) {m.payments = proto.payments.map(Payment.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListPaymentResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.payments !== 'undefined' && this.payments !== null) {toReturn['payments'] = 'toApiJson' in this.payments ? (this.payments as any).toApiJson() : this.payments;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class ListRetailDisputesRequest implements i.ListRetailDisputesRequestInterface {\n merchantId: string;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListRetailDisputesRequest {\n let m = new ListRetailDisputesRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListRetailDisputesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListRetailDisputesResponse implements i.ListRetailDisputesResponseInterface {\n disputes: Dispute[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListRetailDisputesResponse {\n let m = new ListRetailDisputesResponse();\n m = Object.assign(m, proto);\n if (proto.disputes) {m.disputes = proto.disputes.map(Dispute.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListRetailDisputesResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.disputes !== 'undefined' && this.disputes !== null) {toReturn['disputes'] = 'toApiJson' in this.disputes ? (this.disputes as any).toApiJson() : this.disputes;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class ListRetailPaymentsRequestListRetailPaymentsFilters implements i.ListRetailPaymentsRequestListRetailPaymentsFiltersInterface {\n payoutId: string;\n customerId: string;\n createdDateGte: Date;\n createdDateLte: Date;\n\n static fromProto(proto: any): ListRetailPaymentsRequestListRetailPaymentsFilters {\n let m = new ListRetailPaymentsRequestListRetailPaymentsFilters();\n m = Object.assign(m, proto);\n if (proto.createdDateGte) {m.createdDateGte = new Date(proto.createdDateGte);}\n if (proto.createdDateLte) {m.createdDateLte = new Date(proto.createdDateLte);}\n return m;\n }\n\n constructor(kwargs?: i.ListRetailPaymentsRequestListRetailPaymentsFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.payoutId !== 'undefined') {toReturn['payoutId'] = this.payoutId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.createdDateGte !== 'undefined' && this.createdDateGte !== null) {toReturn['createdDateGte'] = 'toApiJson' in this.createdDateGte ? (this.createdDateGte as any).toApiJson() : this.createdDateGte;}\n if (typeof this.createdDateLte !== 'undefined' && this.createdDateLte !== null) {toReturn['createdDateLte'] = 'toApiJson' in this.createdDateLte ? (this.createdDateLte as any).toApiJson() : this.createdDateLte;}\n return toReturn;\n }\n}\n\nexport class ListRetailPaymentsRequest implements i.ListRetailPaymentsRequestInterface {\n merchantId: string;\n pagingOptions: PagedRequestOptions;\n filters: ListRetailPaymentsRequestListRetailPaymentsFilters;\n\n static fromProto(proto: any): ListRetailPaymentsRequest {\n let m = new ListRetailPaymentsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n if (proto.filters) {m.filters = ListRetailPaymentsRequestListRetailPaymentsFilters.fromProto(proto.filters);}\n return m;\n }\n\n constructor(kwargs?: i.ListRetailPaymentsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n return toReturn;\n }\n}\n\nexport class ListRetailPaymentsResponse implements i.ListRetailPaymentsResponseInterface {\n payments: RetailPayment[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListRetailPaymentsResponse {\n let m = new ListRetailPaymentsResponse();\n m = Object.assign(m, proto);\n if (proto.payments) {m.payments = proto.payments.map(RetailPayment.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListRetailPaymentsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.payments !== 'undefined' && this.payments !== null) {toReturn['payments'] = 'toApiJson' in this.payments ? (this.payments as any).toApiJson() : this.payments;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class PrepareRetailPaymentRequestOrder implements i.PrepareRetailPaymentRequestOrderInterface {\n orderId: string;\n amount: number;\n currencyCode: string;\n paymentMethodId: string;\n\n static fromProto(proto: any): PrepareRetailPaymentRequestOrder {\n let m = new PrepareRetailPaymentRequestOrder();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.PrepareRetailPaymentRequestOrderInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n if (typeof this.paymentMethodId !== 'undefined') {toReturn['paymentMethodId'] = this.paymentMethodId;}\n return toReturn;\n }\n}\n\nexport class Payment implements i.PaymentInterface {\n merchantId: string;\n created: Date;\n currency: e.Currency;\n paymentSource: e.PaymentSource;\n allocations: PaymentPaymentAllocation[];\n total: number;\n description: string;\n externalReferenceId: string;\n status: e.PaymentStatus;\n\n static fromProto(proto: any): Payment {\n let m = new Payment();\n m = Object.assign(m, proto);\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n if (proto.paymentSource) {m.paymentSource = enumStringToValue<e.PaymentSource>(e.PaymentSource, proto.paymentSource);}\n if (proto.allocations) {m.allocations = proto.allocations.map(PaymentPaymentAllocation.fromProto);}\n if (proto.total) {m.total = parseInt(proto.total, 10);}\n if (proto.status) {m.status = enumStringToValue<e.PaymentStatus>(e.PaymentStatus, proto.status);}\n return m;\n }\n\n constructor(kwargs?: i.PaymentInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.paymentSource !== 'undefined') {toReturn['paymentSource'] = this.paymentSource;}\n if (typeof this.allocations !== 'undefined' && this.allocations !== null) {toReturn['allocations'] = 'toApiJson' in this.allocations ? (this.allocations as any).toApiJson() : this.allocations;}\n if (typeof this.total !== 'undefined') {toReturn['total'] = this.total;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.externalReferenceId !== 'undefined') {toReturn['externalReferenceId'] = this.externalReferenceId;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n return toReturn;\n }\n}\n\nexport class PaymentPaymentAllocation implements i.PaymentPaymentAllocationInterface {\n referenceId: string;\n amount: number;\n type: e.PaymentAllocationType;\n\n static fromProto(proto: any): PaymentPaymentAllocation {\n let m = new PaymentPaymentAllocation();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.type) {m.type = enumStringToValue<e.PaymentAllocationType>(e.PaymentAllocationType, proto.type);}\n return m;\n }\n\n constructor(kwargs?: i.PaymentPaymentAllocationInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.referenceId !== 'undefined') {toReturn['referenceId'] = this.referenceId;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n return toReturn;\n }\n}\n\nexport class PrepareRetailPaymentRequest implements i.PrepareRetailPaymentRequestInterface {\n merchantId: string;\n customerId: string;\n invoiceId: string;\n order: PrepareRetailPaymentRequestOrder;\n\n static fromProto(proto: any): PrepareRetailPaymentRequest {\n let m = new PrepareRetailPaymentRequest();\n m = Object.assign(m, proto);\n if (proto.order) {m.order = PrepareRetailPaymentRequestOrder.fromProto(proto.order);}\n return m;\n }\n\n constructor(kwargs?: i.PrepareRetailPaymentRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.order !== 'undefined' && this.order !== null) {toReturn['order'] = 'toApiJson' in this.order ? (this.order as any).toApiJson() : this.order;}\n return toReturn;\n }\n}\n\nexport class PrepareRetailPaymentResponse implements i.PrepareRetailPaymentResponseInterface {\n stripeClientSecret: string;\n intentId: string;\n\n static fromProto(proto: any): PrepareRetailPaymentResponse {\n let m = new PrepareRetailPaymentResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.PrepareRetailPaymentResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.stripeClientSecret !== 'undefined') {toReturn['stripeClientSecret'] = this.stripeClientSecret;}\n if (typeof this.intentId !== 'undefined') {toReturn['intentId'] = this.intentId;}\n return toReturn;\n }\n}\n\nexport class RetailPayment implements i.RetailPaymentInterface {\n merchantId: string;\n created: Date;\n currencyCode: string;\n amount: number;\n referenceId: string;\n referenceType: e.RetailPaymentReferenceType;\n customerId: string;\n status: e.PaymentStatus;\n description: string;\n failureCode: string;\n failureMessage: string;\n applicationFee: number;\n disputed: boolean;\n id: string;\n dispute: Dispute;\n cardDetails: RetailPaymentCardDetails;\n\n static fromProto(proto: any): RetailPayment {\n let m = new RetailPayment();\n m = Object.assign(m, proto);\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.referenceType) {m.referenceType = enumStringToValue<e.RetailPaymentReferenceType>(e.RetailPaymentReferenceType, proto.referenceType);}\n if (proto.status) {m.status = enumStringToValue<e.PaymentStatus>(e.PaymentStatus, proto.status);}\n if (proto.applicationFee) {m.applicationFee = parseInt(proto.applicationFee, 10);}\n if (proto.dispute) {m.dispute = Dispute.fromProto(proto.dispute);}\n if (proto.cardDetails) {m.cardDetails = RetailPaymentCardDetails.fromProto(proto.cardDetails);}\n return m;\n }\n\n constructor(kwargs?: i.RetailPaymentInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.referenceId !== 'undefined') {toReturn['referenceId'] = this.referenceId;}\n if (typeof this.referenceType !== 'undefined') {toReturn['referenceType'] = this.referenceType;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.failureCode !== 'undefined') {toReturn['failureCode'] = this.failureCode;}\n if (typeof this.failureMessage !== 'undefined') {toReturn['failureMessage'] = this.failureMessage;}\n if (typeof this.applicationFee !== 'undefined') {toReturn['applicationFee'] = this.applicationFee;}\n if (typeof this.disputed !== 'undefined') {toReturn['disputed'] = this.disputed;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.dispute !== 'undefined' && this.dispute !== null) {toReturn['dispute'] = 'toApiJson' in this.dispute ? (this.dispute as any).toApiJson() : this.dispute;}\n if (typeof this.cardDetails !== 'undefined' && this.cardDetails !== null) {toReturn['cardDetails'] = 'toApiJson' in this.cardDetails ? (this.cardDetails as any).toApiJson() : this.cardDetails;}\n return toReturn;\n }\n}\n\nexport class RetailPaymentsEnabledRequest implements i.RetailPaymentsEnabledRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): RetailPaymentsEnabledRequest {\n let m = new RetailPaymentsEnabledRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.RetailPaymentsEnabledRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class RetailPaymentsEnabledResponse implements i.RetailPaymentsEnabledResponseInterface {\n enabled: boolean;\n\n static fromProto(proto: any): RetailPaymentsEnabledResponse {\n let m = new RetailPaymentsEnabledResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.RetailPaymentsEnabledResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.enabled !== 'undefined') {toReturn['enabled'] = this.enabled;}\n return toReturn;\n }\n}\n\nexport class RetailStatusRequest implements i.RetailStatusRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): RetailStatusRequest {\n let m = new RetailStatusRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.RetailStatusRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class RetailStatusResponse implements i.RetailStatusResponseInterface {\n supportedRegion: boolean;\n canAcceptPayment: boolean;\n requirements: RetailStatusResponseVerificationRequirements;\n disabledReason: string;\n\n static fromProto(proto: any): RetailStatusResponse {\n let m = new RetailStatusResponse();\n m = Object.assign(m, proto);\n if (proto.requirements) {m.requirements = RetailStatusResponseVerificationRequirements.fromProto(proto.requirements);}\n return m;\n }\n\n constructor(kwargs?: i.RetailStatusResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.supportedRegion !== 'undefined') {toReturn['supportedRegion'] = this.supportedRegion;}\n if (typeof this.canAcceptPayment !== 'undefined') {toReturn['canAcceptPayment'] = this.canAcceptPayment;}\n if (typeof this.requirements !== 'undefined' && this.requirements !== null) {toReturn['requirements'] = 'toApiJson' in this.requirements ? (this.requirements as any).toApiJson() : this.requirements;}\n if (typeof this.disabledReason !== 'undefined') {toReturn['disabledReason'] = this.disabledReason;}\n return toReturn;\n }\n}\n\nexport class SubmitEvidenceRequest implements i.SubmitEvidenceRequestInterface {\n merchantId: string;\n disputeId: string;\n paymentId: string;\n evidence: SubmitEvidenceRequestDisputeEvidence;\n submit: boolean;\n\n static fromProto(proto: any): SubmitEvidenceRequest {\n let m = new SubmitEvidenceRequest();\n m = Object.assign(m, proto);\n if (proto.evidence) {m.evidence = SubmitEvidenceRequestDisputeEvidence.fromProto(proto.evidence);}\n return m;\n }\n\n constructor(kwargs?: i.SubmitEvidenceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.disputeId !== 'undefined') {toReturn['disputeId'] = this.disputeId;}\n if (typeof this.paymentId !== 'undefined') {toReturn['paymentId'] = this.paymentId;}\n if (typeof this.evidence !== 'undefined' && this.evidence !== null) {toReturn['evidence'] = 'toApiJson' in this.evidence ? (this.evidence as any).toApiJson() : this.evidence;}\n if (typeof this.submit !== 'undefined') {toReturn['submit'] = this.submit;}\n return toReturn;\n }\n}\n\nexport class UpdateRetailPaymentProviderRequest implements i.UpdateRetailPaymentProviderRequestInterface {\n merchantId: string;\n statementDescriptor: string;\n\n static fromProto(proto: any): UpdateRetailPaymentProviderRequest {\n let m = new UpdateRetailPaymentProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdateRetailPaymentProviderRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.statementDescriptor !== 'undefined') {toReturn['statementDescriptor'] = this.statementDescriptor;}\n return toReturn;\n }\n}\n\nexport class RetailStatusResponseVerificationError implements i.RetailStatusResponseVerificationErrorInterface {\n requirement: string;\n code: string;\n reason: string;\n\n static fromProto(proto: any): RetailStatusResponseVerificationError {\n let m = new RetailStatusResponseVerificationError();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.RetailStatusResponseVerificationErrorInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.requirement !== 'undefined') {toReturn['requirement'] = this.requirement;}\n if (typeof this.code !== 'undefined') {toReturn['code'] = this.code;}\n if (typeof this.reason !== 'undefined') {toReturn['reason'] = this.reason;}\n return toReturn;\n }\n}\n\nexport class RetailStatusResponseVerificationRequirements implements i.RetailStatusResponseVerificationRequirementsInterface {\n due: string[];\n error: RetailStatusResponseVerificationError[];\n\n static fromProto(proto: any): RetailStatusResponseVerificationRequirements {\n let m = new RetailStatusResponseVerificationRequirements();\n m = Object.assign(m, proto);\n if (proto.error) {m.error = proto.error.map(RetailStatusResponseVerificationError.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.RetailStatusResponseVerificationRequirementsInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.due !== 'undefined') {toReturn['due'] = this.due;}\n if (typeof this.error !== 'undefined' && this.error !== null) {toReturn['error'] = 'toApiJson' in this.error ? (this.error as any).toApiJson() : this.error;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class CreatePaymentCardRequest implements i.CreatePaymentCardRequestInterface {\n merchantId: string;\n stripeToken: string;\n\n static fromProto(proto: any): CreatePaymentCardRequest {\n let m = new CreatePaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreatePaymentCardRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.stripeToken !== 'undefined') {toReturn['stripeToken'] = this.stripeToken;}\n return toReturn;\n }\n}\n\nexport class DeletePaymentCardRequest implements i.DeletePaymentCardRequestInterface {\n merchantId: string;\n cardId: string;\n\n static fromProto(proto: any): DeletePaymentCardRequest {\n let m = new DeletePaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeletePaymentCardRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.cardId !== 'undefined') {toReturn['cardId'] = this.cardId;}\n return toReturn;\n }\n}\n\nexport class ListPaymentCardsRequest implements i.ListPaymentCardsRequestInterface {\n merchantId: string;\n customerId: string;\n\n static fromProto(proto: any): ListPaymentCardsRequest {\n let m = new ListPaymentCardsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ListPaymentCardsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n return toReturn;\n }\n}\n\nexport class ListPaymentCardsResponse implements i.ListPaymentCardsResponseInterface {\n paymentCard: PaymentCard[];\n\n static fromProto(proto: any): ListPaymentCardsResponse {\n let m = new ListPaymentCardsResponse();\n m = Object.assign(m, proto);\n if (proto.paymentCard) {m.paymentCard = proto.paymentCard.map(PaymentCard.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListPaymentCardsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.paymentCard !== 'undefined' && this.paymentCard !== null) {toReturn['paymentCard'] = 'toApiJson' in this.paymentCard ? (this.paymentCard as any).toApiJson() : this.paymentCard;}\n return toReturn;\n }\n}\n\nexport class PaymentCard implements i.PaymentCardInterface {\n lastFourDigits: string;\n cardType: e.PaymentCardCARD_TYPE;\n address: string;\n city: string;\n state: string;\n country: string;\n zipCode: string;\n cardId: string;\n cardholderName: string;\n expiryMonth: number;\n expiryYear: number;\n fundingType: e.PaymentCardFUNDING_TYPE;\n default: boolean;\n\n static fromProto(proto: any): PaymentCard {\n let m = new PaymentCard();\n m = Object.assign(m, proto);\n if (proto.cardType) {m.cardType = enumStringToValue<e.PaymentCardCARD_TYPE>(e.PaymentCardCARD_TYPE, proto.cardType);}\n if (proto.fundingType) {m.fundingType = enumStringToValue<e.PaymentCardFUNDING_TYPE>(e.PaymentCardFUNDING_TYPE, proto.fundingType);}\n return m;\n }\n\n constructor(kwargs?: i.PaymentCardInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.lastFourDigits !== 'undefined') {toReturn['lastFourDigits'] = this.lastFourDigits;}\n if (typeof this.cardType !== 'undefined') {toReturn['cardType'] = this.cardType;}\n if (typeof this.address !== 'undefined') {toReturn['address'] = this.address;}\n if (typeof this.city !== 'undefined') {toReturn['city'] = this.city;}\n if (typeof this.state !== 'undefined') {toReturn['state'] = this.state;}\n if (typeof this.country !== 'undefined') {toReturn['country'] = this.country;}\n if (typeof this.zipCode !== 'undefined') {toReturn['zipCode'] = this.zipCode;}\n if (typeof this.cardId !== 'undefined') {toReturn['cardId'] = this.cardId;}\n if (typeof this.cardholderName !== 'undefined') {toReturn['cardholderName'] = this.cardholderName;}\n if (typeof this.expiryMonth !== 'undefined') {toReturn['expiryMonth'] = this.expiryMonth;}\n if (typeof this.expiryYear !== 'undefined') {toReturn['expiryYear'] = this.expiryYear;}\n if (typeof this.fundingType !== 'undefined') {toReturn['fundingType'] = this.fundingType;}\n if (typeof this.default !== 'undefined') {toReturn['default'] = this.default;}\n return toReturn;\n }\n}\n\nexport class SetDefaultPaymentMethodRequest implements i.SetDefaultPaymentMethodRequestInterface {\n merchantId: string;\n customerId: string;\n paymentMethodId: string;\n\n static fromProto(proto: any): SetDefaultPaymentMethodRequest {\n let m = new SetDefaultPaymentMethodRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SetDefaultPaymentMethodRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.paymentMethodId !== 'undefined') {toReturn['paymentMethodId'] = this.paymentMethodId;}\n return toReturn;\n }\n}\n\nexport class UpdatePaymentCardRequest implements i.UpdatePaymentCardRequestInterface {\n merchantId: string;\n stripeToken: string;\n\n static fromProto(proto: any): UpdatePaymentCardRequest {\n let m = new UpdatePaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdatePaymentCardRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.stripeToken !== 'undefined') {toReturn['stripeToken'] = this.stripeToken;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { FieldMask } from './field-mask';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class ComponentPricing implements i.ComponentPricingInterface {\n componentId: string;\n unitPrice: number;\n\n static fromProto(proto: any): ComponentPricing {\n let m = new ComponentPricing();\n m = Object.assign(m, proto);\n if (proto.unitPrice) {m.unitPrice = parseInt(proto.unitPrice, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ComponentPricingInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.componentId !== 'undefined') {toReturn['componentId'] = this.componentId;}\n if (typeof this.unitPrice !== 'undefined') {toReturn['unitPrice'] = this.unitPrice;}\n return toReturn;\n }\n}\n\nexport class CreatePricingPlanRequest implements i.CreatePricingPlanRequestInterface {\n name: string;\n defaultBillingStrategy: e.BillingStrategy;\n\n static fromProto(proto: any): CreatePricingPlanRequest {\n let m = new CreatePricingPlanRequest();\n m = Object.assign(m, proto);\n if (proto.defaultBillingStrategy) {m.defaultBillingStrategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.defaultBillingStrategy);}\n return m;\n }\n\n constructor(kwargs?: i.CreatePricingPlanRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.defaultBillingStrategy !== 'undefined') {toReturn['defaultBillingStrategy'] = this.defaultBillingStrategy;}\n return toReturn;\n }\n}\n\nexport class CreatePricingPlanResponse implements i.CreatePricingPlanResponseInterface {\n id: string;\n\n static fromProto(proto: any): CreatePricingPlanResponse {\n let m = new CreatePricingPlanResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreatePricingPlanResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class GetMultiPricingPlanRequest implements i.GetMultiPricingPlanRequestInterface {\n pricingPlanIds: string[];\n\n static fromProto(proto: any): GetMultiPricingPlanRequest {\n let m = new GetMultiPricingPlanRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiPricingPlanRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanIds !== 'undefined') {toReturn['pricingPlanIds'] = this.pricingPlanIds;}\n return toReturn;\n }\n}\n\nexport class GetMultiPricingPlanResponse implements i.GetMultiPricingPlanResponseInterface {\n plans: PricingPlan[];\n\n static fromProto(proto: any): GetMultiPricingPlanResponse {\n let m = new GetMultiPricingPlanResponse();\n m = Object.assign(m, proto);\n if (proto.plans) {m.plans = proto.plans.map(PricingPlan.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiPricingPlanResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.plans !== 'undefined' && this.plans !== null) {toReturn['plans'] = 'toApiJson' in this.plans ? (this.plans as any).toApiJson() : this.plans;}\n return toReturn;\n }\n}\n\nexport class PricingPlan implements i.PricingPlanInterface {\n id: string;\n name: string;\n defaultBillingStrategy: e.BillingStrategy;\n\n static fromProto(proto: any): PricingPlan {\n let m = new PricingPlan();\n m = Object.assign(m, proto);\n if (proto.defaultBillingStrategy) {m.defaultBillingStrategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.defaultBillingStrategy);}\n return m;\n }\n\n constructor(kwargs?: i.PricingPlanInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.defaultBillingStrategy !== 'undefined') {toReturn['defaultBillingStrategy'] = this.defaultBillingStrategy;}\n return toReturn;\n }\n}\n\nexport class PricingPlanProductPricing implements i.PricingPlanProductPricingInterface {\n type: e.ProductPricingType;\n rules: ProductPricingRule[];\n setupFee: number;\n frequency: e.Frequency;\n currencyCode: string;\n\n static fromProto(proto: any): PricingPlanProductPricing {\n let m = new PricingPlanProductPricing();\n m = Object.assign(m, proto);\n if (proto.type) {m.type = enumStringToValue<e.ProductPricingType>(e.ProductPricingType, proto.type);}\n if (proto.rules) {m.rules = proto.rules.map(ProductPricingRule.fromProto);}\n if (proto.setupFee) {m.setupFee = parseInt(proto.setupFee, 10);}\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n return m;\n }\n\n constructor(kwargs?: i.PricingPlanProductPricingInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n if (typeof this.rules !== 'undefined' && this.rules !== null) {toReturn['rules'] = 'toApiJson' in this.rules ? (this.rules as any).toApiJson() : this.rules;}\n if (typeof this.setupFee !== 'undefined') {toReturn['setupFee'] = this.setupFee;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n return toReturn;\n }\n}\n\nexport class ProductPricingRule implements i.ProductPricingRuleInterface {\n price: number;\n minUnits: number;\n maxUnits: number;\n componentPricing: ComponentPricing[];\n\n static fromProto(proto: any): ProductPricingRule {\n let m = new ProductPricingRule();\n m = Object.assign(m, proto);\n if (proto.price) {m.price = parseInt(proto.price, 10);}\n if (proto.minUnits) {m.minUnits = parseInt(proto.minUnits, 10);}\n if (proto.maxUnits) {m.maxUnits = parseInt(proto.maxUnits, 10);}\n if (proto.componentPricing) {m.componentPricing = proto.componentPricing.map(ComponentPricing.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ProductPricingRuleInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.price !== 'undefined') {toReturn['price'] = this.price;}\n if (typeof this.minUnits !== 'undefined') {toReturn['minUnits'] = this.minUnits;}\n if (typeof this.maxUnits !== 'undefined') {toReturn['maxUnits'] = this.maxUnits;}\n if (typeof this.componentPricing !== 'undefined' && this.componentPricing !== null) {toReturn['componentPricing'] = 'toApiJson' in this.componentPricing ? (this.componentPricing as any).toApiJson() : this.componentPricing;}\n return toReturn;\n }\n}\n\nexport class UpdatePricingPlanRequest implements i.UpdatePricingPlanRequestInterface {\n id: string;\n fieldMask: FieldMask;\n name: string;\n defaultBillingStrategy: e.BillingStrategy;\n\n static fromProto(proto: any): UpdatePricingPlanRequest {\n let m = new UpdatePricingPlanRequest();\n m = Object.assign(m, proto);\n if (proto.fieldMask) {m.fieldMask = FieldMask.fromProto(proto.fieldMask);}\n if (proto.defaultBillingStrategy) {m.defaultBillingStrategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.defaultBillingStrategy);}\n return m;\n }\n\n constructor(kwargs?: i.UpdatePricingPlanRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? (this.fieldMask as any).toApiJson() : this.fieldMask;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.defaultBillingStrategy !== 'undefined') {toReturn['defaultBillingStrategy'] = this.defaultBillingStrategy;}\n return toReturn;\n }\n}\n\nexport class UpdatePricingPlanResponse implements i.UpdatePricingPlanResponseInterface {\n\n static fromProto(proto: any): UpdatePricingPlanResponse {\n let m = new UpdatePricingPlanResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdatePricingPlanResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { Commitment } from './commitment';\nimport { FieldMask } from './field-mask';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport { PricingPlanProductPricing } from './pricing-plan';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class CreatePricingPlanProductRequest implements i.CreatePricingPlanProductRequestInterface {\n pricingPlanId: string;\n sku: string;\n frequency: e.Frequency;\n pricing: {[key: string]: PricingPlanProductPricing};\n commitment: Commitment;\n strategy: e.BillingStrategy;\n volumeCommitment: number;\n\n static fromProto(proto: any): CreatePricingPlanProductRequest {\n let m = new CreatePricingPlanProductRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.pricing) {m.pricing = Object.keys(proto.pricing).reduce<any>((obj, k) => { obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]); return obj; }, {});}\n if (proto.commitment) {m.commitment = Commitment.fromProto(proto.commitment);}\n if (proto.strategy) {m.strategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.strategy);}\n if (proto.volumeCommitment) {m.volumeCommitment = parseInt(proto.volumeCommitment, 10);}\n return m;\n }\n\n constructor(kwargs?: i.CreatePricingPlanProductRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {toReturn['pricing'] = 'toApiJson' in this.pricing ? (this.pricing as any).toApiJson() : this.pricing;}\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {toReturn['commitment'] = 'toApiJson' in this.commitment ? (this.commitment as any).toApiJson() : this.commitment;}\n if (typeof this.strategy !== 'undefined') {toReturn['strategy'] = this.strategy;}\n if (typeof this.volumeCommitment !== 'undefined') {toReturn['volumeCommitment'] = this.volumeCommitment;}\n return toReturn;\n }\n}\n\nexport class CreatePricingPlanProductResponse implements i.CreatePricingPlanProductResponseInterface {\n pricingPlanId: string;\n sku: string;\n\n static fromProto(proto: any): CreatePricingPlanProductResponse {\n let m = new CreatePricingPlanProductResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreatePricingPlanProductResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n return toReturn;\n }\n}\n\nexport class DeletePricingPlanProductRequest implements i.DeletePricingPlanProductRequestInterface {\n pricingPlanId: string;\n sku: string;\n\n static fromProto(proto: any): DeletePricingPlanProductRequest {\n let m = new DeletePricingPlanProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeletePricingPlanProductRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n return toReturn;\n }\n}\n\nexport class GetMultiPricingPlanProductRequest implements i.GetMultiPricingPlanProductRequestInterface {\n pricingPlanId: string;\n skus: string[];\n\n static fromProto(proto: any): GetMultiPricingPlanProductRequest {\n let m = new GetMultiPricingPlanProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiPricingPlanProductRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.skus !== 'undefined') {toReturn['skus'] = this.skus;}\n return toReturn;\n }\n}\n\nexport class GetMultiPricingPlanProductResponse implements i.GetMultiPricingPlanProductResponseInterface {\n pricingPlanProducts: PricingPlanProduct[];\n\n static fromProto(proto: any): GetMultiPricingPlanProductResponse {\n let m = new GetMultiPricingPlanProductResponse();\n m = Object.assign(m, proto);\n if (proto.pricingPlanProducts) {m.pricingPlanProducts = proto.pricingPlanProducts.map(PricingPlanProduct.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiPricingPlanProductResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanProducts !== 'undefined' && this.pricingPlanProducts !== null) {toReturn['pricingPlanProducts'] = 'toApiJson' in this.pricingPlanProducts ? (this.pricingPlanProducts as any).toApiJson() : this.pricingPlanProducts;}\n return toReturn;\n }\n}\n\nexport class GetPricingPlanProductRequest implements i.GetPricingPlanProductRequestInterface {\n pricingPlanId: string;\n sku: string;\n\n static fromProto(proto: any): GetPricingPlanProductRequest {\n let m = new GetPricingPlanProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetPricingPlanProductRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n return toReturn;\n }\n}\n\nexport class GetPricingPlanProductResponse implements i.GetPricingPlanProductResponseInterface {\n pricingPlanProduct: PricingPlanProduct;\n pricingPlanDefaultStrategy: e.BillingStrategy;\n\n static fromProto(proto: any): GetPricingPlanProductResponse {\n let m = new GetPricingPlanProductResponse();\n m = Object.assign(m, proto);\n if (proto.pricingPlanProduct) {m.pricingPlanProduct = PricingPlanProduct.fromProto(proto.pricingPlanProduct);}\n if (proto.pricingPlanDefaultStrategy) {m.pricingPlanDefaultStrategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.pricingPlanDefaultStrategy);}\n return m;\n }\n\n constructor(kwargs?: i.GetPricingPlanProductResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanProduct !== 'undefined' && this.pricingPlanProduct !== null) {toReturn['pricingPlanProduct'] = 'toApiJson' in this.pricingPlanProduct ? (this.pricingPlanProduct as any).toApiJson() : this.pricingPlanProduct;}\n if (typeof this.pricingPlanDefaultStrategy !== 'undefined') {toReturn['pricingPlanDefaultStrategy'] = this.pricingPlanDefaultStrategy;}\n return toReturn;\n }\n}\n\nexport class ListPricingPlanProductsRequestListPricingPlanProductsFilters implements i.ListPricingPlanProductsRequestListPricingPlanProductsFiltersInterface {\n sku: string;\n pricingPlanIds: string[];\n\n static fromProto(proto: any): ListPricingPlanProductsRequestListPricingPlanProductsFilters {\n let m = new ListPricingPlanProductsRequestListPricingPlanProductsFilters();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ListPricingPlanProductsRequestListPricingPlanProductsFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.pricingPlanIds !== 'undefined') {toReturn['pricingPlanIds'] = this.pricingPlanIds;}\n return toReturn;\n }\n}\n\nexport class ListPricingPlanProductsRequest implements i.ListPricingPlanProductsRequestInterface {\n sku: string;\n pagingOptions: PagedRequestOptions;\n filters: ListPricingPlanProductsRequestListPricingPlanProductsFilters;\n\n static fromProto(proto: any): ListPricingPlanProductsRequest {\n let m = new ListPricingPlanProductsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n if (proto.filters) {m.filters = ListPricingPlanProductsRequestListPricingPlanProductsFilters.fromProto(proto.filters);}\n return m;\n }\n\n constructor(kwargs?: i.ListPricingPlanProductsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n return toReturn;\n }\n}\n\nexport class ListPricingPlanProductsResponse implements i.ListPricingPlanProductsResponseInterface {\n products: PricingPlanProduct[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListPricingPlanProductsResponse {\n let m = new ListPricingPlanProductsResponse();\n m = Object.assign(m, proto);\n if (proto.products) {m.products = proto.products.map(PricingPlanProduct.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListPricingPlanProductsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.products !== 'undefined' && this.products !== null) {toReturn['products'] = 'toApiJson' in this.products ? (this.products as any).toApiJson() : this.products;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class PricingPlanProductPricingEntry implements i.PricingPlanProductPricingEntryInterface {\n key: string;\n value: PricingPlanProductPricing;\n\n static fromProto(proto: any): PricingPlanProductPricingEntry {\n let m = new PricingPlanProductPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = PricingPlanProductPricing.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.PricingPlanProductPricingEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class CreatePricingPlanProductRequestPricingEntry implements i.CreatePricingPlanProductRequestPricingEntryInterface {\n key: string;\n value: PricingPlanProductPricing;\n\n static fromProto(proto: any): CreatePricingPlanProductRequestPricingEntry {\n let m = new CreatePricingPlanProductRequestPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = PricingPlanProductPricing.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.CreatePricingPlanProductRequestPricingEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class UpdatePricingPlanProductRequestPricingEntry implements i.UpdatePricingPlanProductRequestPricingEntryInterface {\n key: string;\n value: PricingPlanProductPricing;\n\n static fromProto(proto: any): UpdatePricingPlanProductRequestPricingEntry {\n let m = new UpdatePricingPlanProductRequestPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = PricingPlanProductPricing.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.UpdatePricingPlanProductRequestPricingEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class PricingPlanProduct implements i.PricingPlanProductInterface {\n pricingPlanId: string;\n sku: string;\n frequency: e.Frequency;\n pricing: {[key: string]: PricingPlanProductPricing};\n commitment: Commitment;\n created: Date;\n modified: Date;\n strategy: e.BillingStrategy;\n volumeCommitment: number;\n pricingType: e.ProductPricingType;\n\n static fromProto(proto: any): PricingPlanProduct {\n let m = new PricingPlanProduct();\n m = Object.assign(m, proto);\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.pricing) {m.pricing = Object.keys(proto.pricing).reduce<any>((obj, k) => { obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]); return obj; }, {});}\n if (proto.commitment) {m.commitment = Commitment.fromProto(proto.commitment);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.modified) {m.modified = new Date(proto.modified);}\n if (proto.strategy) {m.strategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.strategy);}\n if (proto.volumeCommitment) {m.volumeCommitment = parseInt(proto.volumeCommitment, 10);}\n if (proto.pricingType) {m.pricingType = enumStringToValue<e.ProductPricingType>(e.ProductPricingType, proto.pricingType);}\n return m;\n }\n\n constructor(kwargs?: i.PricingPlanProductInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {toReturn['pricing'] = 'toApiJson' in this.pricing ? (this.pricing as any).toApiJson() : this.pricing;}\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {toReturn['commitment'] = 'toApiJson' in this.commitment ? (this.commitment as any).toApiJson() : this.commitment;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.modified !== 'undefined' && this.modified !== null) {toReturn['modified'] = 'toApiJson' in this.modified ? (this.modified as any).toApiJson() : this.modified;}\n if (typeof this.strategy !== 'undefined') {toReturn['strategy'] = this.strategy;}\n if (typeof this.volumeCommitment !== 'undefined') {toReturn['volumeCommitment'] = this.volumeCommitment;}\n if (typeof this.pricingType !== 'undefined') {toReturn['pricingType'] = this.pricingType;}\n return toReturn;\n }\n}\n\nexport class UpdatePricingPlanProductRequest implements i.UpdatePricingPlanProductRequestInterface {\n pricingPlanId: string;\n sku: string;\n frequency: e.Frequency;\n pricing: {[key: string]: PricingPlanProductPricing};\n commitment: Commitment;\n fieldMask: FieldMask;\n strategy: e.BillingStrategy;\n volumeCommitment: number;\n\n static fromProto(proto: any): UpdatePricingPlanProductRequest {\n let m = new UpdatePricingPlanProductRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.pricing) {m.pricing = Object.keys(proto.pricing).reduce<any>((obj, k) => { obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]); return obj; }, {});}\n if (proto.commitment) {m.commitment = Commitment.fromProto(proto.commitment);}\n if (proto.fieldMask) {m.fieldMask = FieldMask.fromProto(proto.fieldMask);}\n if (proto.strategy) {m.strategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.strategy);}\n if (proto.volumeCommitment) {m.volumeCommitment = parseInt(proto.volumeCommitment, 10);}\n return m;\n }\n\n constructor(kwargs?: i.UpdatePricingPlanProductRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {toReturn['pricing'] = 'toApiJson' in this.pricing ? (this.pricing as any).toApiJson() : this.pricing;}\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {toReturn['commitment'] = 'toApiJson' in this.commitment ? (this.commitment as any).toApiJson() : this.commitment;}\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? (this.fieldMask as any).toApiJson() : this.fieldMask;}\n if (typeof this.strategy !== 'undefined') {toReturn['strategy'] = this.strategy;}\n if (typeof this.volumeCommitment !== 'undefined') {toReturn['volumeCommitment'] = this.volumeCommitment;}\n return toReturn;\n }\n}\n\nexport class UpdatePricingPlanProductResponse implements i.UpdatePricingPlanProductResponseInterface {\n\n static fromProto(proto: any): UpdatePricingPlanProductResponse {\n let m = new UpdatePricingPlanProductResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdatePricingPlanProductResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n return toReturn;\n }\n}\n\nexport class UpsertWholesalePricingRequest implements i.UpsertWholesalePricingRequestInterface {\n pricingPlanId: string;\n sku: string;\n pricing: PricingPlanProductPricing[];\n termCommitment: Commitment;\n strategy: e.BillingStrategy;\n volumeCommitment: number;\n\n static fromProto(proto: any): UpsertWholesalePricingRequest {\n let m = new UpsertWholesalePricingRequest();\n m = Object.assign(m, proto);\n if (proto.pricing) {m.pricing = proto.pricing.map(PricingPlanProductPricing.fromProto);}\n if (proto.termCommitment) {m.termCommitment = Commitment.fromProto(proto.termCommitment);}\n if (proto.strategy) {m.strategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.strategy);}\n if (proto.volumeCommitment) {m.volumeCommitment = parseInt(proto.volumeCommitment, 10);}\n return m;\n }\n\n constructor(kwargs?: i.UpsertWholesalePricingRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {toReturn['pricing'] = 'toApiJson' in this.pricing ? (this.pricing as any).toApiJson() : this.pricing;}\n if (typeof this.termCommitment !== 'undefined' && this.termCommitment !== null) {toReturn['termCommitment'] = 'toApiJson' in this.termCommitment ? (this.termCommitment as any).toApiJson() : this.termCommitment;}\n if (typeof this.strategy !== 'undefined') {toReturn['strategy'] = this.strategy;}\n if (typeof this.volumeCommitment !== 'undefined') {toReturn['volumeCommitment'] = this.volumeCommitment;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class CreateProductRequest implements i.CreateProductRequestInterface {\n sku: string;\n productId: string;\n editionId: string;\n name: string;\n reportingCode: string;\n productType: e.ProductType;\n\n static fromProto(proto: any): CreateProductRequest {\n let m = new CreateProductRequest();\n m = Object.assign(m, proto);\n if (proto.productType) {m.productType = enumStringToValue<e.ProductType>(e.ProductType, proto.productType);}\n return m;\n }\n\n constructor(kwargs?: i.CreateProductRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.productId !== 'undefined') {toReturn['productId'] = this.productId;}\n if (typeof this.editionId !== 'undefined') {toReturn['editionId'] = this.editionId;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.reportingCode !== 'undefined') {toReturn['reportingCode'] = this.reportingCode;}\n if (typeof this.productType !== 'undefined') {toReturn['productType'] = this.productType;}\n return toReturn;\n }\n}\n\nexport class DeleteProductRequest implements i.DeleteProductRequestInterface {\n sku: string;\n\n static fromProto(proto: any): DeleteProductRequest {\n let m = new DeleteProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeleteProductRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n return toReturn;\n }\n}\n\nexport class GetMultiProductRequest implements i.GetMultiProductRequestInterface {\n skus: string[];\n\n static fromProto(proto: any): GetMultiProductRequest {\n let m = new GetMultiProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiProductRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.skus !== 'undefined') {toReturn['skus'] = this.skus;}\n return toReturn;\n }\n}\n\nexport class GetMultiProductResponse implements i.GetMultiProductResponseInterface {\n products: {[key: string]: Product};\n\n static fromProto(proto: any): GetMultiProductResponse {\n let m = new GetMultiProductResponse();\n m = Object.assign(m, proto);\n if (proto.products) {m.products = Object.keys(proto.products).reduce<any>((obj, k) => { obj[k] = Product.fromProto(proto.products[k]); return obj; }, {});}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiProductResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.products !== 'undefined' && this.products !== null) {toReturn['products'] = 'toApiJson' in this.products ? (this.products as any).toApiJson() : this.products;}\n return toReturn;\n }\n}\n\nexport class ListProductsRequestListProductsFilters implements i.ListProductsRequestListProductsFiltersInterface {\n hasDiscount: boolean;\n hasPricingOverride: boolean;\n productType: e.ProductType[];\n skus: string[];\n\n static fromProto(proto: any): ListProductsRequestListProductsFilters {\n let m = new ListProductsRequestListProductsFilters();\n m = Object.assign(m, proto);\n if (proto.productType) {m.productType = proto.productType.map((v: string) => enumStringToValue<e.ProductType>(e.ProductType, v));}\n return m;\n }\n\n constructor(kwargs?: i.ListProductsRequestListProductsFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.hasDiscount !== 'undefined') {toReturn['hasDiscount'] = this.hasDiscount;}\n if (typeof this.hasPricingOverride !== 'undefined') {toReturn['hasPricingOverride'] = this.hasPricingOverride;}\n if (typeof this.productType !== 'undefined') {toReturn['productType'] = this.productType;}\n if (typeof this.skus !== 'undefined') {toReturn['skus'] = this.skus;}\n return toReturn;\n }\n}\n\nexport class ListProductsRequest implements i.ListProductsRequestInterface {\n merchantId: string;\n searchTerm: string;\n filters: ListProductsRequestListProductsFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListProductsRequest {\n let m = new ListProductsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListProductsRequestListProductsFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListProductsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.searchTerm !== 'undefined') {toReturn['searchTerm'] = this.searchTerm;}\n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListProductsResponse implements i.ListProductsResponseInterface {\n products: Product[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListProductsResponse {\n let m = new ListProductsResponse();\n m = Object.assign(m, proto);\n if (proto.products) {m.products = proto.products.map(Product.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListProductsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.products !== 'undefined' && this.products !== null) {toReturn['products'] = 'toApiJson' in this.products ? (this.products as any).toApiJson() : this.products;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class Product implements i.ProductInterface {\n name: string;\n sku: string;\n iconUrl: string;\n hasPricingOverride: boolean;\n hasDiscount: boolean;\n productType: e.ProductType;\n\n static fromProto(proto: any): Product {\n let m = new Product();\n m = Object.assign(m, proto);\n if (proto.productType) {m.productType = enumStringToValue<e.ProductType>(e.ProductType, proto.productType);}\n return m;\n }\n\n constructor(kwargs?: i.ProductInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.iconUrl !== 'undefined') {toReturn['iconUrl'] = this.iconUrl;}\n if (typeof this.hasPricingOverride !== 'undefined') {toReturn['hasPricingOverride'] = this.hasPricingOverride;}\n if (typeof this.hasDiscount !== 'undefined') {toReturn['hasDiscount'] = this.hasDiscount;}\n if (typeof this.productType !== 'undefined') {toReturn['productType'] = this.productType;}\n return toReturn;\n }\n}\n\nexport class GetMultiProductResponseProductsEntry implements i.GetMultiProductResponseProductsEntryInterface {\n key: string;\n value: Product;\n\n static fromProto(proto: any): GetMultiProductResponseProductsEntry {\n let m = new GetMultiProductResponseProductsEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = Product.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiProductResponseProductsEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class UpdateProductRequest implements i.UpdateProductRequestInterface {\n sku: string;\n name: string;\n reportingCode: string;\n productType: e.ProductType;\n\n static fromProto(proto: any): UpdateProductRequest {\n let m = new UpdateProductRequest();\n m = Object.assign(m, proto);\n if (proto.productType) {m.productType = enumStringToValue<e.ProductType>(e.ProductType, proto.productType);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateProductRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.reportingCode !== 'undefined') {toReturn['reportingCode'] = this.reportingCode;}\n if (typeof this.productType !== 'undefined') {toReturn['productType'] = this.productType;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { Commitment } from './commitment';\nimport { ProductPricingRule } from './pricing-plan';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class ProductPrices implements i.ProductPricesInterface {\n sku: string;\n prices: ProductPricing[];\n\n static fromProto(proto: any): ProductPrices {\n let m = new ProductPrices();\n m = Object.assign(m, proto);\n if (proto.prices) {m.prices = proto.prices.map(ProductPricing.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ProductPricesInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.prices !== 'undefined' && this.prices !== null) {toReturn['prices'] = 'toApiJson' in this.prices ? (this.prices as any).toApiJson() : this.prices;}\n return toReturn;\n }\n}\n\nexport class ProductPricing implements i.ProductPricingInterface {\n strategy: e.BillingStrategy;\n pricingType: e.ProductPricingType;\n currency: e.Currency;\n frequency: e.Frequency;\n pricingRules: ProductPricingRule[];\n commitment: Commitment;\n isStartingPrice: boolean;\n resolvedFrom: string;\n volumeCommitment: number;\n setupFee: number;\n\n static fromProto(proto: any): ProductPricing {\n let m = new ProductPricing();\n m = Object.assign(m, proto);\n if (proto.strategy) {m.strategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.strategy);}\n if (proto.pricingType) {m.pricingType = enumStringToValue<e.ProductPricingType>(e.ProductPricingType, proto.pricingType);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.pricingRules) {m.pricingRules = proto.pricingRules.map(ProductPricingRule.fromProto);}\n if (proto.commitment) {m.commitment = Commitment.fromProto(proto.commitment);}\n if (proto.volumeCommitment) {m.volumeCommitment = parseInt(proto.volumeCommitment, 10);}\n if (proto.setupFee) {m.setupFee = parseInt(proto.setupFee, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ProductPricingInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.strategy !== 'undefined') {toReturn['strategy'] = this.strategy;}\n if (typeof this.pricingType !== 'undefined') {toReturn['pricingType'] = this.pricingType;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.pricingRules !== 'undefined' && this.pricingRules !== null) {toReturn['pricingRules'] = 'toApiJson' in this.pricingRules ? (this.pricingRules as any).toApiJson() : this.pricingRules;}\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {toReturn['commitment'] = 'toApiJson' in this.commitment ? (this.commitment as any).toApiJson() : this.commitment;}\n if (typeof this.isStartingPrice !== 'undefined') {toReturn['isStartingPrice'] = this.isStartingPrice;}\n if (typeof this.resolvedFrom !== 'undefined') {toReturn['resolvedFrom'] = this.resolvedFrom;}\n if (typeof this.volumeCommitment !== 'undefined') {toReturn['volumeCommitment'] = this.volumeCommitment;}\n if (typeof this.setupFee !== 'undefined') {toReturn['setupFee'] = this.setupFee;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { AppliedDiscount } from './applied-discount';\nimport { AppliedTaxRate } from './applied-tax-rate';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AppliedCredit implements i.AppliedCreditInterface {\n appliedAmount: number;\n referenceId: string;\n referenceType: e.CreditType;\n\n static fromProto(proto: any): AppliedCredit {\n let m = new AppliedCredit();\n m = Object.assign(m, proto);\n if (proto.appliedAmount) {m.appliedAmount = parseInt(proto.appliedAmount, 10);}\n if (proto.referenceType) {m.referenceType = enumStringToValue<e.CreditType>(e.CreditType, proto.referenceType);}\n return m;\n }\n\n constructor(kwargs?: i.AppliedCreditInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.appliedAmount !== 'undefined') {toReturn['appliedAmount'] = this.appliedAmount;}\n if (typeof this.referenceId !== 'undefined') {toReturn['referenceId'] = this.referenceId;}\n if (typeof this.referenceType !== 'undefined') {toReturn['referenceType'] = this.referenceType;}\n return toReturn;\n }\n}\n\nexport class ListPurchaseRequestListPurchaseBillingStrategyFilter implements i.ListPurchaseRequestListPurchaseBillingStrategyFilterInterface {\n billingStrategy: e.BillingStrategy[];\n\n static fromProto(proto: any): ListPurchaseRequestListPurchaseBillingStrategyFilter {\n let m = new ListPurchaseRequestListPurchaseBillingStrategyFilter();\n m = Object.assign(m, proto);\n if (proto.billingStrategy) {m.billingStrategy = proto.billingStrategy.map((v: string) => enumStringToValue<e.BillingStrategy>(e.BillingStrategy, v));}\n return m;\n }\n\n constructor(kwargs?: i.ListPurchaseRequestListPurchaseBillingStrategyFilterInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.billingStrategy !== 'undefined') {toReturn['billingStrategy'] = this.billingStrategy;}\n return toReturn;\n }\n}\n\nexport class ListPurchaseRequestListPurchaseFilters implements i.ListPurchaseRequestListPurchaseFiltersInterface {\n merchantId: string;\n purchaseId: string;\n start: Date;\n end: Date;\n billingStrategyFilter: ListPurchaseRequestListPurchaseBillingStrategyFilter;\n state: e.ListPurchaseRequestState;\n minPrice: number;\n status: e.PurchaseStatus;\n includeVoided: boolean;\n\n static fromProto(proto: any): ListPurchaseRequestListPurchaseFilters {\n let m = new ListPurchaseRequestListPurchaseFilters();\n m = Object.assign(m, proto);\n if (proto.start) {m.start = new Date(proto.start);}\n if (proto.end) {m.end = new Date(proto.end);}\n if (proto.billingStrategyFilter) {m.billingStrategyFilter = ListPurchaseRequestListPurchaseBillingStrategyFilter.fromProto(proto.billingStrategyFilter);}\n if (proto.state) {m.state = enumStringToValue<e.ListPurchaseRequestState>(e.ListPurchaseRequestState, proto.state);}\n if (proto.minPrice) {m.minPrice = parseInt(proto.minPrice, 10);}\n if (proto.status) {m.status = enumStringToValue<e.PurchaseStatus>(e.PurchaseStatus, proto.status);}\n return m;\n }\n\n constructor(kwargs?: i.ListPurchaseRequestListPurchaseFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.purchaseId !== 'undefined') {toReturn['purchaseId'] = this.purchaseId;}\n if (typeof this.start !== 'undefined' && this.start !== null) {toReturn['start'] = 'toApiJson' in this.start ? (this.start as any).toApiJson() : this.start;}\n if (typeof this.end !== 'undefined' && this.end !== null) {toReturn['end'] = 'toApiJson' in this.end ? (this.end as any).toApiJson() : this.end;}\n if (typeof this.billingStrategyFilter !== 'undefined' && this.billingStrategyFilter !== null) {toReturn['billingStrategyFilter'] = 'toApiJson' in this.billingStrategyFilter ? (this.billingStrategyFilter as any).toApiJson() : this.billingStrategyFilter;}\n if (typeof this.state !== 'undefined') {toReturn['state'] = this.state;}\n if (typeof this.minPrice !== 'undefined') {toReturn['minPrice'] = this.minPrice;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.includeVoided !== 'undefined') {toReturn['includeVoided'] = this.includeVoided;}\n return toReturn;\n }\n}\n\nexport class ListPurchaseItemsRequestListPurchaseItemsFilters implements i.ListPurchaseItemsRequestListPurchaseItemsFiltersInterface {\n merchantId: string;\n customerId: string;\n start: Date;\n end: Date;\n\n static fromProto(proto: any): ListPurchaseItemsRequestListPurchaseItemsFilters {\n let m = new ListPurchaseItemsRequestListPurchaseItemsFilters();\n m = Object.assign(m, proto);\n if (proto.start) {m.start = new Date(proto.start);}\n if (proto.end) {m.end = new Date(proto.end);}\n return m;\n }\n\n constructor(kwargs?: i.ListPurchaseItemsRequestListPurchaseItemsFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.start !== 'undefined' && this.start !== null) {toReturn['start'] = 'toApiJson' in this.start ? (this.start as any).toApiJson() : this.start;}\n if (typeof this.end !== 'undefined' && this.end !== null) {toReturn['end'] = 'toApiJson' in this.end ? (this.end as any).toApiJson() : this.end;}\n return toReturn;\n }\n}\n\nexport class ListPurchaseItemsRequest implements i.ListPurchaseItemsRequestInterface {\n filters: ListPurchaseItemsRequestListPurchaseItemsFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListPurchaseItemsRequest {\n let m = new ListPurchaseItemsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListPurchaseItemsRequestListPurchaseItemsFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListPurchaseItemsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListPurchaseItemsResponse implements i.ListPurchaseItemsResponseInterface {\n purchaseItems: PurchaseItem[];\n pagingMetadata: PagedResponseMetadata;\n currency: e.Currency;\n\n static fromProto(proto: any): ListPurchaseItemsResponse {\n let m = new ListPurchaseItemsResponse();\n m = Object.assign(m, proto);\n if (proto.purchaseItems) {m.purchaseItems = proto.purchaseItems.map(PurchaseItem.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n return m;\n }\n\n constructor(kwargs?: i.ListPurchaseItemsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.purchaseItems !== 'undefined' && this.purchaseItems !== null) {toReturn['purchaseItems'] = 'toApiJson' in this.purchaseItems ? (this.purchaseItems as any).toApiJson() : this.purchaseItems;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n return toReturn;\n }\n}\n\nexport class ListPurchaseRequest implements i.ListPurchaseRequestInterface {\n filters: ListPurchaseRequestListPurchaseFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListPurchaseRequest {\n let m = new ListPurchaseRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListPurchaseRequestListPurchaseFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListPurchaseRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListPurchaseResponse implements i.ListPurchaseResponseInterface {\n purchases: Purchase[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListPurchaseResponse {\n let m = new ListPurchaseResponse();\n m = Object.assign(m, proto);\n if (proto.purchases) {m.purchases = proto.purchases.map(Purchase.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListPurchaseResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.purchases !== 'undefined' && this.purchases !== null) {toReturn['purchases'] = 'toApiJson' in this.purchases ? (this.purchases as any).toApiJson() : this.purchases;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class Purchase implements i.PurchaseInterface {\n merchantId: string;\n timestamp: Date;\n purchaseId: string;\n total: number;\n currency: e.Currency;\n renewal: boolean;\n items: PurchaseItem[];\n billingStrategy: e.BillingStrategy;\n isDunning: boolean;\n dunningAttempt: number;\n voided: Date;\n paid: boolean;\n status: e.PurchaseStatus;\n creditAmount: number;\n appliedCredits: AppliedCredit[];\n taxAmount: number;\n appliedTaxRates: AppliedTaxRate[];\n\n static fromProto(proto: any): Purchase {\n let m = new Purchase();\n m = Object.assign(m, proto);\n if (proto.timestamp) {m.timestamp = new Date(proto.timestamp);}\n if (proto.total) {m.total = parseInt(proto.total, 10);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n if (proto.items) {m.items = proto.items.map(PurchaseItem.fromProto);}\n if (proto.billingStrategy) {m.billingStrategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.billingStrategy);}\n if (proto.dunningAttempt) {m.dunningAttempt = parseInt(proto.dunningAttempt, 10);}\n if (proto.voided) {m.voided = new Date(proto.voided);}\n if (proto.status) {m.status = enumStringToValue<e.PurchaseStatus>(e.PurchaseStatus, proto.status);}\n if (proto.creditAmount) {m.creditAmount = parseInt(proto.creditAmount, 10);}\n if (proto.appliedCredits) {m.appliedCredits = proto.appliedCredits.map(AppliedCredit.fromProto);}\n if (proto.taxAmount) {m.taxAmount = parseInt(proto.taxAmount, 10);}\n if (proto.appliedTaxRates) {m.appliedTaxRates = proto.appliedTaxRates.map(AppliedTaxRate.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.PurchaseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.timestamp !== 'undefined' && this.timestamp !== null) {toReturn['timestamp'] = 'toApiJson' in this.timestamp ? (this.timestamp as any).toApiJson() : this.timestamp;}\n if (typeof this.purchaseId !== 'undefined') {toReturn['purchaseId'] = this.purchaseId;}\n if (typeof this.total !== 'undefined') {toReturn['total'] = this.total;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.renewal !== 'undefined') {toReturn['renewal'] = this.renewal;}\n if (typeof this.items !== 'undefined' && this.items !== null) {toReturn['items'] = 'toApiJson' in this.items ? (this.items as any).toApiJson() : this.items;}\n if (typeof this.billingStrategy !== 'undefined') {toReturn['billingStrategy'] = this.billingStrategy;}\n if (typeof this.isDunning !== 'undefined') {toReturn['isDunning'] = this.isDunning;}\n if (typeof this.dunningAttempt !== 'undefined') {toReturn['dunningAttempt'] = this.dunningAttempt;}\n if (typeof this.voided !== 'undefined' && this.voided !== null) {toReturn['voided'] = 'toApiJson' in this.voided ? (this.voided as any).toApiJson() : this.voided;}\n if (typeof this.paid !== 'undefined') {toReturn['paid'] = this.paid;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.creditAmount !== 'undefined') {toReturn['creditAmount'] = this.creditAmount;}\n if (typeof this.appliedCredits !== 'undefined' && this.appliedCredits !== null) {toReturn['appliedCredits'] = 'toApiJson' in this.appliedCredits ? (this.appliedCredits as any).toApiJson() : this.appliedCredits;}\n if (typeof this.taxAmount !== 'undefined') {toReturn['taxAmount'] = this.taxAmount;}\n if (typeof this.appliedTaxRates !== 'undefined' && this.appliedTaxRates !== null) {toReturn['appliedTaxRates'] = 'toApiJson' in this.appliedTaxRates ? (this.appliedTaxRates as any).toApiJson() : this.appliedTaxRates;}\n return toReturn;\n }\n}\n\nexport class PurchaseItem implements i.PurchaseItemInterface {\n sku: string;\n amount: number;\n orderId: string;\n customerId: string;\n discountAmount: number;\n total: number;\n appliedDiscounts: AppliedDiscount[];\n merchantId: string;\n day: string;\n purchaseId: string;\n description: string;\n taxAmount: number;\n appliedTaxRates: AppliedTaxRate[];\n setupFee: number;\n\n static fromProto(proto: any): PurchaseItem {\n let m = new PurchaseItem();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.discountAmount) {m.discountAmount = parseInt(proto.discountAmount, 10);}\n if (proto.total) {m.total = parseInt(proto.total, 10);}\n if (proto.appliedDiscounts) {m.appliedDiscounts = proto.appliedDiscounts.map(AppliedDiscount.fromProto);}\n if (proto.taxAmount) {m.taxAmount = parseInt(proto.taxAmount, 10);}\n if (proto.appliedTaxRates) {m.appliedTaxRates = proto.appliedTaxRates.map(AppliedTaxRate.fromProto);}\n if (proto.setupFee) {m.setupFee = parseInt(proto.setupFee, 10);}\n return m;\n }\n\n constructor(kwargs?: i.PurchaseItemInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.discountAmount !== 'undefined') {toReturn['discountAmount'] = this.discountAmount;}\n if (typeof this.total !== 'undefined') {toReturn['total'] = this.total;}\n if (typeof this.appliedDiscounts !== 'undefined' && this.appliedDiscounts !== null) {toReturn['appliedDiscounts'] = 'toApiJson' in this.appliedDiscounts ? (this.appliedDiscounts as any).toApiJson() : this.appliedDiscounts;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.day !== 'undefined') {toReturn['day'] = this.day;}\n if (typeof this.purchaseId !== 'undefined') {toReturn['purchaseId'] = this.purchaseId;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.taxAmount !== 'undefined') {toReturn['taxAmount'] = this.taxAmount;}\n if (typeof this.appliedTaxRates !== 'undefined' && this.appliedTaxRates !== null) {toReturn['appliedTaxRates'] = 'toApiJson' in this.appliedTaxRates ? (this.appliedTaxRates as any).toApiJson() : this.appliedTaxRates;}\n if (typeof this.setupFee !== 'undefined') {toReturn['setupFee'] = this.setupFee;}\n return toReturn;\n }\n}\n\nexport class RetryPurchaseRequest implements i.RetryPurchaseRequestInterface {\n purchaseId: string;\n merchantId: string;\n day: string;\n shouldEnterDunning: boolean;\n\n static fromProto(proto: any): RetryPurchaseRequest {\n let m = new RetryPurchaseRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.RetryPurchaseRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.purchaseId !== 'undefined') {toReturn['purchaseId'] = this.purchaseId;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.day !== 'undefined') {toReturn['day'] = this.day;}\n if (typeof this.shouldEnterDunning !== 'undefined') {toReturn['shouldEnterDunning'] = this.shouldEnterDunning;}\n return toReturn;\n }\n}\n\nexport class VoidPurchaseRequest implements i.VoidPurchaseRequestInterface {\n purchaseId: string;\n merchantId: string;\n day: string;\n\n static fromProto(proto: any): VoidPurchaseRequest {\n let m = new VoidPurchaseRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.VoidPurchaseRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.purchaseId !== 'undefined') {toReturn['purchaseId'] = this.purchaseId;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.day !== 'undefined') {toReturn['day'] = this.day;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class CreateRefundRequest implements i.CreateRefundRequestInterface {\n merchantId: string;\n paymentId: string;\n amount: number;\n reason: e.RefundReason;\n referenceType: e.ReferenceType;\n referenceId: string;\n\n static fromProto(proto: any): CreateRefundRequest {\n let m = new CreateRefundRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.reason) {m.reason = enumStringToValue<e.RefundReason>(e.RefundReason, proto.reason);}\n if (proto.referenceType) {m.referenceType = enumStringToValue<e.ReferenceType>(e.ReferenceType, proto.referenceType);}\n return m;\n }\n\n constructor(kwargs?: i.CreateRefundRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.paymentId !== 'undefined') {toReturn['paymentId'] = this.paymentId;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.reason !== 'undefined') {toReturn['reason'] = this.reason;}\n if (typeof this.referenceType !== 'undefined') {toReturn['referenceType'] = this.referenceType;}\n if (typeof this.referenceId !== 'undefined') {toReturn['referenceId'] = this.referenceId;}\n return toReturn;\n }\n}\n\nexport class ListRefundsRequest implements i.ListRefundsRequestInterface {\n paymentIds: string[];\n cursor: string;\n pageSize: number;\n merchantId: string;\n\n static fromProto(proto: any): ListRefundsRequest {\n let m = new ListRefundsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {m.pageSize = parseInt(proto.pageSize, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ListRefundsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.paymentIds !== 'undefined') {toReturn['paymentIds'] = this.paymentIds;}\n if (typeof this.cursor !== 'undefined') {toReturn['cursor'] = this.cursor;}\n if (typeof this.pageSize !== 'undefined') {toReturn['pageSize'] = this.pageSize;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class ListRefundsResponse implements i.ListRefundsResponseInterface {\n refunds: Refund[];\n nextCursor: string;\n hasMore: boolean;\n\n static fromProto(proto: any): ListRefundsResponse {\n let m = new ListRefundsResponse();\n m = Object.assign(m, proto);\n if (proto.refunds) {m.refunds = proto.refunds.map(Refund.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.ListRefundsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.refunds !== 'undefined' && this.refunds !== null) {toReturn['refunds'] = 'toApiJson' in this.refunds ? (this.refunds as any).toApiJson() : this.refunds;}\n if (typeof this.nextCursor !== 'undefined') {toReturn['nextCursor'] = this.nextCursor;}\n if (typeof this.hasMore !== 'undefined') {toReturn['hasMore'] = this.hasMore;}\n return toReturn;\n }\n}\n\nexport class Refund implements i.RefundInterface {\n merchantId: string;\n chargeId: string;\n refundId: string;\n amount: number;\n email: string;\n reason: e.RefundReason;\n status: e.RefundStatus;\n created: Date;\n updated: Date;\n referenceType: e.ReferenceType;\n referenceId: string;\n\n static fromProto(proto: any): Refund {\n let m = new Refund();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n if (proto.reason) {m.reason = enumStringToValue<e.RefundReason>(e.RefundReason, proto.reason);}\n if (proto.status) {m.status = enumStringToValue<e.RefundStatus>(e.RefundStatus, proto.status);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n if (proto.referenceType) {m.referenceType = enumStringToValue<e.ReferenceType>(e.ReferenceType, proto.referenceType);}\n return m;\n }\n\n constructor(kwargs?: i.RefundInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.chargeId !== 'undefined') {toReturn['chargeId'] = this.chargeId;}\n if (typeof this.refundId !== 'undefined') {toReturn['refundId'] = this.refundId;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.email !== 'undefined') {toReturn['email'] = this.email;}\n if (typeof this.reason !== 'undefined') {toReturn['reason'] = this.reason;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.referenceType !== 'undefined') {toReturn['referenceType'] = this.referenceType;}\n if (typeof this.referenceId !== 'undefined') {toReturn['referenceId'] = this.referenceId;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class CreateSalesCreditNoteRequest implements i.CreateSalesCreditNoteRequestInterface {\n merchantId: string;\n creditNoteReason: string;\n creditNoteDate: Date;\n dueDate: Date;\n total: number;\n sku: string;\n\n static fromProto(proto: any): CreateSalesCreditNoteRequest {\n let m = new CreateSalesCreditNoteRequest();\n m = Object.assign(m, proto);\n if (proto.creditNoteDate) {m.creditNoteDate = new Date(proto.creditNoteDate);}\n if (proto.dueDate) {m.dueDate = new Date(proto.dueDate);}\n if (proto.total) {m.total = parseInt(proto.total, 10);}\n return m;\n }\n\n constructor(kwargs?: i.CreateSalesCreditNoteRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.creditNoteReason !== 'undefined') {toReturn['creditNoteReason'] = this.creditNoteReason;}\n if (typeof this.creditNoteDate !== 'undefined' && this.creditNoteDate !== null) {toReturn['creditNoteDate'] = 'toApiJson' in this.creditNoteDate ? (this.creditNoteDate as any).toApiJson() : this.creditNoteDate;}\n if (typeof this.dueDate !== 'undefined' && this.dueDate !== null) {toReturn['dueDate'] = 'toApiJson' in this.dueDate ? (this.dueDate as any).toApiJson() : this.dueDate;}\n if (typeof this.total !== 'undefined') {toReturn['total'] = this.total;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n return toReturn;\n }\n}\n\nexport class ListSalesCreditNoteRequestListSalesCreditNoteFilters implements i.ListSalesCreditNoteRequestListSalesCreditNoteFiltersInterface {\n merchantId: string;\n statuses: e.SalesCreditNoteStatus[];\n\n static fromProto(proto: any): ListSalesCreditNoteRequestListSalesCreditNoteFilters {\n let m = new ListSalesCreditNoteRequestListSalesCreditNoteFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {m.statuses = proto.statuses.map((v: string) => enumStringToValue<e.SalesCreditNoteStatus>(e.SalesCreditNoteStatus, v));}\n return m;\n }\n\n constructor(kwargs?: i.ListSalesCreditNoteRequestListSalesCreditNoteFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.statuses !== 'undefined') {toReturn['statuses'] = this.statuses;}\n return toReturn;\n }\n}\n\nexport class ListSalesCreditNoteRequest implements i.ListSalesCreditNoteRequestInterface {\n filters: ListSalesCreditNoteRequestListSalesCreditNoteFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListSalesCreditNoteRequest {\n let m = new ListSalesCreditNoteRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListSalesCreditNoteRequestListSalesCreditNoteFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListSalesCreditNoteRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListSalesCreditNoteResponse implements i.ListSalesCreditNoteResponseInterface {\n creditNote: SalesCreditNote[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListSalesCreditNoteResponse {\n let m = new ListSalesCreditNoteResponse();\n m = Object.assign(m, proto);\n if (proto.creditNote) {m.creditNote = proto.creditNote.map(SalesCreditNote.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListSalesCreditNoteResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.creditNote !== 'undefined' && this.creditNote !== null) {toReturn['creditNote'] = 'toApiJson' in this.creditNote ? (this.creditNote as any).toApiJson() : this.creditNote;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class SalesCreditNote implements i.SalesCreditNoteInterface {\n creditNoteId: string;\n creditNoteNumber: string;\n merchantId: string;\n creditNoteReason: string;\n creditNoteDate: Date;\n dueDate: Date;\n currency: e.Currency;\n total: number;\n outstanding: number;\n invoiceId: string;\n invoiceNumber: string;\n status: e.SalesCreditNoteStatus;\n paymentStatus: string;\n\n static fromProto(proto: any): SalesCreditNote {\n let m = new SalesCreditNote();\n m = Object.assign(m, proto);\n if (proto.creditNoteDate) {m.creditNoteDate = new Date(proto.creditNoteDate);}\n if (proto.dueDate) {m.dueDate = new Date(proto.dueDate);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n if (proto.total) {m.total = parseInt(proto.total, 10);}\n if (proto.outstanding) {m.outstanding = parseInt(proto.outstanding, 10);}\n if (proto.status) {m.status = enumStringToValue<e.SalesCreditNoteStatus>(e.SalesCreditNoteStatus, proto.status);}\n return m;\n }\n\n constructor(kwargs?: i.SalesCreditNoteInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.creditNoteId !== 'undefined') {toReturn['creditNoteId'] = this.creditNoteId;}\n if (typeof this.creditNoteNumber !== 'undefined') {toReturn['creditNoteNumber'] = this.creditNoteNumber;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.creditNoteReason !== 'undefined') {toReturn['creditNoteReason'] = this.creditNoteReason;}\n if (typeof this.creditNoteDate !== 'undefined' && this.creditNoteDate !== null) {toReturn['creditNoteDate'] = 'toApiJson' in this.creditNoteDate ? (this.creditNoteDate as any).toApiJson() : this.creditNoteDate;}\n if (typeof this.dueDate !== 'undefined' && this.dueDate !== null) {toReturn['dueDate'] = 'toApiJson' in this.dueDate ? (this.dueDate as any).toApiJson() : this.dueDate;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.total !== 'undefined') {toReturn['total'] = this.total;}\n if (typeof this.outstanding !== 'undefined') {toReturn['outstanding'] = this.outstanding;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.invoiceNumber !== 'undefined') {toReturn['invoiceNumber'] = this.invoiceNumber;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.paymentStatus !== 'undefined') {toReturn['paymentStatus'] = this.paymentStatus;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class GetSalesInvoiceRequest implements i.GetSalesInvoiceRequestInterface {\n invoiceId: string;\n merchantId: string;\n\n static fromProto(proto: any): GetSalesInvoiceRequest {\n let m = new GetSalesInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetSalesInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetSalesInvoiceResponse implements i.GetSalesInvoiceResponseInterface {\n invoice: SalesInvoice;\n\n static fromProto(proto: any): GetSalesInvoiceResponse {\n let m = new GetSalesInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = SalesInvoice.fromProto(proto.invoice);}\n return m;\n }\n\n constructor(kwargs?: i.GetSalesInvoiceResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n return toReturn;\n }\n}\n\nexport class ListSalesInvoiceRequestListSalesInvoiceFilters implements i.ListSalesInvoiceRequestListSalesInvoiceFiltersInterface {\n merchantId: string;\n statuses: e.SalesInvoiceStatus[];\n paymentStatuses: e.PaymentStatuses[];\n invoiceId: string[];\n\n static fromProto(proto: any): ListSalesInvoiceRequestListSalesInvoiceFilters {\n let m = new ListSalesInvoiceRequestListSalesInvoiceFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {m.statuses = proto.statuses.map((v: string) => enumStringToValue<e.SalesInvoiceStatus>(e.SalesInvoiceStatus, v));}\n if (proto.paymentStatuses) {m.paymentStatuses = proto.paymentStatuses.map((v: string) => enumStringToValue<e.PaymentStatuses>(e.PaymentStatuses, v));}\n return m;\n }\n\n constructor(kwargs?: i.ListSalesInvoiceRequestListSalesInvoiceFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.statuses !== 'undefined') {toReturn['statuses'] = this.statuses;}\n if (typeof this.paymentStatuses !== 'undefined') {toReturn['paymentStatuses'] = this.paymentStatuses;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\nexport class ListSalesInvoiceRequest implements i.ListSalesInvoiceRequestInterface {\n filters: ListSalesInvoiceRequestListSalesInvoiceFilters;\n pagingOptions: PagedRequestOptions;\n searchTerm: string;\n\n static fromProto(proto: any): ListSalesInvoiceRequest {\n let m = new ListSalesInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListSalesInvoiceRequestListSalesInvoiceFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListSalesInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n if (typeof this.searchTerm !== 'undefined') {toReturn['searchTerm'] = this.searchTerm;}\n return toReturn;\n }\n}\n\nexport class ListSalesInvoiceResponse implements i.ListSalesInvoiceResponseInterface {\n invoice: SalesInvoice[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListSalesInvoiceResponse {\n let m = new ListSalesInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {m.invoice = proto.invoice.map(SalesInvoice.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListSalesInvoiceResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {toReturn['invoice'] = 'toApiJson' in this.invoice ? (this.invoice as any).toApiJson() : this.invoice;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class PostSalesInvoiceRequest implements i.PostSalesInvoiceRequestInterface {\n invoiceId: string;\n\n static fromProto(proto: any): PostSalesInvoiceRequest {\n let m = new PostSalesInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.PostSalesInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\nexport class SalesInvoice implements i.SalesInvoiceInterface {\n invoiceId: string;\n invoiceNumber: string;\n merchantId: string;\n invoiceDate: Date;\n startDate: Date;\n endDate: Date;\n dueDate: Date;\n total: number;\n currency: e.Currency;\n status: e.SalesInvoiceStatus;\n paymentStatus: string;\n outstanding: number;\n type: e.SalesInvoiceType;\n\n static fromProto(proto: any): SalesInvoice {\n let m = new SalesInvoice();\n m = Object.assign(m, proto);\n if (proto.invoiceDate) {m.invoiceDate = new Date(proto.invoiceDate);}\n if (proto.startDate) {m.startDate = new Date(proto.startDate);}\n if (proto.endDate) {m.endDate = new Date(proto.endDate);}\n if (proto.dueDate) {m.dueDate = new Date(proto.dueDate);}\n if (proto.total) {m.total = parseInt(proto.total, 10);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n if (proto.status) {m.status = enumStringToValue<e.SalesInvoiceStatus>(e.SalesInvoiceStatus, proto.status);}\n if (proto.outstanding) {m.outstanding = parseInt(proto.outstanding, 10);}\n if (proto.type) {m.type = enumStringToValue<e.SalesInvoiceType>(e.SalesInvoiceType, proto.type);}\n return m;\n }\n\n constructor(kwargs?: i.SalesInvoiceInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n if (typeof this.invoiceNumber !== 'undefined') {toReturn['invoiceNumber'] = this.invoiceNumber;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceDate !== 'undefined' && this.invoiceDate !== null) {toReturn['invoiceDate'] = 'toApiJson' in this.invoiceDate ? (this.invoiceDate as any).toApiJson() : this.invoiceDate;}\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {toReturn['startDate'] = 'toApiJson' in this.startDate ? (this.startDate as any).toApiJson() : this.startDate;}\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {toReturn['endDate'] = 'toApiJson' in this.endDate ? (this.endDate as any).toApiJson() : this.endDate;}\n if (typeof this.dueDate !== 'undefined' && this.dueDate !== null) {toReturn['dueDate'] = 'toApiJson' in this.dueDate ? (this.dueDate as any).toApiJson() : this.dueDate;}\n if (typeof this.total !== 'undefined') {toReturn['total'] = this.total;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.paymentStatus !== 'undefined') {toReturn['paymentStatus'] = this.paymentStatus;}\n if (typeof this.outstanding !== 'undefined') {toReturn['outstanding'] = this.outstanding;}\n if (typeof this.type !== 'undefined') {toReturn['type'] = this.type;}\n return toReturn;\n }\n}\n\nexport class SendSalesInvoiceEmailRequest implements i.SendSalesInvoiceEmailRequestInterface {\n merchantId: string;\n invoiceId: string;\n\n static fromProto(proto: any): SendSalesInvoiceEmailRequest {\n let m = new SendSalesInvoiceEmailRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SendSalesInvoiceEmailRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\nexport class SendSalesInvoiceReceiptEmailRequest implements i.SendSalesInvoiceReceiptEmailRequestInterface {\n merchantId: string;\n invoiceId: string;\n\n static fromProto(proto: any): SendSalesInvoiceReceiptEmailRequest {\n let m = new SendSalesInvoiceReceiptEmailRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.SendSalesInvoiceReceiptEmailRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceId !== 'undefined') {toReturn['invoiceId'] = this.invoiceId;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class SubscribeValidation implements i.SubscribeValidationInterface {\n status: e.SubscribeValidationStatus;\n\n static fromProto(proto: any): SubscribeValidation {\n let m = new SubscribeValidation();\n m = Object.assign(m, proto);\n if (proto.status) {m.status = enumStringToValue<e.SubscribeValidationStatus>(e.SubscribeValidationStatus, proto.status);}\n return m;\n }\n\n constructor(kwargs?: i.SubscribeValidationInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { SubscribeValidation } from './subscribe-validation';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AlignmentSubscription implements i.AlignmentSubscriptionInterface {\n sku: string;\n customerId: string;\n orderId: string;\n\n static fromProto(proto: any): AlignmentSubscription {\n let m = new AlignmentSubscription();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.AlignmentSubscriptionInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n return toReturn;\n }\n}\n\nexport class CanCreateSubscriptionsRequest implements i.CanCreateSubscriptionsRequestInterface {\n merchantId: string;\n skus: {[key: string]: number};\n items: CanCreateSubscriptionsRequestSubscriptionItem[];\n\n static fromProto(proto: any): CanCreateSubscriptionsRequest {\n let m = new CanCreateSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.skus) {m.skus = Object.keys(proto.skus).reduce<any>((obj, k) => { obj[k] = parseInt(proto.skus[k], 10); return obj; }, {});}\n if (proto.items) {m.items = proto.items.map(CanCreateSubscriptionsRequestSubscriptionItem.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.CanCreateSubscriptionsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.skus !== 'undefined' && this.skus !== null) {toReturn['skus'] = 'toApiJson' in this.skus ? (this.skus as any).toApiJson() : this.skus;}\n if (typeof this.items !== 'undefined' && this.items !== null) {toReturn['items'] = 'toApiJson' in this.items ? (this.items as any).toApiJson() : this.items;}\n return toReturn;\n }\n}\n\nexport class CanCreateSubscriptionsResponse implements i.CanCreateSubscriptionsResponseInterface {\n validationResponse: ValidateResponse[];\n\n static fromProto(proto: any): CanCreateSubscriptionsResponse {\n let m = new CanCreateSubscriptionsResponse();\n m = Object.assign(m, proto);\n if (proto.validationResponse) {m.validationResponse = proto.validationResponse.map(ValidateResponse.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.CanCreateSubscriptionsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.validationResponse !== 'undefined' && this.validationResponse !== null) {toReturn['validationResponse'] = 'toApiJson' in this.validationResponse ? (this.validationResponse as any).toApiJson() : this.validationResponse;}\n return toReturn;\n }\n}\n\nexport class ChangeCustomUnitPriceRequest implements i.ChangeCustomUnitPriceRequestInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n customUnitPrice: number;\n\n static fromProto(proto: any): ChangeCustomUnitPriceRequest {\n let m = new ChangeCustomUnitPriceRequest();\n m = Object.assign(m, proto);\n if (proto.customUnitPrice) {m.customUnitPrice = parseInt(proto.customUnitPrice, 10);}\n return m;\n }\n\n constructor(kwargs?: i.ChangeCustomUnitPriceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.customUnitPrice !== 'undefined') {toReturn['customUnitPrice'] = this.customUnitPrice;}\n return toReturn;\n }\n}\n\nexport class ChangeFrequencyRequest implements i.ChangeFrequencyRequestInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n frequency: e.Frequency;\n\n static fromProto(proto: any): ChangeFrequencyRequest {\n let m = new ChangeFrequencyRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n return m;\n }\n\n constructor(kwargs?: i.ChangeFrequencyRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n return toReturn;\n }\n}\n\nexport class ChangeRenewalDateRequest implements i.ChangeRenewalDateRequestInterface {\n merchantId: string;\n customerId: string;\n sku: string;\n orderId: string;\n nextRenewalDate: Date;\n\n static fromProto(proto: any): ChangeRenewalDateRequest {\n let m = new ChangeRenewalDateRequest();\n m = Object.assign(m, proto);\n if (proto.nextRenewalDate) {m.nextRenewalDate = new Date(proto.nextRenewalDate);}\n return m;\n }\n\n constructor(kwargs?: i.ChangeRenewalDateRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.nextRenewalDate !== 'undefined' && this.nextRenewalDate !== null) {toReturn['nextRenewalDate'] = 'toApiJson' in this.nextRenewalDate ? (this.nextRenewalDate as any).toApiJson() : this.nextRenewalDate;}\n return toReturn;\n }\n}\n\nexport class CreateSubscriptionRequest implements i.CreateSubscriptionRequestInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n billingStart: Date;\n proratedTo: Date;\n renewalState: e.RenewalState;\n retailBundleId: string;\n forResale: boolean;\n customUnitPrice: number;\n alignWith: AlignmentSubscription;\n frequency: e.Frequency;\n retailAmount: number;\n retailFrequency: e.Frequency;\n\n static fromProto(proto: any): CreateSubscriptionRequest {\n let m = new CreateSubscriptionRequest();\n m = Object.assign(m, proto);\n if (proto.billingStart) {m.billingStart = new Date(proto.billingStart);}\n if (proto.proratedTo) {m.proratedTo = new Date(proto.proratedTo);}\n if (proto.renewalState) {m.renewalState = enumStringToValue<e.RenewalState>(e.RenewalState, proto.renewalState);}\n if (proto.customUnitPrice) {m.customUnitPrice = parseInt(proto.customUnitPrice, 10);}\n if (proto.alignWith) {m.alignWith = AlignmentSubscription.fromProto(proto.alignWith);}\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.retailAmount) {m.retailAmount = parseInt(proto.retailAmount, 10);}\n if (proto.retailFrequency) {m.retailFrequency = enumStringToValue<e.Frequency>(e.Frequency, proto.retailFrequency);}\n return m;\n }\n\n constructor(kwargs?: i.CreateSubscriptionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {toReturn['billingStart'] = 'toApiJson' in this.billingStart ? (this.billingStart as any).toApiJson() : this.billingStart;}\n if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? (this.proratedTo as any).toApiJson() : this.proratedTo;}\n if (typeof this.renewalState !== 'undefined') {toReturn['renewalState'] = this.renewalState;}\n if (typeof this.retailBundleId !== 'undefined') {toReturn['retailBundleId'] = this.retailBundleId;}\n if (typeof this.forResale !== 'undefined') {toReturn['forResale'] = this.forResale;}\n if (typeof this.customUnitPrice !== 'undefined') {toReturn['customUnitPrice'] = this.customUnitPrice;}\n if (typeof this.alignWith !== 'undefined' && this.alignWith !== null) {toReturn['alignWith'] = 'toApiJson' in this.alignWith ? (this.alignWith as any).toApiJson() : this.alignWith;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.retailAmount !== 'undefined') {toReturn['retailAmount'] = this.retailAmount;}\n if (typeof this.retailFrequency !== 'undefined') {toReturn['retailFrequency'] = this.retailFrequency;}\n return toReturn;\n }\n}\n\nexport class CreateSubscriptionsRequest implements i.CreateSubscriptionsRequestInterface {\n merchantId: string;\n subscriptions: Subscription[];\n\n static fromProto(proto: any): CreateSubscriptionsRequest {\n let m = new CreateSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.subscriptions) {m.subscriptions = proto.subscriptions.map(Subscription.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.CreateSubscriptionsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.subscriptions !== 'undefined' && this.subscriptions !== null) {toReturn['subscriptions'] = 'toApiJson' in this.subscriptions ? (this.subscriptions as any).toApiJson() : this.subscriptions;}\n return toReturn;\n }\n}\n\nexport class CreateSubscriptionsResponse implements i.CreateSubscriptionsResponseInterface {\n id: string;\n\n static fromProto(proto: any): CreateSubscriptionsResponse {\n let m = new CreateSubscriptionsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateSubscriptionsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class ReverseSubscriptionRequest implements i.ReverseSubscriptionRequestInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n\n static fromProto(proto: any): ReverseSubscriptionRequest {\n let m = new ReverseSubscriptionRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ReverseSubscriptionRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n return toReturn;\n }\n}\n\nexport class SetRenewalStartRequest implements i.SetRenewalStartRequestInterface {\n merchantId: string;\n sku: string;\n customerId: string;\n orderId: string;\n renewalStart: Date;\n\n static fromProto(proto: any): SetRenewalStartRequest {\n let m = new SetRenewalStartRequest();\n m = Object.assign(m, proto);\n if (proto.renewalStart) {m.renewalStart = new Date(proto.renewalStart);}\n return m;\n }\n\n constructor(kwargs?: i.SetRenewalStartRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.renewalStart !== 'undefined' && this.renewalStart !== null) {toReturn['renewalStart'] = 'toApiJson' in this.renewalStart ? (this.renewalStart as any).toApiJson() : this.renewalStart;}\n return toReturn;\n }\n}\n\nexport class CanCreateSubscriptionsRequestSkusEntry implements i.CanCreateSubscriptionsRequestSkusEntryInterface {\n key: string;\n value: number;\n\n static fromProto(proto: any): CanCreateSubscriptionsRequestSkusEntry {\n let m = new CanCreateSubscriptionsRequestSkusEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = parseInt(proto.value, 10);}\n return m;\n }\n\n constructor(kwargs?: i.CanCreateSubscriptionsRequestSkusEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined') {toReturn['value'] = this.value;}\n return toReturn;\n }\n}\n\nexport class Subscription implements i.SubscriptionInterface {\n sku: string;\n customerId: string;\n orderId: string;\n billingStart: Date;\n renewalState: e.RenewalState;\n proratedTo: Date;\n retailBundleId: string;\n forResale: boolean;\n customUnitPrice: number;\n alignWith: AlignmentSubscription;\n bundleInstanceId: string;\n frequency: e.Frequency;\n retailAmount: number;\n retailFrequency: e.Frequency;\n\n static fromProto(proto: any): Subscription {\n let m = new Subscription();\n m = Object.assign(m, proto);\n if (proto.billingStart) {m.billingStart = new Date(proto.billingStart);}\n if (proto.renewalState) {m.renewalState = enumStringToValue<e.RenewalState>(e.RenewalState, proto.renewalState);}\n if (proto.proratedTo) {m.proratedTo = new Date(proto.proratedTo);}\n if (proto.customUnitPrice) {m.customUnitPrice = parseInt(proto.customUnitPrice, 10);}\n if (proto.alignWith) {m.alignWith = AlignmentSubscription.fromProto(proto.alignWith);}\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.retailAmount) {m.retailAmount = parseInt(proto.retailAmount, 10);}\n if (proto.retailFrequency) {m.retailFrequency = enumStringToValue<e.Frequency>(e.Frequency, proto.retailFrequency);}\n return m;\n }\n\n constructor(kwargs?: i.SubscriptionInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.orderId !== 'undefined') {toReturn['orderId'] = this.orderId;}\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {toReturn['billingStart'] = 'toApiJson' in this.billingStart ? (this.billingStart as any).toApiJson() : this.billingStart;}\n if (typeof this.renewalState !== 'undefined') {toReturn['renewalState'] = this.renewalState;}\n if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? (this.proratedTo as any).toApiJson() : this.proratedTo;}\n if (typeof this.retailBundleId !== 'undefined') {toReturn['retailBundleId'] = this.retailBundleId;}\n if (typeof this.forResale !== 'undefined') {toReturn['forResale'] = this.forResale;}\n if (typeof this.customUnitPrice !== 'undefined') {toReturn['customUnitPrice'] = this.customUnitPrice;}\n if (typeof this.alignWith !== 'undefined' && this.alignWith !== null) {toReturn['alignWith'] = 'toApiJson' in this.alignWith ? (this.alignWith as any).toApiJson() : this.alignWith;}\n if (typeof this.bundleInstanceId !== 'undefined') {toReturn['bundleInstanceId'] = this.bundleInstanceId;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.retailAmount !== 'undefined') {toReturn['retailAmount'] = this.retailAmount;}\n if (typeof this.retailFrequency !== 'undefined') {toReturn['retailFrequency'] = this.retailFrequency;}\n return toReturn;\n }\n}\n\nexport class CanCreateSubscriptionsRequestSubscriptionItem implements i.CanCreateSubscriptionsRequestSubscriptionItemInterface {\n sku: string;\n frequency: e.Frequency;\n quantity: number;\n\n static fromProto(proto: any): CanCreateSubscriptionsRequestSubscriptionItem {\n let m = new CanCreateSubscriptionsRequestSubscriptionItem();\n m = Object.assign(m, proto);\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.quantity) {m.quantity = parseInt(proto.quantity, 10);}\n return m;\n }\n\n constructor(kwargs?: i.CanCreateSubscriptionsRequestSubscriptionItemInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n return toReturn;\n }\n}\n\nexport class ValidateResponse implements i.ValidateResponseInterface {\n sku: string;\n code: SubscribeValidation;\n\n static fromProto(proto: any): ValidateResponse {\n let m = new ValidateResponse();\n m = Object.assign(m, proto);\n if (proto.code) {m.code = SubscribeValidation.fromProto(proto.code);}\n return m;\n }\n\n constructor(kwargs?: i.ValidateResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.code !== 'undefined' && this.code !== null) {toReturn['code'] = 'toApiJson' in this.code ? (this.code as any).toApiJson() : this.code;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class ContractDocument implements i.ContractDocumentInterface {\n merchantId: string;\n id: string;\n filename: string;\n created: Date;\n\n static fromProto(proto: any): ContractDocument {\n let m = new ContractDocument();\n m = Object.assign(m, proto);\n if (proto.created) {m.created = new Date(proto.created);}\n return m;\n }\n\n constructor(kwargs?: i.ContractDocumentInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.filename !== 'undefined') {toReturn['filename'] = this.filename;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n return toReturn;\n }\n}\n\nexport class DeleteContractDocumentRequest implements i.DeleteContractDocumentRequestInterface {\n merchantId: string;\n id: string;\n\n static fromProto(proto: any): DeleteContractDocumentRequest {\n let m = new DeleteContractDocumentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeleteContractDocumentRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class ListContractDocumentsRequestFilters implements i.ListContractDocumentsRequestFiltersInterface {\n merchantId: string;\n\n static fromProto(proto: any): ListContractDocumentsRequestFilters {\n let m = new ListContractDocumentsRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.ListContractDocumentsRequestFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class ListContractDocumentsRequest implements i.ListContractDocumentsRequestInterface {\n filters: ListContractDocumentsRequestFilters;\n pagingOptions: PagedRequestOptions;\n\n static fromProto(proto: any): ListContractDocumentsRequest {\n let m = new ListContractDocumentsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {m.filters = ListContractDocumentsRequestFilters.fromProto(proto.filters);}\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListContractDocumentsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.filters !== 'undefined' && this.filters !== null) {toReturn['filters'] = 'toApiJson' in this.filters ? (this.filters as any).toApiJson() : this.filters;}\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n return toReturn;\n }\n}\n\nexport class ListContractDocumentsResponse implements i.ListContractDocumentsResponseInterface {\n contractDocuments: ContractDocument[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListContractDocumentsResponse {\n let m = new ListContractDocumentsResponse();\n m = Object.assign(m, proto);\n if (proto.contractDocuments) {m.contractDocuments = proto.contractDocuments.map(ContractDocument.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListContractDocumentsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.contractDocuments !== 'undefined' && this.contractDocuments !== null) {toReturn['contractDocuments'] = 'toApiJson' in this.contractDocuments ? (this.contractDocuments as any).toApiJson() : this.contractDocuments;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class GetRetailCustomerConfigurationRequest implements i.GetRetailCustomerConfigurationRequestInterface {\n customerId: string;\n merchantId: string;\n\n static fromProto(proto: any): GetRetailCustomerConfigurationRequest {\n let m = new GetRetailCustomerConfigurationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetRetailCustomerConfigurationRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetRetailCustomerConfigurationResponse implements i.GetRetailCustomerConfigurationResponseInterface {\n configuration: RetailCustomerConfiguration;\n\n static fromProto(proto: any): GetRetailCustomerConfigurationResponse {\n let m = new GetRetailCustomerConfigurationResponse();\n m = Object.assign(m, proto);\n if (proto.configuration) {m.configuration = RetailCustomerConfiguration.fromProto(proto.configuration);}\n return m;\n }\n\n constructor(kwargs?: i.GetRetailCustomerConfigurationResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.configuration !== 'undefined' && this.configuration !== null) {toReturn['configuration'] = 'toApiJson' in this.configuration ? (this.configuration as any).toApiJson() : this.configuration;}\n return toReturn;\n }\n}\n\nexport class RetailCustomerConfiguration implements i.RetailCustomerConfigurationInterface {\n customerId: string;\n merchantId: string;\n invoiceDay: number;\n nextInvoiceDate: Date;\n autoPost: boolean;\n collectionMethod: string;\n netD: number;\n autoGenerate: boolean;\n contactId: string;\n useTemplateInvoice: boolean;\n\n static fromProto(proto: any): RetailCustomerConfiguration {\n let m = new RetailCustomerConfiguration();\n m = Object.assign(m, proto);\n if (proto.invoiceDay) {m.invoiceDay = parseInt(proto.invoiceDay, 10);}\n if (proto.nextInvoiceDate) {m.nextInvoiceDate = new Date(proto.nextInvoiceDate);}\n if (proto.netD) {m.netD = parseInt(proto.netD, 10);}\n return m;\n }\n\n constructor(kwargs?: i.RetailCustomerConfigurationInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceDay !== 'undefined') {toReturn['invoiceDay'] = this.invoiceDay;}\n if (typeof this.nextInvoiceDate !== 'undefined' && this.nextInvoiceDate !== null) {toReturn['nextInvoiceDate'] = 'toApiJson' in this.nextInvoiceDate ? (this.nextInvoiceDate as any).toApiJson() : this.nextInvoiceDate;}\n if (typeof this.autoPost !== 'undefined') {toReturn['autoPost'] = this.autoPost;}\n if (typeof this.collectionMethod !== 'undefined') {toReturn['collectionMethod'] = this.collectionMethod;}\n if (typeof this.netD !== 'undefined') {toReturn['netD'] = this.netD;}\n if (typeof this.autoGenerate !== 'undefined') {toReturn['autoGenerate'] = this.autoGenerate;}\n if (typeof this.contactId !== 'undefined') {toReturn['contactId'] = this.contactId;}\n if (typeof this.useTemplateInvoice !== 'undefined') {toReturn['useTemplateInvoice'] = this.useTemplateInvoice;}\n return toReturn;\n }\n}\n\nexport class UpsertRetailCustomerConfigurationRequest implements i.UpsertRetailCustomerConfigurationRequestInterface {\n customerId: string;\n merchantId: string;\n invoiceDay: number;\n autoPost: boolean;\n netD: number;\n autoGenerate: boolean;\n contactId: string;\n collectionMethod: string;\n useTemplateInvoice: boolean;\n\n static fromProto(proto: any): UpsertRetailCustomerConfigurationRequest {\n let m = new UpsertRetailCustomerConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.invoiceDay) {m.invoiceDay = parseInt(proto.invoiceDay, 10);}\n if (proto.netD) {m.netD = parseInt(proto.netD, 10);}\n return m;\n }\n\n constructor(kwargs?: i.UpsertRetailCustomerConfigurationRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.invoiceDay !== 'undefined') {toReturn['invoiceDay'] = this.invoiceDay;}\n if (typeof this.autoPost !== 'undefined') {toReturn['autoPost'] = this.autoPost;}\n if (typeof this.netD !== 'undefined') {toReturn['netD'] = this.netD;}\n if (typeof this.autoGenerate !== 'undefined') {toReturn['autoGenerate'] = this.autoGenerate;}\n if (typeof this.contactId !== 'undefined') {toReturn['contactId'] = this.contactId;}\n if (typeof this.collectionMethod !== 'undefined') {toReturn['collectionMethod'] = this.collectionMethod;}\n if (typeof this.useTemplateInvoice !== 'undefined') {toReturn['useTemplateInvoice'] = this.useTemplateInvoice;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\n\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AddCreditRequest implements i.AddCreditRequestInterface {\n merchantId: string;\n currency: string;\n amount: number;\n idempotencyKey: string;\n reason: string;\n\n static fromProto(proto: any): AddCreditRequest {\n let m = new AddCreditRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.AddCreditRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n if (typeof this.idempotencyKey !== 'undefined') {toReturn['idempotencyKey'] = this.idempotencyKey;}\n if (typeof this.reason !== 'undefined') {toReturn['reason'] = this.reason;}\n return toReturn;\n }\n}\n\nexport class CreditBalance implements i.CreditBalanceInterface {\n merchantId: string;\n currency: string;\n amount: number;\n\n static fromProto(proto: any): CreditBalance {\n let m = new CreditBalance();\n m = Object.assign(m, proto);\n if (proto.amount) {m.amount = parseInt(proto.amount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.CreditBalanceInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.amount !== 'undefined') {toReturn['amount'] = this.amount;}\n return toReturn;\n }\n}\n\nexport class GetBalanceRequest implements i.GetBalanceRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): GetBalanceRequest {\n let m = new GetBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetBalanceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetBalanceResponse implements i.GetBalanceResponseInterface {\n creditBalance: CreditBalance;\n\n static fromProto(proto: any): GetBalanceResponse {\n let m = new GetBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.creditBalance) {m.creditBalance = CreditBalance.fromProto(proto.creditBalance);}\n return m;\n }\n\n constructor(kwargs?: i.GetBalanceResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.creditBalance !== 'undefined' && this.creditBalance !== null) {toReturn['creditBalance'] = 'toApiJson' in this.creditBalance ? (this.creditBalance as any).toApiJson() : this.creditBalance;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { AppliedBundle } from './applied-bundle';\nimport { AppliedDiscount } from './applied-discount';\nimport { AppliedTaxRate } from './applied-tax-rate';\nimport { TaxRate } from './tax-rate';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class AddTemplateBundleRequest implements i.AddTemplateBundleRequestInterface {\n merchantId: string;\n customerId: string;\n bundleId: string;\n\n static fromProto(proto: any): AddTemplateBundleRequest {\n let m = new AddTemplateBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.AddTemplateBundleRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n return toReturn;\n }\n}\n\nexport class AddTemplateBundleResponse implements i.AddTemplateBundleResponseInterface {\n invoiceTemplate: InvoiceTemplate;\n\n static fromProto(proto: any): AddTemplateBundleResponse {\n let m = new AddTemplateBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoiceTemplate) {m.invoiceTemplate = InvoiceTemplate.fromProto(proto.invoiceTemplate);}\n return m;\n }\n\n constructor(kwargs?: i.AddTemplateBundleResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceTemplate !== 'undefined' && this.invoiceTemplate !== null) {toReturn['invoiceTemplate'] = 'toApiJson' in this.invoiceTemplate ? (this.invoiceTemplate as any).toApiJson() : this.invoiceTemplate;}\n return toReturn;\n }\n}\n\nexport class AddTemplateLineItemRequest implements i.AddTemplateLineItemRequestInterface {\n merchantId: string;\n customerId: string;\n sku: string;\n unitPrice: number;\n quantity: number;\n description: string;\n taxRates: string[];\n\n static fromProto(proto: any): AddTemplateLineItemRequest {\n let m = new AddTemplateLineItemRequest();\n m = Object.assign(m, proto);\n if (proto.unitPrice) {m.unitPrice = parseInt(proto.unitPrice, 10);}\n return m;\n }\n\n constructor(kwargs?: i.AddTemplateLineItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.unitPrice !== 'undefined') {toReturn['unitPrice'] = this.unitPrice;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.taxRates !== 'undefined') {toReturn['taxRates'] = this.taxRates;}\n return toReturn;\n }\n}\n\nexport class AddTemplateLineItemResponse implements i.AddTemplateLineItemResponseInterface {\n invoiceTemplate: InvoiceTemplate;\n\n static fromProto(proto: any): AddTemplateLineItemResponse {\n let m = new AddTemplateLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoiceTemplate) {m.invoiceTemplate = InvoiceTemplate.fromProto(proto.invoiceTemplate);}\n return m;\n }\n\n constructor(kwargs?: i.AddTemplateLineItemResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceTemplate !== 'undefined' && this.invoiceTemplate !== null) {toReturn['invoiceTemplate'] = 'toApiJson' in this.invoiceTemplate ? (this.invoiceTemplate as any).toApiJson() : this.invoiceTemplate;}\n return toReturn;\n }\n}\n\nexport class CreateTemplateRequest implements i.CreateTemplateRequestInterface {\n merchantId: string;\n customerId: string;\n\n static fromProto(proto: any): CreateTemplateRequest {\n let m = new CreateTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.CreateTemplateRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n return toReturn;\n }\n}\n\nexport class CreateTemplateResponse implements i.CreateTemplateResponseInterface {\n invoiceTemplate: InvoiceTemplate;\n\n static fromProto(proto: any): CreateTemplateResponse {\n let m = new CreateTemplateResponse();\n m = Object.assign(m, proto);\n if (proto.invoiceTemplate) {m.invoiceTemplate = InvoiceTemplate.fromProto(proto.invoiceTemplate);}\n return m;\n }\n\n constructor(kwargs?: i.CreateTemplateResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceTemplate !== 'undefined' && this.invoiceTemplate !== null) {toReturn['invoiceTemplate'] = 'toApiJson' in this.invoiceTemplate ? (this.invoiceTemplate as any).toApiJson() : this.invoiceTemplate;}\n return toReturn;\n }\n}\n\nexport class DeleteInvoiceTemplateRequest implements i.DeleteInvoiceTemplateRequestInterface {\n merchantId: string;\n customerId: string;\n\n static fromProto(proto: any): DeleteInvoiceTemplateRequest {\n let m = new DeleteInvoiceTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeleteInvoiceTemplateRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n return toReturn;\n }\n}\n\nexport class DeleteTemplateLineItemRequest implements i.DeleteTemplateLineItemRequestInterface {\n merchantId: string;\n customerId: string;\n id: string;\n\n static fromProto(proto: any): DeleteTemplateLineItemRequest {\n let m = new DeleteTemplateLineItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeleteTemplateLineItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class DeleteTemplateLineItemResponse implements i.DeleteTemplateLineItemResponseInterface {\n invoiceTemplate: InvoiceTemplate;\n\n static fromProto(proto: any): DeleteTemplateLineItemResponse {\n let m = new DeleteTemplateLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoiceTemplate) {m.invoiceTemplate = InvoiceTemplate.fromProto(proto.invoiceTemplate);}\n return m;\n }\n\n constructor(kwargs?: i.DeleteTemplateLineItemResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceTemplate !== 'undefined' && this.invoiceTemplate !== null) {toReturn['invoiceTemplate'] = 'toApiJson' in this.invoiceTemplate ? (this.invoiceTemplate as any).toApiJson() : this.invoiceTemplate;}\n return toReturn;\n }\n}\n\nexport class GetInvoiceTemplateRequest implements i.GetInvoiceTemplateRequestInterface {\n merchantId: string;\n customerId: string;\n\n static fromProto(proto: any): GetInvoiceTemplateRequest {\n let m = new GetInvoiceTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetInvoiceTemplateRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n return toReturn;\n }\n}\n\nexport class GetInvoiceTemplateResponse implements i.GetInvoiceTemplateResponseInterface {\n invoiceTemplate: InvoiceTemplate;\n\n static fromProto(proto: any): GetInvoiceTemplateResponse {\n let m = new GetInvoiceTemplateResponse();\n m = Object.assign(m, proto);\n if (proto.invoiceTemplate) {m.invoiceTemplate = InvoiceTemplate.fromProto(proto.invoiceTemplate);}\n return m;\n }\n\n constructor(kwargs?: i.GetInvoiceTemplateResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceTemplate !== 'undefined' && this.invoiceTemplate !== null) {toReturn['invoiceTemplate'] = 'toApiJson' in this.invoiceTemplate ? (this.invoiceTemplate as any).toApiJson() : this.invoiceTemplate;}\n return toReturn;\n }\n}\n\nexport class InvoiceTemplate implements i.InvoiceTemplateInterface {\n merchantId: string;\n customerId: string;\n appliedTaxes: AppliedTaxRate[];\n items: InvoiceTemplateItem[];\n currency: e.Currency;\n total: number;\n subtotal: number;\n created: Date;\n updated: Date;\n defaultTaxRates: TaxRate[];\n appliedBundles: AppliedBundle[];\n amountDiscount: number;\n\n static fromProto(proto: any): InvoiceTemplate {\n let m = new InvoiceTemplate();\n m = Object.assign(m, proto);\n if (proto.appliedTaxes) {m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);}\n if (proto.items) {m.items = proto.items.map(InvoiceTemplateItem.fromProto);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n if (proto.total) {m.total = parseInt(proto.total, 10);}\n if (proto.subtotal) {m.subtotal = parseInt(proto.subtotal, 10);}\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n if (proto.defaultTaxRates) {m.defaultTaxRates = proto.defaultTaxRates.map(TaxRate.fromProto);}\n if (proto.appliedBundles) {m.appliedBundles = proto.appliedBundles.map(AppliedBundle.fromProto);}\n if (proto.amountDiscount) {m.amountDiscount = parseInt(proto.amountDiscount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.InvoiceTemplateInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? (this.appliedTaxes as any).toApiJson() : this.appliedTaxes;}\n if (typeof this.items !== 'undefined' && this.items !== null) {toReturn['items'] = 'toApiJson' in this.items ? (this.items as any).toApiJson() : this.items;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.total !== 'undefined') {toReturn['total'] = this.total;}\n if (typeof this.subtotal !== 'undefined') {toReturn['subtotal'] = this.subtotal;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.defaultTaxRates !== 'undefined' && this.defaultTaxRates !== null) {toReturn['defaultTaxRates'] = 'toApiJson' in this.defaultTaxRates ? (this.defaultTaxRates as any).toApiJson() : this.defaultTaxRates;}\n if (typeof this.appliedBundles !== 'undefined' && this.appliedBundles !== null) {toReturn['appliedBundles'] = 'toApiJson' in this.appliedBundles ? (this.appliedBundles as any).toApiJson() : this.appliedBundles;}\n if (typeof this.amountDiscount !== 'undefined') {toReturn['amountDiscount'] = this.amountDiscount;}\n return toReturn;\n }\n}\n\nexport class InvoiceTemplateItem implements i.InvoiceTemplateItemInterface {\n sku: string;\n unitPrice: number;\n quantity: number;\n description: string;\n total: number;\n appliedTaxes: AppliedTaxRate[];\n taxRates: TaxRate[];\n subtotal: number;\n bundleId: string;\n discounts: AppliedDiscount[];\n\n static fromProto(proto: any): InvoiceTemplateItem {\n let m = new InvoiceTemplateItem();\n m = Object.assign(m, proto);\n if (proto.unitPrice) {m.unitPrice = parseInt(proto.unitPrice, 10);}\n if (proto.total) {m.total = parseInt(proto.total, 10);}\n if (proto.appliedTaxes) {m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);}\n if (proto.taxRates) {m.taxRates = proto.taxRates.map(TaxRate.fromProto);}\n if (proto.subtotal) {m.subtotal = parseInt(proto.subtotal, 10);}\n if (proto.discounts) {m.discounts = proto.discounts.map(AppliedDiscount.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.InvoiceTemplateItemInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.unitPrice !== 'undefined') {toReturn['unitPrice'] = this.unitPrice;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.total !== 'undefined') {toReturn['total'] = this.total;}\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? (this.appliedTaxes as any).toApiJson() : this.appliedTaxes;}\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {toReturn['taxRates'] = 'toApiJson' in this.taxRates ? (this.taxRates as any).toApiJson() : this.taxRates;}\n if (typeof this.subtotal !== 'undefined') {toReturn['subtotal'] = this.subtotal;}\n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {toReturn['discounts'] = 'toApiJson' in this.discounts ? (this.discounts as any).toApiJson() : this.discounts;}\n return toReturn;\n }\n}\n\nexport class UpsertInvoiceTemplateRequestInvoiceTemplateItemRequest implements i.UpsertInvoiceTemplateRequestInvoiceTemplateItemRequestInterface {\n sku: string;\n unitPrice: number;\n quantity: number;\n description: string;\n taxRates: string[];\n bundleId: string;\n appliedDiscounts: AppliedDiscount[];\n\n static fromProto(proto: any): UpsertInvoiceTemplateRequestInvoiceTemplateItemRequest {\n let m = new UpsertInvoiceTemplateRequestInvoiceTemplateItemRequest();\n m = Object.assign(m, proto);\n if (proto.unitPrice) {m.unitPrice = parseInt(proto.unitPrice, 10);}\n if (proto.appliedDiscounts) {m.appliedDiscounts = proto.appliedDiscounts.map(AppliedDiscount.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.UpsertInvoiceTemplateRequestInvoiceTemplateItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.unitPrice !== 'undefined') {toReturn['unitPrice'] = this.unitPrice;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.taxRates !== 'undefined') {toReturn['taxRates'] = this.taxRates;}\n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n if (typeof this.appliedDiscounts !== 'undefined' && this.appliedDiscounts !== null) {toReturn['appliedDiscounts'] = 'toApiJson' in this.appliedDiscounts ? (this.appliedDiscounts as any).toApiJson() : this.appliedDiscounts;}\n return toReturn;\n }\n}\n\nexport class UpdateTemplateBundleRequest implements i.UpdateTemplateBundleRequestInterface {\n merchantId: string;\n customerId: string;\n bundleId: string;\n hideBundleItems: boolean;\n\n static fromProto(proto: any): UpdateTemplateBundleRequest {\n let m = new UpdateTemplateBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdateTemplateBundleRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.bundleId !== 'undefined') {toReturn['bundleId'] = this.bundleId;}\n if (typeof this.hideBundleItems !== 'undefined') {toReturn['hideBundleItems'] = this.hideBundleItems;}\n return toReturn;\n }\n}\n\nexport class UpdateTemplateBundleResponse implements i.UpdateTemplateBundleResponseInterface {\n invoiceTemplate: InvoiceTemplate;\n\n static fromProto(proto: any): UpdateTemplateBundleResponse {\n let m = new UpdateTemplateBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoiceTemplate) {m.invoiceTemplate = InvoiceTemplate.fromProto(proto.invoiceTemplate);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateTemplateBundleResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceTemplate !== 'undefined' && this.invoiceTemplate !== null) {toReturn['invoiceTemplate'] = 'toApiJson' in this.invoiceTemplate ? (this.invoiceTemplate as any).toApiJson() : this.invoiceTemplate;}\n return toReturn;\n }\n}\n\nexport class UpdateTemplateDefaultTaxRatesRequest implements i.UpdateTemplateDefaultTaxRatesRequestInterface {\n customerId: string;\n merchantId: string;\n taxRateIds: string[];\n\n static fromProto(proto: any): UpdateTemplateDefaultTaxRatesRequest {\n let m = new UpdateTemplateDefaultTaxRatesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.UpdateTemplateDefaultTaxRatesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.taxRateIds !== 'undefined') {toReturn['taxRateIds'] = this.taxRateIds;}\n return toReturn;\n }\n}\n\nexport class UpdateTemplateDefaultTaxRatesResponse implements i.UpdateTemplateDefaultTaxRatesResponseInterface {\n invoiceTemplate: InvoiceTemplate;\n\n static fromProto(proto: any): UpdateTemplateDefaultTaxRatesResponse {\n let m = new UpdateTemplateDefaultTaxRatesResponse();\n m = Object.assign(m, proto);\n if (proto.invoiceTemplate) {m.invoiceTemplate = InvoiceTemplate.fromProto(proto.invoiceTemplate);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateTemplateDefaultTaxRatesResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceTemplate !== 'undefined' && this.invoiceTemplate !== null) {toReturn['invoiceTemplate'] = 'toApiJson' in this.invoiceTemplate ? (this.invoiceTemplate as any).toApiJson() : this.invoiceTemplate;}\n return toReturn;\n }\n}\n\nexport class UpdateTemplateLineItemRequest implements i.UpdateTemplateLineItemRequestInterface {\n merchantId: string;\n customerId: string;\n id: string;\n sku: string;\n unitPrice: number;\n quantity: number;\n description: string;\n taxRates: string[];\n\n static fromProto(proto: any): UpdateTemplateLineItemRequest {\n let m = new UpdateTemplateLineItemRequest();\n m = Object.assign(m, proto);\n if (proto.unitPrice) {m.unitPrice = parseInt(proto.unitPrice, 10);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateTemplateLineItemRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.unitPrice !== 'undefined') {toReturn['unitPrice'] = this.unitPrice;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.description !== 'undefined') {toReturn['description'] = this.description;}\n if (typeof this.taxRates !== 'undefined') {toReturn['taxRates'] = this.taxRates;}\n return toReturn;\n }\n}\n\nexport class UpdateTemplateLineItemResponse implements i.UpdateTemplateLineItemResponseInterface {\n invoiceTemplate: InvoiceTemplate;\n\n static fromProto(proto: any): UpdateTemplateLineItemResponse {\n let m = new UpdateTemplateLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoiceTemplate) {m.invoiceTemplate = InvoiceTemplate.fromProto(proto.invoiceTemplate);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateTemplateLineItemResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceTemplate !== 'undefined' && this.invoiceTemplate !== null) {toReturn['invoiceTemplate'] = 'toApiJson' in this.invoiceTemplate ? (this.invoiceTemplate as any).toApiJson() : this.invoiceTemplate;}\n return toReturn;\n }\n}\n\nexport class UpsertInvoiceTemplateRequest implements i.UpsertInvoiceTemplateRequestInterface {\n merchantId: string;\n customerId: string;\n items: UpsertInvoiceTemplateRequestInvoiceTemplateItemRequest[];\n defaultTaxRates: string[];\n currencyCode: string;\n\n static fromProto(proto: any): UpsertInvoiceTemplateRequest {\n let m = new UpsertInvoiceTemplateRequest();\n m = Object.assign(m, proto);\n if (proto.items) {m.items = proto.items.map(UpsertInvoiceTemplateRequestInvoiceTemplateItemRequest.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.UpsertInvoiceTemplateRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.items !== 'undefined' && this.items !== null) {toReturn['items'] = 'toApiJson' in this.items ? (this.items as any).toApiJson() : this.items;}\n if (typeof this.defaultTaxRates !== 'undefined') {toReturn['defaultTaxRates'] = this.defaultTaxRates;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n return toReturn;\n }\n}\n\nexport class UpsertInvoiceTemplateResponse implements i.UpsertInvoiceTemplateResponseInterface {\n invoiceTemplate: InvoiceTemplate;\n\n static fromProto(proto: any): UpsertInvoiceTemplateResponse {\n let m = new UpsertInvoiceTemplateResponse();\n m = Object.assign(m, proto);\n if (proto.invoiceTemplate) {m.invoiceTemplate = InvoiceTemplate.fromProto(proto.invoiceTemplate);}\n return m;\n }\n\n constructor(kwargs?: i.UpsertInvoiceTemplateResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.invoiceTemplate !== 'undefined' && this.invoiceTemplate !== null) {toReturn['invoiceTemplate'] = 'toApiJson' in this.invoiceTemplate ? (this.invoiceTemplate as any).toApiJson() : this.invoiceTemplate;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { PagedRequestOptions, PagedResponseMetadata } from './common';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class DeleteRecurringInvoiceRequest implements i.DeleteRecurringInvoiceRequestInterface {\n id: string;\n\n static fromProto(proto: any): DeleteRecurringInvoiceRequest {\n let m = new DeleteRecurringInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeleteRecurringInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class GetRecurringInvoiceRequest implements i.GetRecurringInvoiceRequestInterface {\n id: string;\n\n static fromProto(proto: any): GetRecurringInvoiceRequest {\n let m = new GetRecurringInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetRecurringInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n return toReturn;\n }\n}\n\nexport class ListRecurringInvoicesRequest implements i.ListRecurringInvoicesRequestInterface {\n pagingOptions: PagedRequestOptions;\n merchantId: string;\n customerId: string;\n\n static fromProto(proto: any): ListRecurringInvoicesRequest {\n let m = new ListRecurringInvoicesRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);}\n return m;\n }\n\n constructor(kwargs?: i.ListRecurringInvoicesRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? (this.pagingOptions as any).toApiJson() : this.pagingOptions;}\n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n return toReturn;\n }\n}\n\nexport class ListRecurringInvoicesResponse implements i.ListRecurringInvoicesResponseInterface {\n recurringInvoices: RecurringInvoice[];\n pagingMetadata: PagedResponseMetadata;\n\n static fromProto(proto: any): ListRecurringInvoicesResponse {\n let m = new ListRecurringInvoicesResponse();\n m = Object.assign(m, proto);\n if (proto.recurringInvoices) {m.recurringInvoices = proto.recurringInvoices.map(RecurringInvoice.fromProto);}\n if (proto.pagingMetadata) {m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);}\n return m;\n }\n\n constructor(kwargs?: i.ListRecurringInvoicesResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.recurringInvoices !== 'undefined' && this.recurringInvoices !== null) {toReturn['recurringInvoices'] = 'toApiJson' in this.recurringInvoices ? (this.recurringInvoices as any).toApiJson() : this.recurringInvoices;}\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? (this.pagingMetadata as any).toApiJson() : this.pagingMetadata;}\n return toReturn;\n }\n}\n\nexport class RecurringInvoice implements i.RecurringInvoiceInterface {\n id: string;\n created: Date;\n updated: Date;\n customerId: string;\n status: e.RecurringInvoiceStatus;\n issuedAt: Date;\n nextIssue: Date;\n intervalCount: number;\n interval: e.Interval;\n collectionMethod: e.CollectionMethod;\n recipientUserId: string;\n paymentProcessor: e.PaymentProcessor;\n paymentProcessorId: string;\n items: RecurringInvoiceItem[];\n totalAmount: number;\n currencyCode: string;\n\n static fromProto(proto: any): RecurringInvoice {\n let m = new RecurringInvoice();\n m = Object.assign(m, proto);\n if (proto.created) {m.created = new Date(proto.created);}\n if (proto.updated) {m.updated = new Date(proto.updated);}\n if (proto.status) {m.status = enumStringToValue<e.RecurringInvoiceStatus>(e.RecurringInvoiceStatus, proto.status);}\n if (proto.issuedAt) {m.issuedAt = new Date(proto.issuedAt);}\n if (proto.nextIssue) {m.nextIssue = new Date(proto.nextIssue);}\n if (proto.intervalCount) {m.intervalCount = parseInt(proto.intervalCount, 10);}\n if (proto.interval) {m.interval = enumStringToValue<e.Interval>(e.Interval, proto.interval);}\n if (proto.collectionMethod) {m.collectionMethod = enumStringToValue<e.CollectionMethod>(e.CollectionMethod, proto.collectionMethod);}\n if (proto.paymentProcessor) {m.paymentProcessor = enumStringToValue<e.PaymentProcessor>(e.PaymentProcessor, proto.paymentProcessor);}\n if (proto.items) {m.items = proto.items.map(RecurringInvoiceItem.fromProto);}\n if (proto.totalAmount) {m.totalAmount = parseInt(proto.totalAmount, 10);}\n return m;\n }\n\n constructor(kwargs?: i.RecurringInvoiceInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.id !== 'undefined') {toReturn['id'] = this.id;}\n if (typeof this.created !== 'undefined' && this.created !== null) {toReturn['created'] = 'toApiJson' in this.created ? (this.created as any).toApiJson() : this.created;}\n if (typeof this.updated !== 'undefined' && this.updated !== null) {toReturn['updated'] = 'toApiJson' in this.updated ? (this.updated as any).toApiJson() : this.updated;}\n if (typeof this.customerId !== 'undefined') {toReturn['customerId'] = this.customerId;}\n if (typeof this.status !== 'undefined') {toReturn['status'] = this.status;}\n if (typeof this.issuedAt !== 'undefined' && this.issuedAt !== null) {toReturn['issuedAt'] = 'toApiJson' in this.issuedAt ? (this.issuedAt as any).toApiJson() : this.issuedAt;}\n if (typeof this.nextIssue !== 'undefined' && this.nextIssue !== null) {toReturn['nextIssue'] = 'toApiJson' in this.nextIssue ? (this.nextIssue as any).toApiJson() : this.nextIssue;}\n if (typeof this.intervalCount !== 'undefined') {toReturn['intervalCount'] = this.intervalCount;}\n if (typeof this.interval !== 'undefined') {toReturn['interval'] = this.interval;}\n if (typeof this.collectionMethod !== 'undefined') {toReturn['collectionMethod'] = this.collectionMethod;}\n if (typeof this.recipientUserId !== 'undefined') {toReturn['recipientUserId'] = this.recipientUserId;}\n if (typeof this.paymentProcessor !== 'undefined') {toReturn['paymentProcessor'] = this.paymentProcessor;}\n if (typeof this.paymentProcessorId !== 'undefined') {toReturn['paymentProcessorId'] = this.paymentProcessorId;}\n if (typeof this.items !== 'undefined' && this.items !== null) {toReturn['items'] = 'toApiJson' in this.items ? (this.items as any).toApiJson() : this.items;}\n if (typeof this.totalAmount !== 'undefined') {toReturn['totalAmount'] = this.totalAmount;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n return toReturn;\n }\n}\n\nexport class RecurringInvoiceBundle implements i.RecurringInvoiceBundleInterface {\n name: string;\n hideLineItems: boolean;\n lineItems: RecurringInvoiceLineItem[];\n\n static fromProto(proto: any): RecurringInvoiceBundle {\n let m = new RecurringInvoiceBundle();\n m = Object.assign(m, proto);\n if (proto.lineItems) {m.lineItems = proto.lineItems.map(RecurringInvoiceLineItem.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.RecurringInvoiceBundleInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.hideLineItems !== 'undefined') {toReturn['hideLineItems'] = this.hideLineItems;}\n if (typeof this.lineItems !== 'undefined' && this.lineItems !== null) {toReturn['lineItems'] = 'toApiJson' in this.lineItems ? (this.lineItems as any).toApiJson() : this.lineItems;}\n return toReturn;\n }\n}\n\nexport class RecurringInvoiceItem implements i.RecurringInvoiceItemInterface {\n lineItem: RecurringInvoiceLineItem;\n bundle: RecurringInvoiceBundle;\n\n static fromProto(proto: any): RecurringInvoiceItem {\n let m = new RecurringInvoiceItem();\n m = Object.assign(m, proto);\n if (proto.lineItem) {m.lineItem = RecurringInvoiceLineItem.fromProto(proto.lineItem);}\n if (proto.bundle) {m.bundle = RecurringInvoiceBundle.fromProto(proto.bundle);}\n return m;\n }\n\n constructor(kwargs?: i.RecurringInvoiceItemInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.lineItem !== 'undefined' && this.lineItem !== null) {toReturn['lineItem'] = 'toApiJson' in this.lineItem ? (this.lineItem as any).toApiJson() : this.lineItem;}\n if (typeof this.bundle !== 'undefined' && this.bundle !== null) {toReturn['bundle'] = 'toApiJson' in this.bundle ? (this.bundle as any).toApiJson() : this.bundle;}\n return toReturn;\n }\n}\n\nexport class RecurringInvoiceLineItem implements i.RecurringInvoiceLineItemInterface {\n sku: string;\n unitPrice: number;\n quantity: number;\n name: string;\n taxRateIds: string[];\n\n static fromProto(proto: any): RecurringInvoiceLineItem {\n let m = new RecurringInvoiceLineItem();\n m = Object.assign(m, proto);\n if (proto.unitPrice) {m.unitPrice = parseInt(proto.unitPrice, 10);}\n if (proto.quantity) {m.quantity = parseInt(proto.quantity, 10);}\n return m;\n }\n\n constructor(kwargs?: i.RecurringInvoiceLineItemInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.unitPrice !== 'undefined') {toReturn['unitPrice'] = this.unitPrice;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.name !== 'undefined') {toReturn['name'] = this.name;}\n if (typeof this.taxRateIds !== 'undefined') {toReturn['taxRateIds'] = this.taxRateIds;}\n return toReturn;\n }\n}\n\nexport class UpdateRecurringInvoiceRequest implements i.UpdateRecurringInvoiceRequestInterface {\n recurringInvoice: RecurringInvoice;\n\n static fromProto(proto: any): UpdateRecurringInvoiceRequest {\n let m = new UpdateRecurringInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.recurringInvoice) {m.recurringInvoice = RecurringInvoice.fromProto(proto.recurringInvoice);}\n return m;\n }\n\n constructor(kwargs?: i.UpdateRecurringInvoiceRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.recurringInvoice !== 'undefined' && this.recurringInvoice !== null) {toReturn['recurringInvoice'] = 'toApiJson' in this.recurringInvoice ? (this.recurringInvoice as any).toApiJson() : this.recurringInvoice;}\n return toReturn;\n }\n}\n\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects.\n// *********************************\nimport * as i from '../interfaces';\nimport { BundlePricing } from './bundle';\nimport { Commitment } from './commitment';\nimport { PricingPlanProductPricing } from './pricing-plan';\nimport { ProductPrices, ProductPricing } from './product-pricing';\nimport * as e from '../enums';\n\nexport function enumStringToValue<E>(enumRef: any, value: string): E {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\n\nexport class DeleteRetailPricingRequest implements i.DeleteRetailPricingRequestInterface {\n merchantId: string;\n groupId: string;\n sku: string;\n\n static fromProto(proto: any): DeleteRetailPricingRequest {\n let m = new DeleteRetailPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.DeleteRetailPricingRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.groupId !== 'undefined') {toReturn['groupId'] = this.groupId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n return toReturn;\n }\n}\n\nexport class GenerateBillableItemsCSVRequest implements i.GenerateBillableItemsCSVRequestInterface {\n merchantId: string;\n periodStart: Date;\n periodEnd: Date;\n\n static fromProto(proto: any): GenerateBillableItemsCSVRequest {\n let m = new GenerateBillableItemsCSVRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {m.periodStart = new Date(proto.periodStart);}\n if (proto.periodEnd) {m.periodEnd = new Date(proto.periodEnd);}\n return m;\n }\n\n constructor(kwargs?: i.GenerateBillableItemsCSVRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {toReturn['periodStart'] = 'toApiJson' in this.periodStart ? (this.periodStart as any).toApiJson() : this.periodStart;}\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? (this.periodEnd as any).toApiJson() : this.periodEnd;}\n return toReturn;\n }\n}\n\nexport class GenerateBillableItemsCSVResponse implements i.GenerateBillableItemsCSVResponseInterface {\n url: string;\n\n static fromProto(proto: any): GenerateBillableItemsCSVResponse {\n let m = new GenerateBillableItemsCSVResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GenerateBillableItemsCSVResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.url !== 'undefined') {toReturn['url'] = this.url;}\n return toReturn;\n }\n}\n\nexport class GenerateVendorReportRequest implements i.GenerateVendorReportRequestInterface {\n skus: string[];\n periodStart: Date;\n periodEnd: Date;\n vendorName: string;\n markAsApproved: boolean;\n\n static fromProto(proto: any): GenerateVendorReportRequest {\n let m = new GenerateVendorReportRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {m.periodStart = new Date(proto.periodStart);}\n if (proto.periodEnd) {m.periodEnd = new Date(proto.periodEnd);}\n return m;\n }\n\n constructor(kwargs?: i.GenerateVendorReportRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.skus !== 'undefined') {toReturn['skus'] = this.skus;}\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {toReturn['periodStart'] = 'toApiJson' in this.periodStart ? (this.periodStart as any).toApiJson() : this.periodStart;}\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? (this.periodEnd as any).toApiJson() : this.periodEnd;}\n if (typeof this.vendorName !== 'undefined') {toReturn['vendorName'] = this.vendorName;}\n if (typeof this.markAsApproved !== 'undefined') {toReturn['markAsApproved'] = this.markAsApproved;}\n return toReturn;\n }\n}\n\nexport class GenerateVendorReportResponse implements i.GenerateVendorReportResponseInterface {\n url: string;\n bucket: string;\n filename: string;\n\n static fromProto(proto: any): GenerateVendorReportResponse {\n let m = new GenerateVendorReportResponse();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GenerateVendorReportResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.url !== 'undefined') {toReturn['url'] = this.url;}\n if (typeof this.bucket !== 'undefined') {toReturn['bucket'] = this.bucket;}\n if (typeof this.filename !== 'undefined') {toReturn['filename'] = this.filename;}\n return toReturn;\n }\n}\n\nexport class GetMultiBundleRetailPricingRequest implements i.GetMultiBundleRetailPricingRequestInterface {\n merchantId: string;\n storeId: string;\n bundleIds: string[];\n\n static fromProto(proto: any): GetMultiBundleRetailPricingRequest {\n let m = new GetMultiBundleRetailPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiBundleRetailPricingRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.storeId !== 'undefined') {toReturn['storeId'] = this.storeId;}\n if (typeof this.bundleIds !== 'undefined') {toReturn['bundleIds'] = this.bundleIds;}\n return toReturn;\n }\n}\n\nexport class GetMultiBundleRetailPricingResponse implements i.GetMultiBundleRetailPricingResponseInterface {\n prices: {[key: string]: BundlePricing};\n\n static fromProto(proto: any): GetMultiBundleRetailPricingResponse {\n let m = new GetMultiBundleRetailPricingResponse();\n m = Object.assign(m, proto);\n if (proto.prices) {m.prices = Object.keys(proto.prices).reduce<any>((obj, k) => { obj[k] = BundlePricing.fromProto(proto.prices[k]); return obj; }, {});}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiBundleRetailPricingResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.prices !== 'undefined' && this.prices !== null) {toReturn['prices'] = 'toApiJson' in this.prices ? (this.prices as any).toApiJson() : this.prices;}\n return toReturn;\n }\n}\n\nexport class GetMultiProductPricingRequest implements i.GetMultiProductPricingRequestInterface {\n merchantId: string;\n skus: string[];\n pricingPlanId: string;\n\n static fromProto(proto: any): GetMultiProductPricingRequest {\n let m = new GetMultiProductPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetMultiProductPricingRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.skus !== 'undefined') {toReturn['skus'] = this.skus;}\n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n return toReturn;\n }\n}\n\nexport class GetMultiProductPricingResponse implements i.GetMultiProductPricingResponseInterface {\n productPrices: {[key: string]: ProductPricing};\n prices: ProductPrices[];\n\n static fromProto(proto: any): GetMultiProductPricingResponse {\n let m = new GetMultiProductPricingResponse();\n m = Object.assign(m, proto);\n if (proto.productPrices) {m.productPrices = Object.keys(proto.productPrices).reduce<any>((obj, k) => { obj[k] = ProductPricing.fromProto(proto.productPrices[k]); return obj; }, {});}\n if (proto.prices) {m.prices = proto.prices.map(ProductPrices.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiProductPricingResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.productPrices !== 'undefined' && this.productPrices !== null) {toReturn['productPrices'] = 'toApiJson' in this.productPrices ? (this.productPrices as any).toApiJson() : this.productPrices;}\n if (typeof this.prices !== 'undefined' && this.prices !== null) {toReturn['prices'] = 'toApiJson' in this.prices ? (this.prices as any).toApiJson() : this.prices;}\n return toReturn;\n }\n}\n\nexport class GetMultiRetailPricingRequest implements i.GetMultiRetailPricingRequestInterface {\n merchantId: string;\n currency: e.Currency;\n skus: string[];\n groupId: string;\n\n static fromProto(proto: any): GetMultiRetailPricingRequest {\n let m = new GetMultiRetailPricingRequest();\n m = Object.assign(m, proto);\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiRetailPricingRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.skus !== 'undefined') {toReturn['skus'] = this.skus;}\n if (typeof this.groupId !== 'undefined') {toReturn['groupId'] = this.groupId;}\n return toReturn;\n }\n}\n\nexport class GetMultiRetailPricingResponse implements i.GetMultiRetailPricingResponseInterface {\n productPrices: {[key: string]: ProductPricing};\n prices: ProductPrices[];\n\n static fromProto(proto: any): GetMultiRetailPricingResponse {\n let m = new GetMultiRetailPricingResponse();\n m = Object.assign(m, proto);\n if (proto.productPrices) {m.productPrices = Object.keys(proto.productPrices).reduce<any>((obj, k) => { obj[k] = ProductPricing.fromProto(proto.productPrices[k]); return obj; }, {});}\n if (proto.prices) {m.prices = proto.prices.map(ProductPrices.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiRetailPricingResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.productPrices !== 'undefined' && this.productPrices !== null) {toReturn['productPrices'] = 'toApiJson' in this.productPrices ? (this.productPrices as any).toApiJson() : this.productPrices;}\n if (typeof this.prices !== 'undefined' && this.prices !== null) {toReturn['prices'] = 'toApiJson' in this.prices ? (this.prices as any).toApiJson() : this.prices;}\n return toReturn;\n }\n}\n\nexport class GetPurchaseCostRequest implements i.GetPurchaseCostRequestInterface {\n merchantId: string;\n sku: string;\n quantity: number;\n frequency: e.Frequency;\n\n static fromProto(proto: any): GetPurchaseCostRequest {\n let m = new GetPurchaseCostRequest();\n m = Object.assign(m, proto);\n if (proto.quantity) {m.quantity = parseInt(proto.quantity, 10);}\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n return m;\n }\n\n constructor(kwargs?: i.GetPurchaseCostRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.quantity !== 'undefined') {toReturn['quantity'] = this.quantity;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n return toReturn;\n }\n}\n\nexport class GetPurchaseCostResponse implements i.GetPurchaseCostResponseInterface {\n billingFrequency: string;\n totalCost: number;\n currency: e.Currency;\n strategy: e.BillingStrategy;\n commitment: Commitment;\n isStartingPrice: boolean;\n discountAmount: number;\n subtotalCost: number;\n setupFee: number;\n\n static fromProto(proto: any): GetPurchaseCostResponse {\n let m = new GetPurchaseCostResponse();\n m = Object.assign(m, proto);\n if (proto.totalCost) {m.totalCost = parseInt(proto.totalCost, 10);}\n if (proto.currency) {m.currency = enumStringToValue<e.Currency>(e.Currency, proto.currency);}\n if (proto.strategy) {m.strategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.strategy);}\n if (proto.commitment) {m.commitment = Commitment.fromProto(proto.commitment);}\n if (proto.discountAmount) {m.discountAmount = parseInt(proto.discountAmount, 10);}\n if (proto.subtotalCost) {m.subtotalCost = parseInt(proto.subtotalCost, 10);}\n if (proto.setupFee) {m.setupFee = parseInt(proto.setupFee, 10);}\n return m;\n }\n\n constructor(kwargs?: i.GetPurchaseCostResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.billingFrequency !== 'undefined') {toReturn['billingFrequency'] = this.billingFrequency;}\n if (typeof this.totalCost !== 'undefined') {toReturn['totalCost'] = this.totalCost;}\n if (typeof this.currency !== 'undefined') {toReturn['currency'] = this.currency;}\n if (typeof this.strategy !== 'undefined') {toReturn['strategy'] = this.strategy;}\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {toReturn['commitment'] = 'toApiJson' in this.commitment ? (this.commitment as any).toApiJson() : this.commitment;}\n if (typeof this.isStartingPrice !== 'undefined') {toReturn['isStartingPrice'] = this.isStartingPrice;}\n if (typeof this.discountAmount !== 'undefined') {toReturn['discountAmount'] = this.discountAmount;}\n if (typeof this.subtotalCost !== 'undefined') {toReturn['subtotalCost'] = this.subtotalCost;}\n if (typeof this.setupFee !== 'undefined') {toReturn['setupFee'] = this.setupFee;}\n return toReturn;\n }\n}\n\nexport class GetRevenueStatsRequest implements i.GetRevenueStatsRequestInterface {\n skus: string[];\n periodStart: Date;\n periodEnd: Date;\n\n static fromProto(proto: any): GetRevenueStatsRequest {\n let m = new GetRevenueStatsRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {m.periodStart = new Date(proto.periodStart);}\n if (proto.periodEnd) {m.periodEnd = new Date(proto.periodEnd);}\n return m;\n }\n\n constructor(kwargs?: i.GetRevenueStatsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.skus !== 'undefined') {toReturn['skus'] = this.skus;}\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {toReturn['periodStart'] = 'toApiJson' in this.periodStart ? (this.periodStart as any).toApiJson() : this.periodStart;}\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? (this.periodEnd as any).toApiJson() : this.periodEnd;}\n return toReturn;\n }\n}\n\nexport class GetRevenueStatsResponse implements i.GetRevenueStatsResponseInterface {\n totalRevenue: number;\n\n static fromProto(proto: any): GetRevenueStatsResponse {\n let m = new GetRevenueStatsResponse();\n m = Object.assign(m, proto);\n if (proto.totalRevenue) {m.totalRevenue = parseInt(proto.totalRevenue, 10);}\n return m;\n }\n\n constructor(kwargs?: i.GetRevenueStatsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.totalRevenue !== 'undefined') {toReturn['totalRevenue'] = this.totalRevenue;}\n return toReturn;\n }\n}\n\nexport class GetStatisticsRequest implements i.GetStatisticsRequestInterface {\n merchantId: string;\n\n static fromProto(proto: any): GetStatisticsRequest {\n let m = new GetStatisticsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetStatisticsRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n return toReturn;\n }\n}\n\nexport class GetStatisticsResponse implements i.GetStatisticsResponseInterface {\n totalBillableCustomers: number;\n currentBasketSize: number;\n changeInBasketSize30Days: number;\n\n static fromProto(proto: any): GetStatisticsResponse {\n let m = new GetStatisticsResponse();\n m = Object.assign(m, proto);\n if (proto.totalBillableCustomers) {m.totalBillableCustomers = parseInt(proto.totalBillableCustomers, 10);}\n return m;\n }\n\n constructor(kwargs?: i.GetStatisticsResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.totalBillableCustomers !== 'undefined') {toReturn['totalBillableCustomers'] = this.totalBillableCustomers;}\n if (typeof this.currentBasketSize !== 'undefined') {toReturn['currentBasketSize'] = this.currentBasketSize;}\n if (typeof this.changeInBasketSize30Days !== 'undefined') {toReturn['changeInBasketSize30Days'] = this.changeInBasketSize30Days;}\n return toReturn;\n }\n}\n\nexport class GetWholesaleComparisonRequestGetWholesaleComparisonFilters implements i.GetWholesaleComparisonRequestGetWholesaleComparisonFiltersInterface {\n sku: string[];\n currencyCode: string[];\n\n static fromProto(proto: any): GetWholesaleComparisonRequestGetWholesaleComparisonFilters {\n let m = new GetWholesaleComparisonRequestGetWholesaleComparisonFilters();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.GetWholesaleComparisonRequestGetWholesaleComparisonFiltersInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.currencyCode !== 'undefined') {toReturn['currencyCode'] = this.currencyCode;}\n return toReturn;\n }\n}\n\nexport class GetWholesaleComparisonRequest implements i.GetWholesaleComparisonRequestInterface {\n pricingPlanId: string[];\n filter: GetWholesaleComparisonRequestGetWholesaleComparisonFilters;\n\n static fromProto(proto: any): GetWholesaleComparisonRequest {\n let m = new GetWholesaleComparisonRequest();\n m = Object.assign(m, proto);\n if (proto.filter) {m.filter = GetWholesaleComparisonRequestGetWholesaleComparisonFilters.fromProto(proto.filter);}\n return m;\n }\n\n constructor(kwargs?: i.GetWholesaleComparisonRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.filter !== 'undefined' && this.filter !== null) {toReturn['filter'] = 'toApiJson' in this.filter ? (this.filter as any).toApiJson() : this.filter;}\n return toReturn;\n }\n}\n\nexport class GetWholesaleComparisonResponse implements i.GetWholesaleComparisonResponseInterface {\n results: GetWholesaleComparisonResponseGetWholesaleComparisonResult[];\n\n static fromProto(proto: any): GetWholesaleComparisonResponse {\n let m = new GetWholesaleComparisonResponse();\n m = Object.assign(m, proto);\n if (proto.results) {m.results = proto.results.map(GetWholesaleComparisonResponseGetWholesaleComparisonResult.fromProto);}\n return m;\n }\n\n constructor(kwargs?: i.GetWholesaleComparisonResponseInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.results !== 'undefined' && this.results !== null) {toReturn['results'] = 'toApiJson' in this.results ? (this.results as any).toApiJson() : this.results;}\n return toReturn;\n }\n}\n\nexport class GetWholesaleComparisonResponseGetWholesaleComparisonResult implements i.GetWholesaleComparisonResponseGetWholesaleComparisonResultInterface {\n pricingPlanId: string;\n sku: string;\n productPricing: ProductPricing;\n\n static fromProto(proto: any): GetWholesaleComparisonResponseGetWholesaleComparisonResult {\n let m = new GetWholesaleComparisonResponseGetWholesaleComparisonResult();\n m = Object.assign(m, proto);\n if (proto.productPricing) {m.productPricing = ProductPricing.fromProto(proto.productPricing);}\n return m;\n }\n\n constructor(kwargs?: i.GetWholesaleComparisonResponseGetWholesaleComparisonResultInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.pricingPlanId !== 'undefined') {toReturn['pricingPlanId'] = this.pricingPlanId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.productPricing !== 'undefined' && this.productPricing !== null) {toReturn['productPricing'] = 'toApiJson' in this.productPricing ? (this.productPricing as any).toApiJson() : this.productPricing;}\n return toReturn;\n }\n}\n\nexport class GetMultiBundleRetailPricingResponsePricesEntry implements i.GetMultiBundleRetailPricingResponsePricesEntryInterface {\n key: string;\n value: BundlePricing;\n\n static fromProto(proto: any): GetMultiBundleRetailPricingResponsePricesEntry {\n let m = new GetMultiBundleRetailPricingResponsePricesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = BundlePricing.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiBundleRetailPricingResponsePricesEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class UpsertRetailPricingRequestPricingEntry implements i.UpsertRetailPricingRequestPricingEntryInterface {\n key: string;\n value: PricingPlanProductPricing;\n\n static fromProto(proto: any): UpsertRetailPricingRequestPricingEntry {\n let m = new UpsertRetailPricingRequestPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = PricingPlanProductPricing.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.UpsertRetailPricingRequestPricingEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class GetMultiRetailPricingResponseProductPricesEntry implements i.GetMultiRetailPricingResponseProductPricesEntryInterface {\n key: string;\n value: ProductPricing;\n\n static fromProto(proto: any): GetMultiRetailPricingResponseProductPricesEntry {\n let m = new GetMultiRetailPricingResponseProductPricesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = ProductPricing.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiRetailPricingResponseProductPricesEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class GetMultiProductPricingResponseProductPricesEntry implements i.GetMultiProductPricingResponseProductPricesEntryInterface {\n key: string;\n value: ProductPricing;\n\n static fromProto(proto: any): GetMultiProductPricingResponseProductPricesEntry {\n let m = new GetMultiProductPricingResponseProductPricesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {m.value = ProductPricing.fromProto(proto.value);}\n return m;\n }\n\n constructor(kwargs?: i.GetMultiProductPricingResponseProductPricesEntryInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.key !== 'undefined') {toReturn['key'] = this.key;}\n if (typeof this.value !== 'undefined' && this.value !== null) {toReturn['value'] = 'toApiJson' in this.value ? (this.value as any).toApiJson() : this.value;}\n return toReturn;\n }\n}\n\nexport class SetWholesaleProductStrategyRequest implements i.SetWholesaleProductStrategyRequestInterface {\n merchantId: string;\n sku: string;\n strategy: e.BillingStrategy;\n\n static fromProto(proto: any): SetWholesaleProductStrategyRequest {\n let m = new SetWholesaleProductStrategyRequest();\n m = Object.assign(m, proto);\n if (proto.strategy) {m.strategy = enumStringToValue<e.BillingStrategy>(e.BillingStrategy, proto.strategy);}\n return m;\n }\n\n constructor(kwargs?: i.SetWholesaleProductStrategyRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.strategy !== 'undefined') {toReturn['strategy'] = this.strategy;}\n return toReturn;\n }\n}\n\nexport class SetWholesaleProductVolumeCommitmentRequest implements i.SetWholesaleProductVolumeCommitmentRequestInterface {\n merchantId: string;\n sku: string;\n volumeCommitment: number;\n\n static fromProto(proto: any): SetWholesaleProductVolumeCommitmentRequest {\n let m = new SetWholesaleProductVolumeCommitmentRequest();\n m = Object.assign(m, proto);\n if (proto.volumeCommitment) {m.volumeCommitment = parseInt(proto.volumeCommitment, 10);}\n return m;\n }\n\n constructor(kwargs?: i.SetWholesaleProductVolumeCommitmentRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.volumeCommitment !== 'undefined') {toReturn['volumeCommitment'] = this.volumeCommitment;}\n return toReturn;\n }\n}\n\nexport class StartRevRecTemplateBackfillRequest implements i.StartRevRecTemplateBackfillRequestInterface {\n\n static fromProto(proto: any): StartRevRecTemplateBackfillRequest {\n let m = new StartRevRecTemplateBackfillRequest();\n m = Object.assign(m, proto);\n return m;\n }\n\n constructor(kwargs?: i.StartRevRecTemplateBackfillRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n return toReturn;\n }\n}\n\nexport class UpsertRetailPricingRequest implements i.UpsertRetailPricingRequestInterface {\n merchantId: string;\n sku: string;\n frequency: e.Frequency;\n pricing: {[key: string]: PricingPlanProductPricing};\n groupId: string;\n\n static fromProto(proto: any): UpsertRetailPricingRequest {\n let m = new UpsertRetailPricingRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {m.frequency = enumStringToValue<e.Frequency>(e.Frequency, proto.frequency);}\n if (proto.pricing) {m.pricing = Object.keys(proto.pricing).reduce<any>((obj, k) => { obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]); return obj; }, {});}\n return m;\n }\n\n constructor(kwargs?: i.UpsertRetailPricingRequestInterface) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n const toReturn: {\n [key: string]: any;\n } = {};\n \n if (typeof this.merchantId !== 'undefined') {toReturn['merchantId'] = this.merchantId;}\n if (typeof this.sku !== 'undefined') {toReturn['sku'] = this.sku;}\n if (typeof this.frequency !== 'undefined') {toReturn['frequency'] = this.frequency;}\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {toReturn['pricing'] = 'toApiJson' in this.pricing ? (this.pricing as any).toApiJson() : this.pricing;}\n if (typeof this.groupId !== 'undefined') {toReturn['groupId'] = this.groupId;}\n return toReturn;\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { EnvironmentService, Environment } from '@vendasta/core';\n\n@Injectable({providedIn: 'root'})\nexport class HostService {\n private _host: string;\n private _httpsHost: string;\n\n constructor(private environmentService: EnvironmentService) {\n }\n\n host(): string {\n if (this._host) {\n return this._host;\n }\n\n switch (this.environmentService.getEnvironment()) {\n case Environment.LOCAL:\n this._host = 'billing-api.vendasta-local.com';\n break;\n case Environment.TEST:\n this._host = '';\n break;\n case Environment.DEMO:\n this._host = 'billing-demo.apigateway.co';\n break;\n case Environment.PROD:\n this._host = 'billing-prod.apigateway.co';\n break;\n }\n return this._host;\n }\n\n httpsHost(): string {\n if (this._httpsHost) {\n return this._httpsHost;\n }\n\n switch (this.environmentService.getEnvironment()) {\n case Environment.LOCAL:\n this._httpsHost = 'billing.vendasta-local.com';\n break;\n case Environment.TEST:\n this._httpsHost = '';\n break;\n case Environment.DEMO:\n this._httpsHost = 'billing-api-demo.apigateway.co';\n break;\n case Environment.PROD:\n this._httpsHost = 'billing-api-prod.apigateway.co';\n break;\n }\n return this._httpsHost;\n }\n\n hostWithScheme(): string {\n const scheme = this.environmentService.getEnvironment() === Environment.LOCAL ? 'http://' : 'https://';\n return scheme + this.host()\n }\n\n httpsHostWithScheme(): string {\n const scheme = this.environmentService.getEnvironment() === Environment.LOCAL ? 'http://' : 'https://';\n return scheme + this.httpsHost()\n }\n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n ListPayoutsRequest,\n ListPayoutsResponse,\n ReconcilePayoutRequest,\n ReconcilePayoutResponse,\n} from './objects/';\nimport {\n ListPayoutsRequestInterface,\n ListPayoutsResponseInterface,\n ReconcilePayoutRequestInterface,\n ReconcilePayoutResponseInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class BankReconciliationApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n listPayouts(r: ListPayoutsRequest | ListPayoutsRequestInterface): Observable<ListPayoutsResponse> {\n const request = ((<ListPayoutsRequest>r).toApiJson) ? (<ListPayoutsRequest>r) : new ListPayoutsRequest(r);\n return this.http.post<ListPayoutsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.BankReconciliationService/ListPayouts\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPayoutsResponse.fromProto(resp)),\n share()\n );\n }\n reconcilePayout(r: ReconcilePayoutRequest | ReconcilePayoutRequestInterface): Observable<ReconcilePayoutResponse> {\n const request = ((<ReconcilePayoutRequest>r).toApiJson) ? (<ReconcilePayoutRequest>r) : new ReconcilePayoutRequest(r);\n return this.http.post<ReconcilePayoutResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.BankReconciliationService/ReconcilePayout\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ReconcilePayoutResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n BillItemRequest,\n BillMultipleItemsRequest,\n BillMultipleItemsResponse,\n CanBillItemRequest,\n CanCreateSubscriptionsRequest,\n CanCreateSubscriptionsResponse,\n ChangeCustomUnitPriceRequest,\n ChangeFrequencyRequest,\n ChangeRenewalDateRequest,\n CreateMeteredComponentRequest,\n CreatePricingPlanProductRequest,\n CreatePricingPlanProductResponse,\n CreatePricingPlanRequest,\n CreatePricingPlanResponse,\n CreateSubscriptionRequest,\n CreateSubscriptionsRequest,\n CreateSubscriptionsResponse,\n DeleteBillableItemRequest,\n DeletePricingPlanProductRequest,\n ExpireBillableItemRequest,\n GenerateBillableItemsCSVRequest,\n GenerateBillableItemsCSVResponse,\n GetBillableItemRequest,\n GetBillableItemResponse,\n GetMultiContractsRequest,\n GetMultiContractsResponse,\n GetMultiPricingPlanProductRequest,\n GetMultiPricingPlanProductResponse,\n GetMultiPricingPlanRequest,\n GetMultiPricingPlanResponse,\n GetMultiProductPricingRequest,\n GetMultiProductPricingResponse,\n GetMultiProductRequest,\n GetMultiProductResponse,\n GetMultiSubscriptionsRequest,\n GetMultiSubscriptionsResponse,\n GetPricingPlanProductRequest,\n GetPricingPlanProductResponse,\n GetProductSummariesTotalRequest,\n GetProductSummariesTotalResponse,\n GetPurchaseCostRequest,\n GetPurchaseCostResponse,\n ListBillableItemsRequest,\n ListBillableItemsResponse,\n ListContractsRequest,\n ListContractsResponse,\n ListMerchantBillingReportsRequest,\n ListMerchantBillingReportsResponse,\n ListPricingPlanProductsRequest,\n ListPricingPlanProductsResponse,\n ListProductSummariesRequest,\n ListProductSummariesResponse,\n ListProductsRequest,\n ListProductsResponse,\n ResetContractPricingRequest,\n ReverseSubscriptionRequest,\n SetRenewalStartRequest,\n StartRevRecTemplateBackfillRequest,\n TickComponentUsageRequest,\n UpdatePricingPlanProductRequest,\n UpdatePricingPlanProductResponse,\n UpdatePricingPlanRequest,\n UpdatePricingPlanResponse,\n} from './objects/';\nimport {\n BillItemRequestInterface,\n BillMultipleItemsRequestInterface,\n BillMultipleItemsResponseInterface,\n CanBillItemRequestInterface,\n CanCreateSubscriptionsRequestInterface,\n CanCreateSubscriptionsResponseInterface,\n ChangeCustomUnitPriceRequestInterface,\n ChangeFrequencyRequestInterface,\n ChangeRenewalDateRequestInterface,\n CreateMeteredComponentRequestInterface,\n CreatePricingPlanProductRequestInterface,\n CreatePricingPlanProductResponseInterface,\n CreatePricingPlanRequestInterface,\n CreatePricingPlanResponseInterface,\n CreateSubscriptionRequestInterface,\n CreateSubscriptionsRequestInterface,\n CreateSubscriptionsResponseInterface,\n DeleteBillableItemRequestInterface,\n DeletePricingPlanProductRequestInterface,\n ExpireBillableItemRequestInterface,\n GenerateBillableItemsCSVRequestInterface,\n GenerateBillableItemsCSVResponseInterface,\n GetBillableItemRequestInterface,\n GetBillableItemResponseInterface,\n GetMultiContractsRequestInterface,\n GetMultiContractsResponseInterface,\n GetMultiPricingPlanProductRequestInterface,\n GetMultiPricingPlanProductResponseInterface,\n GetMultiPricingPlanRequestInterface,\n GetMultiPricingPlanResponseInterface,\n GetMultiProductPricingRequestInterface,\n GetMultiProductPricingResponseInterface,\n GetMultiProductRequestInterface,\n GetMultiProductResponseInterface,\n GetMultiSubscriptionsRequestInterface,\n GetMultiSubscriptionsResponseInterface,\n GetPricingPlanProductRequestInterface,\n GetPricingPlanProductResponseInterface,\n GetProductSummariesTotalRequestInterface,\n GetProductSummariesTotalResponseInterface,\n GetPurchaseCostRequestInterface,\n GetPurchaseCostResponseInterface,\n ListBillableItemsRequestInterface,\n ListBillableItemsResponseInterface,\n ListContractsRequestInterface,\n ListContractsResponseInterface,\n ListMerchantBillingReportsRequestInterface,\n ListMerchantBillingReportsResponseInterface,\n ListPricingPlanProductsRequestInterface,\n ListPricingPlanProductsResponseInterface,\n ListProductSummariesRequestInterface,\n ListProductSummariesResponseInterface,\n ListProductsRequestInterface,\n ListProductsResponseInterface,\n ResetContractPricingRequestInterface,\n ReverseSubscriptionRequestInterface,\n SetRenewalStartRequestInterface,\n StartRevRecTemplateBackfillRequestInterface,\n TickComponentUsageRequestInterface,\n UpdatePricingPlanProductRequestInterface,\n UpdatePricingPlanProductResponseInterface,\n UpdatePricingPlanRequestInterface,\n UpdatePricingPlanResponseInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class BillingApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n canBillItem(r: CanBillItemRequest | CanBillItemRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CanBillItemRequest>r).toApiJson) ? (<CanBillItemRequest>r) : new CanBillItemRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/CanBillItem\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n canCreateSubscriptions(r: CanCreateSubscriptionsRequest | CanCreateSubscriptionsRequestInterface): Observable<CanCreateSubscriptionsResponse> {\n const request = ((<CanCreateSubscriptionsRequest>r).toApiJson) ? (<CanCreateSubscriptionsRequest>r) : new CanCreateSubscriptionsRequest(r);\n return this.http.post<CanCreateSubscriptionsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/CanCreateSubscriptions\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CanCreateSubscriptionsResponse.fromProto(resp)),\n share()\n );\n }\n createSubscription(r: CreateSubscriptionRequest | CreateSubscriptionRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateSubscriptionRequest>r).toApiJson) ? (<CreateSubscriptionRequest>r) : new CreateSubscriptionRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/CreateSubscription\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n createSubscriptions(r: CreateSubscriptionsRequest | CreateSubscriptionsRequestInterface): Observable<CreateSubscriptionsResponse> {\n const request = ((<CreateSubscriptionsRequest>r).toApiJson) ? (<CreateSubscriptionsRequest>r) : new CreateSubscriptionsRequest(r);\n return this.http.post<CreateSubscriptionsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/CreateSubscriptions\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CreateSubscriptionsResponse.fromProto(resp)),\n share()\n );\n }\n reverseSubscription(r: ReverseSubscriptionRequest | ReverseSubscriptionRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ReverseSubscriptionRequest>r).toApiJson) ? (<ReverseSubscriptionRequest>r) : new ReverseSubscriptionRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ReverseSubscription\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n setRenewalStart(r: SetRenewalStartRequest | SetRenewalStartRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SetRenewalStartRequest>r).toApiJson) ? (<SetRenewalStartRequest>r) : new SetRenewalStartRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/SetRenewalStart\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n billItem(r: BillItemRequest | BillItemRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<BillItemRequest>r).toApiJson) ? (<BillItemRequest>r) : new BillItemRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/BillItem\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n billMultipleItems(r: BillMultipleItemsRequest | BillMultipleItemsRequestInterface): Observable<BillMultipleItemsResponse> {\n const request = ((<BillMultipleItemsRequest>r).toApiJson) ? (<BillMultipleItemsRequest>r) : new BillMultipleItemsRequest(r);\n return this.http.post<BillMultipleItemsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/BillMultipleItems\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => BillMultipleItemsResponse.fromProto(resp)),\n share()\n );\n }\n getBillableItem(r: GetBillableItemRequest | GetBillableItemRequestInterface): Observable<GetBillableItemResponse> {\n const request = ((<GetBillableItemRequest>r).toApiJson) ? (<GetBillableItemRequest>r) : new GetBillableItemRequest(r);\n return this.http.post<GetBillableItemResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GetBillableItem\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetBillableItemResponse.fromProto(resp)),\n share()\n );\n }\n getMultiSubscriptions(r: GetMultiSubscriptionsRequest | GetMultiSubscriptionsRequestInterface): Observable<GetMultiSubscriptionsResponse> {\n const request = ((<GetMultiSubscriptionsRequest>r).toApiJson) ? (<GetMultiSubscriptionsRequest>r) : new GetMultiSubscriptionsRequest(r);\n return this.http.post<GetMultiSubscriptionsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GetMultiSubscriptions\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiSubscriptionsResponse.fromProto(resp)),\n share()\n );\n }\n listBillableItems(r: ListBillableItemsRequest | ListBillableItemsRequestInterface): Observable<ListBillableItemsResponse> {\n const request = ((<ListBillableItemsRequest>r).toApiJson) ? (<ListBillableItemsRequest>r) : new ListBillableItemsRequest(r);\n return this.http.post<ListBillableItemsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ListBillableItems\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListBillableItemsResponse.fromProto(resp)),\n share()\n );\n }\n expireBillableItem(r: ExpireBillableItemRequest | ExpireBillableItemRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ExpireBillableItemRequest>r).toApiJson) ? (<ExpireBillableItemRequest>r) : new ExpireBillableItemRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ExpireBillableItem\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n deleteBillableItem(r: DeleteBillableItemRequest | DeleteBillableItemRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteBillableItemRequest>r).toApiJson) ? (<DeleteBillableItemRequest>r) : new DeleteBillableItemRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/DeleteBillableItem\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n listMerchantBillingReports(r: ListMerchantBillingReportsRequest | ListMerchantBillingReportsRequestInterface): Observable<ListMerchantBillingReportsResponse> {\n const request = ((<ListMerchantBillingReportsRequest>r).toApiJson) ? (<ListMerchantBillingReportsRequest>r) : new ListMerchantBillingReportsRequest(r);\n return this.http.post<ListMerchantBillingReportsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ListMerchantBillingReports\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListMerchantBillingReportsResponse.fromProto(resp)),\n share()\n );\n }\n listProductSummaries(r: ListProductSummariesRequest | ListProductSummariesRequestInterface): Observable<ListProductSummariesResponse> {\n const request = ((<ListProductSummariesRequest>r).toApiJson) ? (<ListProductSummariesRequest>r) : new ListProductSummariesRequest(r);\n return this.http.post<ListProductSummariesResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ListProductSummaries\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListProductSummariesResponse.fromProto(resp)),\n share()\n );\n }\n getProductSummariesTotal(r: GetProductSummariesTotalRequest | GetProductSummariesTotalRequestInterface): Observable<GetProductSummariesTotalResponse> {\n const request = ((<GetProductSummariesTotalRequest>r).toApiJson) ? (<GetProductSummariesTotalRequest>r) : new GetProductSummariesTotalRequest(r);\n return this.http.post<GetProductSummariesTotalResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GetProductSummariesTotal\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetProductSummariesTotalResponse.fromProto(resp)),\n share()\n );\n }\n generateBillableItemsCsv(r: GenerateBillableItemsCSVRequest | GenerateBillableItemsCSVRequestInterface): Observable<GenerateBillableItemsCSVResponse> {\n const request = ((<GenerateBillableItemsCSVRequest>r).toApiJson) ? (<GenerateBillableItemsCSVRequest>r) : new GenerateBillableItemsCSVRequest(r);\n return this.http.post<GenerateBillableItemsCSVResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GenerateBillableItemsCSV\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GenerateBillableItemsCSVResponse.fromProto(resp)),\n share()\n );\n }\n createPricingPlan(r: CreatePricingPlanRequest | CreatePricingPlanRequestInterface): Observable<CreatePricingPlanResponse> {\n const request = ((<CreatePricingPlanRequest>r).toApiJson) ? (<CreatePricingPlanRequest>r) : new CreatePricingPlanRequest(r);\n return this.http.post<CreatePricingPlanResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/CreatePricingPlan\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CreatePricingPlanResponse.fromProto(resp)),\n share()\n );\n }\n updatePricingPlan(r: UpdatePricingPlanRequest | UpdatePricingPlanRequestInterface): Observable<UpdatePricingPlanResponse> {\n const request = ((<UpdatePricingPlanRequest>r).toApiJson) ? (<UpdatePricingPlanRequest>r) : new UpdatePricingPlanRequest(r);\n return this.http.post<UpdatePricingPlanResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/UpdatePricingPlan\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpdatePricingPlanResponse.fromProto(resp)),\n share()\n );\n }\n getMultiPricingPlan(r: GetMultiPricingPlanRequest | GetMultiPricingPlanRequestInterface): Observable<GetMultiPricingPlanResponse> {\n const request = ((<GetMultiPricingPlanRequest>r).toApiJson) ? (<GetMultiPricingPlanRequest>r) : new GetMultiPricingPlanRequest(r);\n return this.http.post<GetMultiPricingPlanResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GetMultiPricingPlan\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiPricingPlanResponse.fromProto(resp)),\n share()\n );\n }\n createPricingPlanProduct(r: CreatePricingPlanProductRequest | CreatePricingPlanProductRequestInterface): Observable<CreatePricingPlanProductResponse> {\n const request = ((<CreatePricingPlanProductRequest>r).toApiJson) ? (<CreatePricingPlanProductRequest>r) : new CreatePricingPlanProductRequest(r);\n return this.http.post<CreatePricingPlanProductResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/CreatePricingPlanProduct\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CreatePricingPlanProductResponse.fromProto(resp)),\n share()\n );\n }\n updatePricingPlanProduct(r: UpdatePricingPlanProductRequest | UpdatePricingPlanProductRequestInterface): Observable<UpdatePricingPlanProductResponse> {\n const request = ((<UpdatePricingPlanProductRequest>r).toApiJson) ? (<UpdatePricingPlanProductRequest>r) : new UpdatePricingPlanProductRequest(r);\n return this.http.post<UpdatePricingPlanProductResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/UpdatePricingPlanProduct\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpdatePricingPlanProductResponse.fromProto(resp)),\n share()\n );\n }\n deletePricingPlanProduct(r: DeletePricingPlanProductRequest | DeletePricingPlanProductRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeletePricingPlanProductRequest>r).toApiJson) ? (<DeletePricingPlanProductRequest>r) : new DeletePricingPlanProductRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/DeletePricingPlanProduct\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n listPricingPlanProducts(r: ListPricingPlanProductsRequest | ListPricingPlanProductsRequestInterface): Observable<ListPricingPlanProductsResponse> {\n const request = ((<ListPricingPlanProductsRequest>r).toApiJson) ? (<ListPricingPlanProductsRequest>r) : new ListPricingPlanProductsRequest(r);\n return this.http.post<ListPricingPlanProductsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ListPricingPlanProducts\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPricingPlanProductsResponse.fromProto(resp)),\n share()\n );\n }\n getPricingPlanProduct(r: GetPricingPlanProductRequest | GetPricingPlanProductRequestInterface): Observable<GetPricingPlanProductResponse> {\n const request = ((<GetPricingPlanProductRequest>r).toApiJson) ? (<GetPricingPlanProductRequest>r) : new GetPricingPlanProductRequest(r);\n return this.http.post<GetPricingPlanProductResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GetPricingPlanProduct\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetPricingPlanProductResponse.fromProto(resp)),\n share()\n );\n }\n getMultiPricingPlanProduct(r: GetMultiPricingPlanProductRequest | GetMultiPricingPlanProductRequestInterface): Observable<GetMultiPricingPlanProductResponse> {\n const request = ((<GetMultiPricingPlanProductRequest>r).toApiJson) ? (<GetMultiPricingPlanProductRequest>r) : new GetMultiPricingPlanProductRequest(r);\n return this.http.post<GetMultiPricingPlanProductResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GetMultiPricingPlanProduct\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiPricingPlanProductResponse.fromProto(resp)),\n share()\n );\n }\n getMultiProductPricing(r: GetMultiProductPricingRequest | GetMultiProductPricingRequestInterface): Observable<GetMultiProductPricingResponse> {\n const request = ((<GetMultiProductPricingRequest>r).toApiJson) ? (<GetMultiProductPricingRequest>r) : new GetMultiProductPricingRequest(r);\n return this.http.post<GetMultiProductPricingResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GetMultiProductPricing\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiProductPricingResponse.fromProto(resp)),\n share()\n );\n }\n tickComponentUsage(r: TickComponentUsageRequest | TickComponentUsageRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<TickComponentUsageRequest>r).toApiJson) ? (<TickComponentUsageRequest>r) : new TickComponentUsageRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/TickComponentUsage\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n createMeteredComponent(r: CreateMeteredComponentRequest | CreateMeteredComponentRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateMeteredComponentRequest>r).toApiJson) ? (<CreateMeteredComponentRequest>r) : new CreateMeteredComponentRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/CreateMeteredComponent\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n listContracts(r: ListContractsRequest | ListContractsRequestInterface): Observable<ListContractsResponse> {\n const request = ((<ListContractsRequest>r).toApiJson) ? (<ListContractsRequest>r) : new ListContractsRequest(r);\n return this.http.post<ListContractsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ListContracts\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListContractsResponse.fromProto(resp)),\n share()\n );\n }\n getMultiContract(r: GetMultiContractsRequest | GetMultiContractsRequestInterface): Observable<GetMultiContractsResponse> {\n const request = ((<GetMultiContractsRequest>r).toApiJson) ? (<GetMultiContractsRequest>r) : new GetMultiContractsRequest(r);\n return this.http.post<GetMultiContractsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GetMultiContract\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiContractsResponse.fromProto(resp)),\n share()\n );\n }\n listProducts(r: ListProductsRequest | ListProductsRequestInterface): Observable<ListProductsResponse> {\n const request = ((<ListProductsRequest>r).toApiJson) ? (<ListProductsRequest>r) : new ListProductsRequest(r);\n return this.http.post<ListProductsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ListProducts\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListProductsResponse.fromProto(resp)),\n share()\n );\n }\n getMultiProduct(r: GetMultiProductRequest | GetMultiProductRequestInterface): Observable<GetMultiProductResponse> {\n const request = ((<GetMultiProductRequest>r).toApiJson) ? (<GetMultiProductRequest>r) : new GetMultiProductRequest(r);\n return this.http.post<GetMultiProductResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GetMultiProduct\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiProductResponse.fromProto(resp)),\n share()\n );\n }\n resetContractPricing(r: ResetContractPricingRequest | ResetContractPricingRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ResetContractPricingRequest>r).toApiJson) ? (<ResetContractPricingRequest>r) : new ResetContractPricingRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ResetContractPricing\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getPurchaseCost(r: GetPurchaseCostRequest | GetPurchaseCostRequestInterface): Observable<GetPurchaseCostResponse> {\n const request = ((<GetPurchaseCostRequest>r).toApiJson) ? (<GetPurchaseCostRequest>r) : new GetPurchaseCostRequest(r);\n return this.http.post<GetPurchaseCostResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/GetPurchaseCost\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetPurchaseCostResponse.fromProto(resp)),\n share()\n );\n }\n changeFrequency(r: ChangeFrequencyRequest | ChangeFrequencyRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ChangeFrequencyRequest>r).toApiJson) ? (<ChangeFrequencyRequest>r) : new ChangeFrequencyRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ChangeFrequency\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n changeRenewalDate(r: ChangeRenewalDateRequest | ChangeRenewalDateRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ChangeRenewalDateRequest>r).toApiJson) ? (<ChangeRenewalDateRequest>r) : new ChangeRenewalDateRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ChangeRenewalDate\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n changeCustomUnitPrice(r: ChangeCustomUnitPriceRequest | ChangeCustomUnitPriceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ChangeCustomUnitPriceRequest>r).toApiJson) ? (<ChangeCustomUnitPriceRequest>r) : new ChangeCustomUnitPriceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/ChangeCustomUnitPrice\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n startRevRecTemplateBackfill(r: StartRevRecTemplateBackfillRequest | StartRevRecTemplateBackfillRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<StartRevRecTemplateBackfillRequest>r).toApiJson) ? (<StartRevRecTemplateBackfillRequest>r) : new StartRevRecTemplateBackfillRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.Billing/StartRevRecTemplateBackfill\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n GetMultiBundleRequest,\n GetMultiBundleResponse,\n ListBundlesRequest,\n ListBundlesResponse,\n UpsertBundleRequest,\n} from './objects/';\nimport {\n GetMultiBundleRequestInterface,\n GetMultiBundleResponseInterface,\n ListBundlesRequestInterface,\n ListBundlesResponseInterface,\n UpsertBundleRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class BundleApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n upsert(r: UpsertBundleRequest | UpsertBundleRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpsertBundleRequest>r).toApiJson) ? (<UpsertBundleRequest>r) : new UpsertBundleRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.BundleService/Upsert\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getMulti(r: GetMultiBundleRequest | GetMultiBundleRequestInterface): Observable<GetMultiBundleResponse> {\n const request = ((<GetMultiBundleRequest>r).toApiJson) ? (<GetMultiBundleRequest>r) : new GetMultiBundleRequest(r);\n return this.http.post<GetMultiBundleResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.BundleService/GetMulti\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiBundleResponse.fromProto(resp)),\n share()\n );\n }\n list(r: ListBundlesRequest | ListBundlesRequestInterface): Observable<ListBundlesResponse> {\n const request = ((<ListBundlesRequest>r).toApiJson) ? (<ListBundlesRequest>r) : new ListBundlesRequest(r);\n return this.http.post<ListBundlesResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.BundleService/List\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListBundlesResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n DeleteContractDocumentRequest,\n ListContractDocumentsRequest,\n ListContractDocumentsResponse,\n} from './objects/';\nimport {\n DeleteContractDocumentRequestInterface,\n ListContractDocumentsRequestInterface,\n ListContractDocumentsResponseInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class ContractDocumentApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n list(r: ListContractDocumentsRequest | ListContractDocumentsRequestInterface): Observable<ListContractDocumentsResponse> {\n const request = ((<ListContractDocumentsRequest>r).toApiJson) ? (<ListContractDocumentsRequest>r) : new ListContractDocumentsRequest(r);\n return this.http.post<ListContractDocumentsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.ContractDocumentService/List\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListContractDocumentsResponse.fromProto(resp)),\n share()\n );\n }\n delete(r: DeleteContractDocumentRequest | DeleteContractDocumentRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteContractDocumentRequest>r).toApiJson) ? (<DeleteContractDocumentRequest>r) : new DeleteContractDocumentRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.ContractDocumentService/Delete\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n CreateContractRequest,\n CreateContractResponse,\n GetContractRequest,\n GetContractResponse,\n UpdateContractRequest,\n UpdateContractResponse,\n UpdateContractSubscriptionRequest,\n} from './objects/';\nimport {\n CreateContractRequestInterface,\n CreateContractResponseInterface,\n GetContractRequestInterface,\n GetContractResponseInterface,\n UpdateContractRequestInterface,\n UpdateContractResponseInterface,\n UpdateContractSubscriptionRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class ContractApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n get(r: GetContractRequest | GetContractRequestInterface): Observable<GetContractResponse> {\n const request = ((<GetContractRequest>r).toApiJson) ? (<GetContractRequest>r) : new GetContractRequest(r);\n return this.http.post<GetContractResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.ContractService/Get\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetContractResponse.fromProto(resp)),\n share()\n );\n }\n updateSubscription(r: UpdateContractSubscriptionRequest | UpdateContractSubscriptionRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpdateContractSubscriptionRequest>r).toApiJson) ? (<UpdateContractSubscriptionRequest>r) : new UpdateContractSubscriptionRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.ContractService/UpdateSubscription\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n create(r: CreateContractRequest | CreateContractRequestInterface): Observable<CreateContractResponse> {\n const request = ((<CreateContractRequest>r).toApiJson) ? (<CreateContractRequest>r) : new CreateContractRequest(r);\n return this.http.post<CreateContractResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.ContractService/Create\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CreateContractResponse.fromProto(resp)),\n share()\n );\n }\n update(r: UpdateContractRequest | UpdateContractRequestInterface): Observable<UpdateContractResponse> {\n const request = ((<UpdateContractRequest>r).toApiJson) ? (<UpdateContractRequest>r) : new UpdateContractRequest(r);\n return this.http.post<UpdateContractResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.ContractService/Update\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpdateContractResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n AddCreditRequest,\n GetBalanceRequest,\n GetBalanceResponse,\n} from './objects/';\nimport {\n AddCreditRequestInterface,\n GetBalanceRequestInterface,\n GetBalanceResponseInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class CreditApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n add(r: AddCreditRequest | AddCreditRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<AddCreditRequest>r).toApiJson) ? (<AddCreditRequest>r) : new AddCreditRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.CreditService/Add\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getBalance(r: GetBalanceRequest | GetBalanceRequestInterface): Observable<GetBalanceResponse> {\n const request = ((<GetBalanceRequest>r).toApiJson) ? (<GetBalanceRequest>r) : new GetBalanceRequest(r);\n return this.http.post<GetBalanceResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.CreditService/GetBalance\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetBalanceResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n CreateDiscountRequest,\n ExpireDiscountRequest,\n ListDiscountsRequest,\n ListDiscountsResponse,\n UpdateDiscountRequest,\n} from './objects/';\nimport {\n CreateDiscountRequestInterface,\n ExpireDiscountRequestInterface,\n ListDiscountsRequestInterface,\n ListDiscountsResponseInterface,\n UpdateDiscountRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class DiscountApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n list(r: ListDiscountsRequest | ListDiscountsRequestInterface): Observable<ListDiscountsResponse> {\n const request = ((<ListDiscountsRequest>r).toApiJson) ? (<ListDiscountsRequest>r) : new ListDiscountsRequest(r);\n return this.http.post<ListDiscountsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.DiscountService/List\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListDiscountsResponse.fromProto(resp)),\n share()\n );\n }\n create(r: CreateDiscountRequest | CreateDiscountRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateDiscountRequest>r).toApiJson) ? (<CreateDiscountRequest>r) : new CreateDiscountRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.DiscountService/Create\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n update(r: UpdateDiscountRequest | UpdateDiscountRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpdateDiscountRequest>r).toApiJson) ? (<UpdateDiscountRequest>r) : new UpdateDiscountRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.DiscountService/Update\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n expire(r: ExpireDiscountRequest | ExpireDiscountRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ExpireDiscountRequest>r).toApiJson) ? (<ExpireDiscountRequest>r) : new ExpireDiscountRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.DiscountService/Expire\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n AddBundleRequest,\n AddBundleResponse,\n AddLineItemRequest,\n AddLineItemResponse,\n ChargeInvoiceRequest,\n CreateInvoiceRequest,\n CreateInvoiceResponse,\n DeleteInvoiceRequest,\n DeleteLineItemRequest,\n DeleteLineItemResponse,\n DuplicateInvoiceRequest,\n DuplicateInvoiceResponse,\n GetInvoiceRequest,\n GetInvoiceResponse,\n ListInvoicesRequest,\n ListInvoicesResponse,\n PayInvoiceRequest,\n RemoveBundleRequest,\n RemoveBundleResponse,\n SendInvoiceRequest,\n UpdateBundleRequest,\n UpdateBundleResponse,\n UpdateDefaultTaxRatesRequest,\n UpdateDefaultTaxRatesResponse,\n UpdateInvoiceRequest,\n UpdateInvoiceResponse,\n UpdateLineItemRequest,\n UpdateLineItemResponse,\n VoidInvoiceRequest,\n} from './objects/';\nimport {\n AddBundleRequestInterface,\n AddBundleResponseInterface,\n AddLineItemRequestInterface,\n AddLineItemResponseInterface,\n ChargeInvoiceRequestInterface,\n CreateInvoiceRequestInterface,\n CreateInvoiceResponseInterface,\n DeleteInvoiceRequestInterface,\n DeleteLineItemRequestInterface,\n DeleteLineItemResponseInterface,\n DuplicateInvoiceRequestInterface,\n DuplicateInvoiceResponseInterface,\n GetInvoiceRequestInterface,\n GetInvoiceResponseInterface,\n ListInvoicesRequestInterface,\n ListInvoicesResponseInterface,\n PayInvoiceRequestInterface,\n RemoveBundleRequestInterface,\n RemoveBundleResponseInterface,\n SendInvoiceRequestInterface,\n UpdateBundleRequestInterface,\n UpdateBundleResponseInterface,\n UpdateDefaultTaxRatesRequestInterface,\n UpdateDefaultTaxRatesResponseInterface,\n UpdateInvoiceRequestInterface,\n UpdateInvoiceResponseInterface,\n UpdateLineItemRequestInterface,\n UpdateLineItemResponseInterface,\n VoidInvoiceRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class InvoiceApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n addBundle(r: AddBundleRequest | AddBundleRequestInterface): Observable<AddBundleResponse> {\n const request = ((<AddBundleRequest>r).toApiJson) ? (<AddBundleRequest>r) : new AddBundleRequest(r);\n return this.http.post<AddBundleResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/AddBundle\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => AddBundleResponse.fromProto(resp)),\n share()\n );\n }\n addLineItem(r: AddLineItemRequest | AddLineItemRequestInterface): Observable<AddLineItemResponse> {\n const request = ((<AddLineItemRequest>r).toApiJson) ? (<AddLineItemRequest>r) : new AddLineItemRequest(r);\n return this.http.post<AddLineItemResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/AddLineItem\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => AddLineItemResponse.fromProto(resp)),\n share()\n );\n }\n charge(r: ChargeInvoiceRequest | ChargeInvoiceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ChargeInvoiceRequest>r).toApiJson) ? (<ChargeInvoiceRequest>r) : new ChargeInvoiceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/Charge\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n create(r: CreateInvoiceRequest | CreateInvoiceRequestInterface): Observable<CreateInvoiceResponse> {\n const request = ((<CreateInvoiceRequest>r).toApiJson) ? (<CreateInvoiceRequest>r) : new CreateInvoiceRequest(r);\n return this.http.post<CreateInvoiceResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/Create\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CreateInvoiceResponse.fromProto(resp)),\n share()\n );\n }\n delete(r: DeleteInvoiceRequest | DeleteInvoiceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteInvoiceRequest>r).toApiJson) ? (<DeleteInvoiceRequest>r) : new DeleteInvoiceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/Delete\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n deleteLineItem(r: DeleteLineItemRequest | DeleteLineItemRequestInterface): Observable<DeleteLineItemResponse> {\n const request = ((<DeleteLineItemRequest>r).toApiJson) ? (<DeleteLineItemRequest>r) : new DeleteLineItemRequest(r);\n return this.http.post<DeleteLineItemResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/DeleteLineItem\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => DeleteLineItemResponse.fromProto(resp)),\n share()\n );\n }\n get(r: GetInvoiceRequest | GetInvoiceRequestInterface): Observable<GetInvoiceResponse> {\n const request = ((<GetInvoiceRequest>r).toApiJson) ? (<GetInvoiceRequest>r) : new GetInvoiceRequest(r);\n return this.http.post<GetInvoiceResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/Get\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetInvoiceResponse.fromProto(resp)),\n share()\n );\n }\n removeBundle(r: RemoveBundleRequest | RemoveBundleRequestInterface): Observable<RemoveBundleResponse> {\n const request = ((<RemoveBundleRequest>r).toApiJson) ? (<RemoveBundleRequest>r) : new RemoveBundleRequest(r);\n return this.http.post<RemoveBundleResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/RemoveBundle\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => RemoveBundleResponse.fromProto(resp)),\n share()\n );\n }\n send(r: SendInvoiceRequest | SendInvoiceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SendInvoiceRequest>r).toApiJson) ? (<SendInvoiceRequest>r) : new SendInvoiceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/Send\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n list(r: ListInvoicesRequest | ListInvoicesRequestInterface): Observable<ListInvoicesResponse> {\n const request = ((<ListInvoicesRequest>r).toApiJson) ? (<ListInvoicesRequest>r) : new ListInvoicesRequest(r);\n return this.http.post<ListInvoicesResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/List\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListInvoicesResponse.fromProto(resp)),\n share()\n );\n }\n update(r: UpdateInvoiceRequest | UpdateInvoiceRequestInterface): Observable<UpdateInvoiceResponse> {\n const request = ((<UpdateInvoiceRequest>r).toApiJson) ? (<UpdateInvoiceRequest>r) : new UpdateInvoiceRequest(r);\n return this.http.post<UpdateInvoiceResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/Update\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpdateInvoiceResponse.fromProto(resp)),\n share()\n );\n }\n pay(r: PayInvoiceRequest | PayInvoiceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<PayInvoiceRequest>r).toApiJson) ? (<PayInvoiceRequest>r) : new PayInvoiceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/Pay\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n updateDefaultTaxRates(r: UpdateDefaultTaxRatesRequest | UpdateDefaultTaxRatesRequestInterface): Observable<UpdateDefaultTaxRatesResponse> {\n const request = ((<UpdateDefaultTaxRatesRequest>r).toApiJson) ? (<UpdateDefaultTaxRatesRequest>r) : new UpdateDefaultTaxRatesRequest(r);\n return this.http.post<UpdateDefaultTaxRatesResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/UpdateDefaultTaxRates\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpdateDefaultTaxRatesResponse.fromProto(resp)),\n share()\n );\n }\n updateLineItem(r: UpdateLineItemRequest | UpdateLineItemRequestInterface): Observable<UpdateLineItemResponse> {\n const request = ((<UpdateLineItemRequest>r).toApiJson) ? (<UpdateLineItemRequest>r) : new UpdateLineItemRequest(r);\n return this.http.post<UpdateLineItemResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/UpdateLineItem\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpdateLineItemResponse.fromProto(resp)),\n share()\n );\n }\n void(r: VoidInvoiceRequest | VoidInvoiceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<VoidInvoiceRequest>r).toApiJson) ? (<VoidInvoiceRequest>r) : new VoidInvoiceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/Void\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n duplicate(r: DuplicateInvoiceRequest | DuplicateInvoiceRequestInterface): Observable<DuplicateInvoiceResponse> {\n const request = ((<DuplicateInvoiceRequest>r).toApiJson) ? (<DuplicateInvoiceRequest>r) : new DuplicateInvoiceRequest(r);\n return this.http.post<DuplicateInvoiceResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/Duplicate\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => DuplicateInvoiceResponse.fromProto(resp)),\n share()\n );\n }\n updateBundle(r: UpdateBundleRequest | UpdateBundleRequestInterface): Observable<UpdateBundleResponse> {\n const request = ((<UpdateBundleRequest>r).toApiJson) ? (<UpdateBundleRequest>r) : new UpdateBundleRequest(r);\n return this.http.post<UpdateBundleResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceService/UpdateBundle\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpdateBundleResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n AddTemplateBundleRequest,\n AddTemplateBundleResponse,\n AddTemplateLineItemRequest,\n AddTemplateLineItemResponse,\n CreateTemplateRequest,\n CreateTemplateResponse,\n DeleteInvoiceTemplateRequest,\n DeleteTemplateLineItemRequest,\n DeleteTemplateLineItemResponse,\n GetInvoiceTemplateRequest,\n GetInvoiceTemplateResponse,\n UpdateTemplateBundleRequest,\n UpdateTemplateBundleResponse,\n UpdateTemplateDefaultTaxRatesRequest,\n UpdateTemplateDefaultTaxRatesResponse,\n UpdateTemplateLineItemRequest,\n UpdateTemplateLineItemResponse,\n UpsertInvoiceTemplateRequest,\n UpsertInvoiceTemplateResponse,\n} from './objects/';\nimport {\n AddTemplateBundleRequestInterface,\n AddTemplateBundleResponseInterface,\n AddTemplateLineItemRequestInterface,\n AddTemplateLineItemResponseInterface,\n CreateTemplateRequestInterface,\n CreateTemplateResponseInterface,\n DeleteInvoiceTemplateRequestInterface,\n DeleteTemplateLineItemRequestInterface,\n DeleteTemplateLineItemResponseInterface,\n GetInvoiceTemplateRequestInterface,\n GetInvoiceTemplateResponseInterface,\n UpdateTemplateBundleRequestInterface,\n UpdateTemplateBundleResponseInterface,\n UpdateTemplateDefaultTaxRatesRequestInterface,\n UpdateTemplateDefaultTaxRatesResponseInterface,\n UpdateTemplateLineItemRequestInterface,\n UpdateTemplateLineItemResponseInterface,\n UpsertInvoiceTemplateRequestInterface,\n UpsertInvoiceTemplateResponseInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class InvoiceTemplateApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n addBundle(r: AddTemplateBundleRequest | AddTemplateBundleRequestInterface): Observable<AddTemplateBundleResponse> {\n const request = ((<AddTemplateBundleRequest>r).toApiJson) ? (<AddTemplateBundleRequest>r) : new AddTemplateBundleRequest(r);\n return this.http.post<AddTemplateBundleResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceTemplateService/AddBundle\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => AddTemplateBundleResponse.fromProto(resp)),\n share()\n );\n }\n addLineItem(r: AddTemplateLineItemRequest | AddTemplateLineItemRequestInterface): Observable<AddTemplateLineItemResponse> {\n const request = ((<AddTemplateLineItemRequest>r).toApiJson) ? (<AddTemplateLineItemRequest>r) : new AddTemplateLineItemRequest(r);\n return this.http.post<AddTemplateLineItemResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceTemplateService/AddLineItem\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => AddTemplateLineItemResponse.fromProto(resp)),\n share()\n );\n }\n create(r: CreateTemplateRequest | CreateTemplateRequestInterface): Observable<CreateTemplateResponse> {\n const request = ((<CreateTemplateRequest>r).toApiJson) ? (<CreateTemplateRequest>r) : new CreateTemplateRequest(r);\n return this.http.post<CreateTemplateResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceTemplateService/Create\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CreateTemplateResponse.fromProto(resp)),\n share()\n );\n }\n upsert(r: UpsertInvoiceTemplateRequest | UpsertInvoiceTemplateRequestInterface): Observable<UpsertInvoiceTemplateResponse> {\n const request = ((<UpsertInvoiceTemplateRequest>r).toApiJson) ? (<UpsertInvoiceTemplateRequest>r) : new UpsertInvoiceTemplateRequest(r);\n return this.http.post<UpsertInvoiceTemplateResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceTemplateService/Upsert\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpsertInvoiceTemplateResponse.fromProto(resp)),\n share()\n );\n }\n get(r: GetInvoiceTemplateRequest | GetInvoiceTemplateRequestInterface): Observable<GetInvoiceTemplateResponse> {\n const request = ((<GetInvoiceTemplateRequest>r).toApiJson) ? (<GetInvoiceTemplateRequest>r) : new GetInvoiceTemplateRequest(r);\n return this.http.post<GetInvoiceTemplateResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceTemplateService/Get\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetInvoiceTemplateResponse.fromProto(resp)),\n share()\n );\n }\n delete(r: DeleteInvoiceTemplateRequest | DeleteInvoiceTemplateRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteInvoiceTemplateRequest>r).toApiJson) ? (<DeleteInvoiceTemplateRequest>r) : new DeleteInvoiceTemplateRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceTemplateService/Delete\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n deleteLineItem(r: DeleteTemplateLineItemRequest | DeleteTemplateLineItemRequestInterface): Observable<DeleteTemplateLineItemResponse> {\n const request = ((<DeleteTemplateLineItemRequest>r).toApiJson) ? (<DeleteTemplateLineItemRequest>r) : new DeleteTemplateLineItemRequest(r);\n return this.http.post<DeleteTemplateLineItemResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceTemplateService/DeleteLineItem\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => DeleteTemplateLineItemResponse.fromProto(resp)),\n share()\n );\n }\n updateBundle(r: UpdateTemplateBundleRequest | UpdateTemplateBundleRequestInterface): Observable<UpdateTemplateBundleResponse> {\n const request = ((<UpdateTemplateBundleRequest>r).toApiJson) ? (<UpdateTemplateBundleRequest>r) : new UpdateTemplateBundleRequest(r);\n return this.http.post<UpdateTemplateBundleResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceTemplateService/UpdateBundle\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpdateTemplateBundleResponse.fromProto(resp)),\n share()\n );\n }\n updateLineItem(r: UpdateTemplateLineItemRequest | UpdateTemplateLineItemRequestInterface): Observable<UpdateTemplateLineItemResponse> {\n const request = ((<UpdateTemplateLineItemRequest>r).toApiJson) ? (<UpdateTemplateLineItemRequest>r) : new UpdateTemplateLineItemRequest(r);\n return this.http.post<UpdateTemplateLineItemResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceTemplateService/UpdateLineItem\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpdateTemplateLineItemResponse.fromProto(resp)),\n share()\n );\n }\n updateTemplateDefaultTaxRates(r: UpdateTemplateDefaultTaxRatesRequest | UpdateTemplateDefaultTaxRatesRequestInterface): Observable<UpdateTemplateDefaultTaxRatesResponse> {\n const request = ((<UpdateTemplateDefaultTaxRatesRequest>r).toApiJson) ? (<UpdateTemplateDefaultTaxRatesRequest>r) : new UpdateTemplateDefaultTaxRatesRequest(r);\n return this.http.post<UpdateTemplateDefaultTaxRatesResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.InvoiceTemplateService/UpdateTemplateDefaultTaxRates\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => UpdateTemplateDefaultTaxRatesResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n ChargeSalesInvoiceRequest,\n CreateMerchantRequest,\n CreatePaymentCardRequest,\n CreateStripeExternalAccountRequest,\n DeleteBankAccountRequest,\n GetMerchantRequest,\n GetMerchantResponse,\n GetMultiRetailConfigurationsRequest,\n GetMultiRetailConfigurationsResponse,\n GetOutstandingBalanceRequest,\n GetOutstandingBalanceResponse,\n GetPayoutSummaryRequest,\n GetPayoutSummaryResponse,\n GetRetailBalanceRequest,\n GetRetailBalanceResponse,\n GetRetailPayoutRequest,\n GetRetailPayoutResponse,\n GetStatisticsRequest,\n GetStatisticsResponse,\n ListBankAccountsRequest,\n ListBankAccountsResponse,\n ListPaymentCardsRequest,\n ListPaymentCardsResponse,\n ListRetailPayoutsRequest,\n ListRetailPayoutsResponse,\n SearchMerchantsRequest,\n SearchMerchantsResponse,\n SendSalesInvoiceEmailRequest,\n SendSalesInvoiceReceiptEmailRequest,\n SetAutoChargeInvoicesRequest,\n SetAutoPostInvoicesRequest,\n SetDefaultBankAccountRequest,\n SetDefaultPaymentCardRequest,\n SetHasAlternativePaymentMethodRequest,\n SetIncludeInFinancialRecordsRequest,\n UpdateMerchantRequest,\n UpdatePaymentCardRequest,\n UpsertDefaultRetailCustomerConfigurationRequest,\n UpsertRetailConfigurationRequest,\n} from './objects/';\nimport {\n ChargeSalesInvoiceRequestInterface,\n CreateMerchantRequestInterface,\n CreatePaymentCardRequestInterface,\n CreateStripeExternalAccountRequestInterface,\n DeleteBankAccountRequestInterface,\n GetMerchantRequestInterface,\n GetMerchantResponseInterface,\n GetMultiRetailConfigurationsRequestInterface,\n GetMultiRetailConfigurationsResponseInterface,\n GetOutstandingBalanceRequestInterface,\n GetOutstandingBalanceResponseInterface,\n GetPayoutSummaryRequestInterface,\n GetPayoutSummaryResponseInterface,\n GetRetailBalanceRequestInterface,\n GetRetailBalanceResponseInterface,\n GetRetailPayoutRequestInterface,\n GetRetailPayoutResponseInterface,\n GetStatisticsRequestInterface,\n GetStatisticsResponseInterface,\n ListBankAccountsRequestInterface,\n ListBankAccountsResponseInterface,\n ListPaymentCardsRequestInterface,\n ListPaymentCardsResponseInterface,\n ListRetailPayoutsRequestInterface,\n ListRetailPayoutsResponseInterface,\n SearchMerchantsRequestInterface,\n SearchMerchantsResponseInterface,\n SendSalesInvoiceEmailRequestInterface,\n SendSalesInvoiceReceiptEmailRequestInterface,\n SetAutoChargeInvoicesRequestInterface,\n SetAutoPostInvoicesRequestInterface,\n SetDefaultBankAccountRequestInterface,\n SetDefaultPaymentCardRequestInterface,\n SetHasAlternativePaymentMethodRequestInterface,\n SetIncludeInFinancialRecordsRequestInterface,\n UpdateMerchantRequestInterface,\n UpdatePaymentCardRequestInterface,\n UpsertDefaultRetailCustomerConfigurationRequestInterface,\n UpsertRetailConfigurationRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class MerchantApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n create(r: CreateMerchantRequest | CreateMerchantRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateMerchantRequest>r).toApiJson) ? (<CreateMerchantRequest>r) : new CreateMerchantRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/Create\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n get(r: GetMerchantRequest | GetMerchantRequestInterface): Observable<GetMerchantResponse> {\n const request = ((<GetMerchantRequest>r).toApiJson) ? (<GetMerchantRequest>r) : new GetMerchantRequest(r);\n return this.http.post<GetMerchantResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/Get\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMerchantResponse.fromProto(resp)),\n share()\n );\n }\n getOutstandingBalance(r: GetOutstandingBalanceRequest | GetOutstandingBalanceRequestInterface): Observable<GetOutstandingBalanceResponse> {\n const request = ((<GetOutstandingBalanceRequest>r).toApiJson) ? (<GetOutstandingBalanceRequest>r) : new GetOutstandingBalanceRequest(r);\n return this.http.post<GetOutstandingBalanceResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/GetOutstandingBalance\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetOutstandingBalanceResponse.fromProto(resp)),\n share()\n );\n }\n update(r: UpdateMerchantRequest | UpdateMerchantRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpdateMerchantRequest>r).toApiJson) ? (<UpdateMerchantRequest>r) : new UpdateMerchantRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/Update\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n createPaymentCard(r: CreatePaymentCardRequest | CreatePaymentCardRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreatePaymentCardRequest>r).toApiJson) ? (<CreatePaymentCardRequest>r) : new CreatePaymentCardRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/CreatePaymentCard\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n setDefaultPaymentCard(r: SetDefaultPaymentCardRequest | SetDefaultPaymentCardRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SetDefaultPaymentCardRequest>r).toApiJson) ? (<SetDefaultPaymentCardRequest>r) : new SetDefaultPaymentCardRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/SetDefaultPaymentCard\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n listPaymentCards(r: ListPaymentCardsRequest | ListPaymentCardsRequestInterface): Observable<ListPaymentCardsResponse> {\n const request = ((<ListPaymentCardsRequest>r).toApiJson) ? (<ListPaymentCardsRequest>r) : new ListPaymentCardsRequest(r);\n return this.http.post<ListPaymentCardsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/ListPaymentCards\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPaymentCardsResponse.fromProto(resp)),\n share()\n );\n }\n updatePaymentCard(r: UpdatePaymentCardRequest | UpdatePaymentCardRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpdatePaymentCardRequest>r).toApiJson) ? (<UpdatePaymentCardRequest>r) : new UpdatePaymentCardRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/UpdatePaymentCard\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getStatistics(r: GetStatisticsRequest | GetStatisticsRequestInterface): Observable<GetStatisticsResponse> {\n const request = ((<GetStatisticsRequest>r).toApiJson) ? (<GetStatisticsRequest>r) : new GetStatisticsRequest(r);\n return this.http.post<GetStatisticsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/GetStatistics\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetStatisticsResponse.fromProto(resp)),\n share()\n );\n }\n search(r: SearchMerchantsRequest | SearchMerchantsRequestInterface): Observable<SearchMerchantsResponse> {\n const request = ((<SearchMerchantsRequest>r).toApiJson) ? (<SearchMerchantsRequest>r) : new SearchMerchantsRequest(r);\n return this.http.post<SearchMerchantsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/Search\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => SearchMerchantsResponse.fromProto(resp)),\n share()\n );\n }\n setAutoPostInvoices(r: SetAutoPostInvoicesRequest | SetAutoPostInvoicesRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SetAutoPostInvoicesRequest>r).toApiJson) ? (<SetAutoPostInvoicesRequest>r) : new SetAutoPostInvoicesRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/SetAutoPostInvoices\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n setAutoChargeInvoices(r: SetAutoChargeInvoicesRequest | SetAutoChargeInvoicesRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SetAutoChargeInvoicesRequest>r).toApiJson) ? (<SetAutoChargeInvoicesRequest>r) : new SetAutoChargeInvoicesRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/SetAutoChargeInvoices\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n setIncludeInFinancialRecords(r: SetIncludeInFinancialRecordsRequest | SetIncludeInFinancialRecordsRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SetIncludeInFinancialRecordsRequest>r).toApiJson) ? (<SetIncludeInFinancialRecordsRequest>r) : new SetIncludeInFinancialRecordsRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/SetIncludeInFinancialRecords\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n setHasAlternativePaymentMethod(r: SetHasAlternativePaymentMethodRequest | SetHasAlternativePaymentMethodRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SetHasAlternativePaymentMethodRequest>r).toApiJson) ? (<SetHasAlternativePaymentMethodRequest>r) : new SetHasAlternativePaymentMethodRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/SetHasAlternativePaymentMethod\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n sendSalesInvoiceEmail(r: SendSalesInvoiceEmailRequest | SendSalesInvoiceEmailRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SendSalesInvoiceEmailRequest>r).toApiJson) ? (<SendSalesInvoiceEmailRequest>r) : new SendSalesInvoiceEmailRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/SendSalesInvoiceEmail\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n chargeSalesInvoice(r: ChargeSalesInvoiceRequest | ChargeSalesInvoiceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ChargeSalesInvoiceRequest>r).toApiJson) ? (<ChargeSalesInvoiceRequest>r) : new ChargeSalesInvoiceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/ChargeSalesInvoice\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n sendSalesInvoiceReceiptEmail(r: SendSalesInvoiceReceiptEmailRequest | SendSalesInvoiceReceiptEmailRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SendSalesInvoiceReceiptEmailRequest>r).toApiJson) ? (<SendSalesInvoiceReceiptEmailRequest>r) : new SendSalesInvoiceReceiptEmailRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/SendSalesInvoiceReceiptEmail\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n createStripeExternalAccount(r: CreateStripeExternalAccountRequest | CreateStripeExternalAccountRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateStripeExternalAccountRequest>r).toApiJson) ? (<CreateStripeExternalAccountRequest>r) : new CreateStripeExternalAccountRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/CreateStripeExternalAccount\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n listBankAccounts(r: ListBankAccountsRequest | ListBankAccountsRequestInterface): Observable<ListBankAccountsResponse> {\n const request = ((<ListBankAccountsRequest>r).toApiJson) ? (<ListBankAccountsRequest>r) : new ListBankAccountsRequest(r);\n return this.http.post<ListBankAccountsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/ListBankAccounts\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListBankAccountsResponse.fromProto(resp)),\n share()\n );\n }\n setDefaultBankAccount(r: SetDefaultBankAccountRequest | SetDefaultBankAccountRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SetDefaultBankAccountRequest>r).toApiJson) ? (<SetDefaultBankAccountRequest>r) : new SetDefaultBankAccountRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/SetDefaultBankAccount\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n deleteBankAccount(r: DeleteBankAccountRequest | DeleteBankAccountRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteBankAccountRequest>r).toApiJson) ? (<DeleteBankAccountRequest>r) : new DeleteBankAccountRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/DeleteBankAccount\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getMultiRetailConfigurations(r: GetMultiRetailConfigurationsRequest | GetMultiRetailConfigurationsRequestInterface): Observable<GetMultiRetailConfigurationsResponse> {\n const request = ((<GetMultiRetailConfigurationsRequest>r).toApiJson) ? (<GetMultiRetailConfigurationsRequest>r) : new GetMultiRetailConfigurationsRequest(r);\n return this.http.post<GetMultiRetailConfigurationsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/GetMultiRetailConfigurations\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiRetailConfigurationsResponse.fromProto(resp)),\n share()\n );\n }\n upsertRetailConfiguration(r: UpsertRetailConfigurationRequest | UpsertRetailConfigurationRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpsertRetailConfigurationRequest>r).toApiJson) ? (<UpsertRetailConfigurationRequest>r) : new UpsertRetailConfigurationRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/UpsertRetailConfiguration\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n upsertDefaultRetailCustomerConfiguration(r: UpsertDefaultRetailCustomerConfigurationRequest | UpsertDefaultRetailCustomerConfigurationRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpsertDefaultRetailCustomerConfigurationRequest>r).toApiJson) ? (<UpsertDefaultRetailCustomerConfigurationRequest>r) : new UpsertDefaultRetailCustomerConfigurationRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/UpsertDefaultRetailCustomerConfiguration\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getRetailBalance(r: GetRetailBalanceRequest | GetRetailBalanceRequestInterface): Observable<GetRetailBalanceResponse> {\n const request = ((<GetRetailBalanceRequest>r).toApiJson) ? (<GetRetailBalanceRequest>r) : new GetRetailBalanceRequest(r);\n return this.http.post<GetRetailBalanceResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/GetRetailBalance\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetRetailBalanceResponse.fromProto(resp)),\n share()\n );\n }\n getPayoutSummary(r: GetPayoutSummaryRequest | GetPayoutSummaryRequestInterface): Observable<GetPayoutSummaryResponse> {\n const request = ((<GetPayoutSummaryRequest>r).toApiJson) ? (<GetPayoutSummaryRequest>r) : new GetPayoutSummaryRequest(r);\n return this.http.post<GetPayoutSummaryResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/GetPayoutSummary\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetPayoutSummaryResponse.fromProto(resp)),\n share()\n );\n }\n listRetailPayouts(r: ListRetailPayoutsRequest | ListRetailPayoutsRequestInterface): Observable<ListRetailPayoutsResponse> {\n const request = ((<ListRetailPayoutsRequest>r).toApiJson) ? (<ListRetailPayoutsRequest>r) : new ListRetailPayoutsRequest(r);\n return this.http.post<ListRetailPayoutsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/ListRetailPayouts\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListRetailPayoutsResponse.fromProto(resp)),\n share()\n );\n }\n getRetailPayout(r: GetRetailPayoutRequest | GetRetailPayoutRequestInterface): Observable<GetRetailPayoutResponse> {\n const request = ((<GetRetailPayoutRequest>r).toApiJson) ? (<GetRetailPayoutRequest>r) : new GetRetailPayoutRequest(r);\n return this.http.post<GetRetailPayoutResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.MerchantService/GetRetailPayout\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetRetailPayoutResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n DeletePaymentCardRequest,\n ListPaymentCardsRequest,\n ListPaymentCardsResponse,\n SetDefaultPaymentMethodRequest,\n} from './objects/';\nimport {\n DeletePaymentCardRequestInterface,\n ListPaymentCardsRequestInterface,\n ListPaymentCardsResponseInterface,\n SetDefaultPaymentMethodRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class PaymentMethodApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n listPaymentCards(r: ListPaymentCardsRequest | ListPaymentCardsRequestInterface): Observable<ListPaymentCardsResponse> {\n const request = ((<ListPaymentCardsRequest>r).toApiJson) ? (<ListPaymentCardsRequest>r) : new ListPaymentCardsRequest(r);\n return this.http.post<ListPaymentCardsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentMethodService/ListPaymentCards\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPaymentCardsResponse.fromProto(resp)),\n share()\n );\n }\n deletePaymentCard(r: DeletePaymentCardRequest | DeletePaymentCardRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeletePaymentCardRequest>r).toApiJson) ? (<DeletePaymentCardRequest>r) : new DeletePaymentCardRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentMethodService/DeletePaymentCard\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n setDefaultPaymentMethod(r: SetDefaultPaymentMethodRequest | SetDefaultPaymentMethodRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SetDefaultPaymentMethodRequest>r).toApiJson) ? (<SetDefaultPaymentMethodRequest>r) : new SetDefaultPaymentMethodRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentMethodService/SetDefaultPaymentMethod\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n CloseRetailDisputeRequest,\n ConfigureRetailPaymentProviderRequest,\n ConfigureRetailPaymentProviderResponse,\n ConfirmRetailPaymentRequest,\n GetRetailDisputeRequest,\n GetRetailDisputeResponse,\n GetRetailPaymentProviderRequest,\n GetRetailPaymentProviderResponse,\n GetRetailPaymentRequest,\n GetRetailPaymentResponse,\n ListPaymentRequest,\n ListPaymentResponse,\n ListRetailDisputesRequest,\n ListRetailDisputesResponse,\n ListRetailPaymentsRequest,\n ListRetailPaymentsResponse,\n PrepareRetailPaymentRequest,\n PrepareRetailPaymentResponse,\n RetailPaymentsEnabledRequest,\n RetailPaymentsEnabledResponse,\n RetailStatusRequest,\n RetailStatusResponse,\n SubmitEvidenceRequest,\n UpdateRetailPaymentProviderRequest,\n} from './objects/';\nimport {\n CloseRetailDisputeRequestInterface,\n ConfigureRetailPaymentProviderRequestInterface,\n ConfigureRetailPaymentProviderResponseInterface,\n ConfirmRetailPaymentRequestInterface,\n GetRetailDisputeRequestInterface,\n GetRetailDisputeResponseInterface,\n GetRetailPaymentProviderRequestInterface,\n GetRetailPaymentProviderResponseInterface,\n GetRetailPaymentRequestInterface,\n GetRetailPaymentResponseInterface,\n ListPaymentRequestInterface,\n ListPaymentResponseInterface,\n ListRetailDisputesRequestInterface,\n ListRetailDisputesResponseInterface,\n ListRetailPaymentsRequestInterface,\n ListRetailPaymentsResponseInterface,\n PrepareRetailPaymentRequestInterface,\n PrepareRetailPaymentResponseInterface,\n RetailPaymentsEnabledRequestInterface,\n RetailPaymentsEnabledResponseInterface,\n RetailStatusRequestInterface,\n RetailStatusResponseInterface,\n SubmitEvidenceRequestInterface,\n UpdateRetailPaymentProviderRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class PaymentApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n list(r: ListPaymentRequest | ListPaymentRequestInterface): Observable<ListPaymentResponse> {\n const request = ((<ListPaymentRequest>r).toApiJson) ? (<ListPaymentRequest>r) : new ListPaymentRequest(r);\n return this.http.post<ListPaymentResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/List\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPaymentResponse.fromProto(resp)),\n share()\n );\n }\n getRetail(r: GetRetailPaymentRequest | GetRetailPaymentRequestInterface): Observable<GetRetailPaymentResponse> {\n const request = ((<GetRetailPaymentRequest>r).toApiJson) ? (<GetRetailPaymentRequest>r) : new GetRetailPaymentRequest(r);\n return this.http.post<GetRetailPaymentResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/GetRetail\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetRetailPaymentResponse.fromProto(resp)),\n share()\n );\n }\n listRetail(r: ListRetailPaymentsRequest | ListRetailPaymentsRequestInterface): Observable<ListRetailPaymentsResponse> {\n const request = ((<ListRetailPaymentsRequest>r).toApiJson) ? (<ListRetailPaymentsRequest>r) : new ListRetailPaymentsRequest(r);\n return this.http.post<ListRetailPaymentsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/ListRetail\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListRetailPaymentsResponse.fromProto(resp)),\n share()\n );\n }\n listRetailDisputes(r: ListRetailDisputesRequest | ListRetailDisputesRequestInterface): Observable<ListRetailDisputesResponse> {\n const request = ((<ListRetailDisputesRequest>r).toApiJson) ? (<ListRetailDisputesRequest>r) : new ListRetailDisputesRequest(r);\n return this.http.post<ListRetailDisputesResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/ListRetailDisputes\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListRetailDisputesResponse.fromProto(resp)),\n share()\n );\n }\n getRetailDispute(r: GetRetailDisputeRequest | GetRetailDisputeRequestInterface): Observable<GetRetailDisputeResponse> {\n const request = ((<GetRetailDisputeRequest>r).toApiJson) ? (<GetRetailDisputeRequest>r) : new GetRetailDisputeRequest(r);\n return this.http.post<GetRetailDisputeResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/GetRetailDispute\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetRetailDisputeResponse.fromProto(resp)),\n share()\n );\n }\n closeRetailDispute(r: CloseRetailDisputeRequest | CloseRetailDisputeRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CloseRetailDisputeRequest>r).toApiJson) ? (<CloseRetailDisputeRequest>r) : new CloseRetailDisputeRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/CloseRetailDispute\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n prepareRetail(r: PrepareRetailPaymentRequest | PrepareRetailPaymentRequestInterface): Observable<PrepareRetailPaymentResponse> {\n const request = ((<PrepareRetailPaymentRequest>r).toApiJson) ? (<PrepareRetailPaymentRequest>r) : new PrepareRetailPaymentRequest(r);\n return this.http.post<PrepareRetailPaymentResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/PrepareRetail\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => PrepareRetailPaymentResponse.fromProto(resp)),\n share()\n );\n }\n confirmRetail(r: ConfirmRetailPaymentRequest | ConfirmRetailPaymentRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ConfirmRetailPaymentRequest>r).toApiJson) ? (<ConfirmRetailPaymentRequest>r) : new ConfirmRetailPaymentRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/ConfirmRetail\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n retailStatus(r: RetailStatusRequest | RetailStatusRequestInterface): Observable<RetailStatusResponse> {\n const request = ((<RetailStatusRequest>r).toApiJson) ? (<RetailStatusRequest>r) : new RetailStatusRequest(r);\n return this.http.post<RetailStatusResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/RetailStatus\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => RetailStatusResponse.fromProto(resp)),\n share()\n );\n }\n retailPaymentsEnabled(r: RetailPaymentsEnabledRequest | RetailPaymentsEnabledRequestInterface): Observable<RetailPaymentsEnabledResponse> {\n const request = ((<RetailPaymentsEnabledRequest>r).toApiJson) ? (<RetailPaymentsEnabledRequest>r) : new RetailPaymentsEnabledRequest(r);\n return this.http.post<RetailPaymentsEnabledResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/RetailPaymentsEnabled\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => RetailPaymentsEnabledResponse.fromProto(resp)),\n share()\n );\n }\n configureRetailProvider(r: ConfigureRetailPaymentProviderRequest | ConfigureRetailPaymentProviderRequestInterface): Observable<ConfigureRetailPaymentProviderResponse> {\n const request = ((<ConfigureRetailPaymentProviderRequest>r).toApiJson) ? (<ConfigureRetailPaymentProviderRequest>r) : new ConfigureRetailPaymentProviderRequest(r);\n return this.http.post<ConfigureRetailPaymentProviderResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/ConfigureRetailProvider\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ConfigureRetailPaymentProviderResponse.fromProto(resp)),\n share()\n );\n }\n updateRetailProvider(r: UpdateRetailPaymentProviderRequest | UpdateRetailPaymentProviderRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpdateRetailPaymentProviderRequest>r).toApiJson) ? (<UpdateRetailPaymentProviderRequest>r) : new UpdateRetailPaymentProviderRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/UpdateRetailProvider\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getRetailProvider(r: GetRetailPaymentProviderRequest | GetRetailPaymentProviderRequestInterface): Observable<GetRetailPaymentProviderResponse> {\n const request = ((<GetRetailPaymentProviderRequest>r).toApiJson) ? (<GetRetailPaymentProviderRequest>r) : new GetRetailPaymentProviderRequest(r);\n return this.http.post<GetRetailPaymentProviderResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/GetRetailProvider\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetRetailPaymentProviderResponse.fromProto(resp)),\n share()\n );\n }\n submitEvidence(r: SubmitEvidenceRequest | SubmitEvidenceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SubmitEvidenceRequest>r).toApiJson) ? (<SubmitEvidenceRequest>r) : new SubmitEvidenceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PaymentService/SubmitEvidence\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n DeleteRetailPricingRequest,\n GetMultiBundleRetailPricingRequest,\n GetMultiBundleRetailPricingResponse,\n GetMultiRetailPricingRequest,\n GetMultiRetailPricingResponse,\n GetPurchaseCostRequest,\n GetPurchaseCostResponse,\n GetWholesaleComparisonRequest,\n GetWholesaleComparisonResponse,\n SetWholesaleProductStrategyRequest,\n SetWholesaleProductVolumeCommitmentRequest,\n UpsertRetailPricingRequest,\n UpsertWholesalePricingRequest,\n} from './objects/';\nimport {\n DeleteRetailPricingRequestInterface,\n GetMultiBundleRetailPricingRequestInterface,\n GetMultiBundleRetailPricingResponseInterface,\n GetMultiRetailPricingRequestInterface,\n GetMultiRetailPricingResponseInterface,\n GetPurchaseCostRequestInterface,\n GetPurchaseCostResponseInterface,\n GetWholesaleComparisonRequestInterface,\n GetWholesaleComparisonResponseInterface,\n SetWholesaleProductStrategyRequestInterface,\n SetWholesaleProductVolumeCommitmentRequestInterface,\n UpsertRetailPricingRequestInterface,\n UpsertWholesalePricingRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class PricingApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n getMultiRetail(r: GetMultiRetailPricingRequest | GetMultiRetailPricingRequestInterface): Observable<GetMultiRetailPricingResponse> {\n const request = ((<GetMultiRetailPricingRequest>r).toApiJson) ? (<GetMultiRetailPricingRequest>r) : new GetMultiRetailPricingRequest(r);\n return this.http.post<GetMultiRetailPricingResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PricingService/GetMultiRetail\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiRetailPricingResponse.fromProto(resp)),\n share()\n );\n }\n upsertRetail(r: UpsertRetailPricingRequest | UpsertRetailPricingRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpsertRetailPricingRequest>r).toApiJson) ? (<UpsertRetailPricingRequest>r) : new UpsertRetailPricingRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PricingService/UpsertRetail\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n deleteRetail(r: DeleteRetailPricingRequest | DeleteRetailPricingRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteRetailPricingRequest>r).toApiJson) ? (<DeleteRetailPricingRequest>r) : new DeleteRetailPricingRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PricingService/DeleteRetail\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getMultiBundleRetail(r: GetMultiBundleRetailPricingRequest | GetMultiBundleRetailPricingRequestInterface): Observable<GetMultiBundleRetailPricingResponse> {\n const request = ((<GetMultiBundleRetailPricingRequest>r).toApiJson) ? (<GetMultiBundleRetailPricingRequest>r) : new GetMultiBundleRetailPricingRequest(r);\n return this.http.post<GetMultiBundleRetailPricingResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PricingService/GetMultiBundleRetail\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiBundleRetailPricingResponse.fromProto(resp)),\n share()\n );\n }\n getWholesaleComparison(r: GetWholesaleComparisonRequest | GetWholesaleComparisonRequestInterface): Observable<GetWholesaleComparisonResponse> {\n const request = ((<GetWholesaleComparisonRequest>r).toApiJson) ? (<GetWholesaleComparisonRequest>r) : new GetWholesaleComparisonRequest(r);\n return this.http.post<GetWholesaleComparisonResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PricingService/GetWholesaleComparison\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetWholesaleComparisonResponse.fromProto(resp)),\n share()\n );\n }\n setWholesaleProductStrategy(r: SetWholesaleProductStrategyRequest | SetWholesaleProductStrategyRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SetWholesaleProductStrategyRequest>r).toApiJson) ? (<SetWholesaleProductStrategyRequest>r) : new SetWholesaleProductStrategyRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PricingService/SetWholesaleProductStrategy\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n setWholesaleProductVolumeCommitment(r: SetWholesaleProductVolumeCommitmentRequest | SetWholesaleProductVolumeCommitmentRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<SetWholesaleProductVolumeCommitmentRequest>r).toApiJson) ? (<SetWholesaleProductVolumeCommitmentRequest>r) : new SetWholesaleProductVolumeCommitmentRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PricingService/SetWholesaleProductVolumeCommitment\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getPurchaseCost(r: GetPurchaseCostRequest | GetPurchaseCostRequestInterface): Observable<GetPurchaseCostResponse> {\n const request = ((<GetPurchaseCostRequest>r).toApiJson) ? (<GetPurchaseCostRequest>r) : new GetPurchaseCostRequest(r);\n return this.http.post<GetPurchaseCostResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PricingService/GetPurchaseCost\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetPurchaseCostResponse.fromProto(resp)),\n share()\n );\n }\n upsertWholesale(r: UpsertWholesalePricingRequest | UpsertWholesalePricingRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpsertWholesalePricingRequest>r).toApiJson) ? (<UpsertWholesalePricingRequest>r) : new UpsertWholesalePricingRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PricingService/UpsertWholesale\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n CreateProductRequest,\n DeleteProductRequest,\n UpdateProductRequest,\n} from './objects/';\nimport {\n CreateProductRequestInterface,\n DeleteProductRequestInterface,\n UpdateProductRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class ProductApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n create(r: CreateProductRequest | CreateProductRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateProductRequest>r).toApiJson) ? (<CreateProductRequest>r) : new CreateProductRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.ProductService/Create\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n update(r: UpdateProductRequest | UpdateProductRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpdateProductRequest>r).toApiJson) ? (<UpdateProductRequest>r) : new UpdateProductRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.ProductService/Update\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n delete(r: DeleteProductRequest | DeleteProductRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteProductRequest>r).toApiJson) ? (<DeleteProductRequest>r) : new DeleteProductRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.ProductService/Delete\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n ListSubscriptionRetentionByGroupResponse,\n ListSubscriptionRetentionBySKUResponse,\n ListSubscriptionRetentionRequest,\n} from './objects/';\nimport {\n ListSubscriptionRetentionByGroupResponseInterface,\n ListSubscriptionRetentionBySKUResponseInterface,\n ListSubscriptionRetentionRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class ProductSummaryApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n listSubscriptionRetentionByGroup(r: ListSubscriptionRetentionRequest | ListSubscriptionRetentionRequestInterface): Observable<ListSubscriptionRetentionByGroupResponse> {\n const request = ((<ListSubscriptionRetentionRequest>r).toApiJson) ? (<ListSubscriptionRetentionRequest>r) : new ListSubscriptionRetentionRequest(r);\n return this.http.post<ListSubscriptionRetentionByGroupResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.ProductSummaryService/ListSubscriptionRetentionByGroup\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListSubscriptionRetentionByGroupResponse.fromProto(resp)),\n share()\n );\n }\n listSubscriptionRetentionBySku(r: ListSubscriptionRetentionRequest | ListSubscriptionRetentionRequestInterface): Observable<ListSubscriptionRetentionBySKUResponse> {\n const request = ((<ListSubscriptionRetentionRequest>r).toApiJson) ? (<ListSubscriptionRetentionRequest>r) : new ListSubscriptionRetentionRequest(r);\n return this.http.post<ListSubscriptionRetentionBySKUResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.ProductSummaryService/ListSubscriptionRetentionBySKU\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListSubscriptionRetentionBySKUResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n GetMultiCustomerSummariesRequest,\n GetMultiCustomerSummariesResponse,\n ListPurchaseItemsRequest,\n ListPurchaseItemsResponse,\n ListPurchaseRequest,\n ListPurchaseResponse,\n RetryPurchaseRequest,\n VoidPurchaseRequest,\n} from './objects/';\nimport {\n GetMultiCustomerSummariesRequestInterface,\n GetMultiCustomerSummariesResponseInterface,\n ListPurchaseItemsRequestInterface,\n ListPurchaseItemsResponseInterface,\n ListPurchaseRequestInterface,\n ListPurchaseResponseInterface,\n RetryPurchaseRequestInterface,\n VoidPurchaseRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class PurchaseApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n list(r: ListPurchaseRequest | ListPurchaseRequestInterface): Observable<ListPurchaseResponse> {\n const request = ((<ListPurchaseRequest>r).toApiJson) ? (<ListPurchaseRequest>r) : new ListPurchaseRequest(r);\n return this.http.post<ListPurchaseResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PurchaseService/List\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPurchaseResponse.fromProto(resp)),\n share()\n );\n }\n getMultiCustomerSummaries(r: GetMultiCustomerSummariesRequest | GetMultiCustomerSummariesRequestInterface): Observable<GetMultiCustomerSummariesResponse> {\n const request = ((<GetMultiCustomerSummariesRequest>r).toApiJson) ? (<GetMultiCustomerSummariesRequest>r) : new GetMultiCustomerSummariesRequest(r);\n return this.http.post<GetMultiCustomerSummariesResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PurchaseService/GetMultiCustomerSummaries\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiCustomerSummariesResponse.fromProto(resp)),\n share()\n );\n }\n listPurchaseItems(r: ListPurchaseItemsRequest | ListPurchaseItemsRequestInterface): Observable<ListPurchaseItemsResponse> {\n const request = ((<ListPurchaseItemsRequest>r).toApiJson) ? (<ListPurchaseItemsRequest>r) : new ListPurchaseItemsRequest(r);\n return this.http.post<ListPurchaseItemsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.PurchaseService/ListPurchaseItems\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListPurchaseItemsResponse.fromProto(resp)),\n share()\n );\n }\n retry(r: RetryPurchaseRequest | RetryPurchaseRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<RetryPurchaseRequest>r).toApiJson) ? (<RetryPurchaseRequest>r) : new RetryPurchaseRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PurchaseService/Retry\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n void(r: VoidPurchaseRequest | VoidPurchaseRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<VoidPurchaseRequest>r).toApiJson) ? (<VoidPurchaseRequest>r) : new VoidPurchaseRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.PurchaseService/Void\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n DeleteRecurringInvoiceRequest,\n GetRecurringInvoiceRequest,\n ListRecurringInvoicesRequest,\n ListRecurringInvoicesResponse,\n RecurringInvoice,\n UpdateRecurringInvoiceRequest,\n} from './objects/';\nimport {\n DeleteRecurringInvoiceRequestInterface,\n GetRecurringInvoiceRequestInterface,\n ListRecurringInvoicesRequestInterface,\n ListRecurringInvoicesResponseInterface,\n RecurringInvoiceInterface,\n UpdateRecurringInvoiceRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class RecurringInvoiceApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n createRecurringInvoice(r: RecurringInvoice | RecurringInvoiceInterface): Observable<RecurringInvoice> {\n const request = ((<RecurringInvoice>r).toApiJson) ? (<RecurringInvoice>r) : new RecurringInvoice(r);\n return this.http.post<RecurringInvoiceInterface>(this.hostService.hostWithScheme() + \"/billing.v1.RecurringInvoiceService/CreateRecurringInvoice\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => RecurringInvoice.fromProto(resp)),\n share()\n );\n }\n updateRecurringInvoice(r: UpdateRecurringInvoiceRequest | UpdateRecurringInvoiceRequestInterface): Observable<RecurringInvoice> {\n const request = ((<UpdateRecurringInvoiceRequest>r).toApiJson) ? (<UpdateRecurringInvoiceRequest>r) : new UpdateRecurringInvoiceRequest(r);\n return this.http.post<RecurringInvoiceInterface>(this.hostService.hostWithScheme() + \"/billing.v1.RecurringInvoiceService/UpdateRecurringInvoice\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => RecurringInvoice.fromProto(resp)),\n share()\n );\n }\n getRecurringInvoice(r: GetRecurringInvoiceRequest | GetRecurringInvoiceRequestInterface): Observable<RecurringInvoice> {\n const request = ((<GetRecurringInvoiceRequest>r).toApiJson) ? (<GetRecurringInvoiceRequest>r) : new GetRecurringInvoiceRequest(r);\n return this.http.post<RecurringInvoiceInterface>(this.hostService.hostWithScheme() + \"/billing.v1.RecurringInvoiceService/GetRecurringInvoice\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => RecurringInvoice.fromProto(resp)),\n share()\n );\n }\n listRecurringInvoices(r: ListRecurringInvoicesRequest | ListRecurringInvoicesRequestInterface): Observable<ListRecurringInvoicesResponse> {\n const request = ((<ListRecurringInvoicesRequest>r).toApiJson) ? (<ListRecurringInvoicesRequest>r) : new ListRecurringInvoicesRequest(r);\n return this.http.post<ListRecurringInvoicesResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.RecurringInvoiceService/ListRecurringInvoices\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListRecurringInvoicesResponse.fromProto(resp)),\n share()\n );\n }\n deleteRecurringInvoice(r: DeleteRecurringInvoiceRequest | DeleteRecurringInvoiceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<DeleteRecurringInvoiceRequest>r).toApiJson) ? (<DeleteRecurringInvoiceRequest>r) : new DeleteRecurringInvoiceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.RecurringInvoiceService/DeleteRecurringInvoice\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n CreateRefundRequest,\n ListRefundsRequest,\n ListRefundsResponse,\n} from './objects/';\nimport {\n CreateRefundRequestInterface,\n ListRefundsRequestInterface,\n ListRefundsResponseInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class RefundApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n create(r: CreateRefundRequest | CreateRefundRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateRefundRequest>r).toApiJson) ? (<CreateRefundRequest>r) : new CreateRefundRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.RefundService/Create\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n list(r: ListRefundsRequest | ListRefundsRequestInterface): Observable<ListRefundsResponse> {\n const request = ((<ListRefundsRequest>r).toApiJson) ? (<ListRefundsRequest>r) : new ListRefundsRequest(r);\n return this.http.post<ListRefundsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.RefundService/List\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListRefundsResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n GetRetailCustomerConfigurationRequest,\n GetRetailCustomerConfigurationResponse,\n UpsertRetailCustomerConfigurationRequest,\n} from './objects/';\nimport {\n GetRetailCustomerConfigurationRequestInterface,\n GetRetailCustomerConfigurationResponseInterface,\n UpsertRetailCustomerConfigurationRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class RetailCustomerConfigurationApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n get(r: GetRetailCustomerConfigurationRequest | GetRetailCustomerConfigurationRequestInterface): Observable<GetRetailCustomerConfigurationResponse> {\n const request = ((<GetRetailCustomerConfigurationRequest>r).toApiJson) ? (<GetRetailCustomerConfigurationRequest>r) : new GetRetailCustomerConfigurationRequest(r);\n return this.http.post<GetRetailCustomerConfigurationResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.RetailCustomerConfigurationService/Get\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetRetailCustomerConfigurationResponse.fromProto(resp)),\n share()\n );\n }\n upsert(r: UpsertRetailCustomerConfigurationRequest | UpsertRetailCustomerConfigurationRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpsertRetailCustomerConfigurationRequest>r).toApiJson) ? (<UpsertRetailCustomerConfigurationRequest>r) : new UpsertRetailCustomerConfigurationRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.RetailCustomerConfigurationService/Upsert\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n CreateSalesCreditNoteRequest,\n ListSalesCreditNoteRequest,\n ListSalesCreditNoteResponse,\n} from './objects/';\nimport {\n CreateSalesCreditNoteRequestInterface,\n ListSalesCreditNoteRequestInterface,\n ListSalesCreditNoteResponseInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class SalesCreditNoteApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n create(r: CreateSalesCreditNoteRequest | CreateSalesCreditNoteRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateSalesCreditNoteRequest>r).toApiJson) ? (<CreateSalesCreditNoteRequest>r) : new CreateSalesCreditNoteRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.SalesCreditNoteService/Create\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n list(r: ListSalesCreditNoteRequest | ListSalesCreditNoteRequestInterface): Observable<ListSalesCreditNoteResponse> {\n const request = ((<ListSalesCreditNoteRequest>r).toApiJson) ? (<ListSalesCreditNoteRequest>r) : new ListSalesCreditNoteRequest(r);\n return this.http.post<ListSalesCreditNoteResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.SalesCreditNoteService/List\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListSalesCreditNoteResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n GetSalesInvoiceRequest,\n GetSalesInvoiceResponse,\n ListSalesInvoiceRequest,\n ListSalesInvoiceResponse,\n PostSalesInvoiceRequest,\n} from './objects/';\nimport {\n GetSalesInvoiceRequestInterface,\n GetSalesInvoiceResponseInterface,\n ListSalesInvoiceRequestInterface,\n ListSalesInvoiceResponseInterface,\n PostSalesInvoiceRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class SalesInvoiceApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n list(r: ListSalesInvoiceRequest | ListSalesInvoiceRequestInterface): Observable<ListSalesInvoiceResponse> {\n const request = ((<ListSalesInvoiceRequest>r).toApiJson) ? (<ListSalesInvoiceRequest>r) : new ListSalesInvoiceRequest(r);\n return this.http.post<ListSalesInvoiceResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.SalesInvoiceService/List\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListSalesInvoiceResponse.fromProto(resp)),\n share()\n );\n }\n post(r: PostSalesInvoiceRequest | PostSalesInvoiceRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<PostSalesInvoiceRequest>r).toApiJson) ? (<PostSalesInvoiceRequest>r) : new PostSalesInvoiceRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.SalesInvoiceService/Post\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n get(r: GetSalesInvoiceRequest | GetSalesInvoiceRequestInterface): Observable<GetSalesInvoiceResponse> {\n const request = ((<GetSalesInvoiceRequest>r).toApiJson) ? (<GetSalesInvoiceRequest>r) : new GetSalesInvoiceRequest(r);\n return this.http.post<GetSalesInvoiceResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.SalesInvoiceService/Get\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetSalesInvoiceResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n ArchiveTaxRequest,\n CalculateTaxRequest,\n CalculateTaxResponse,\n CreateTaxRequest,\n GetMultiTaxRequest,\n GetMultiTaxResponse,\n ListTaxRequest,\n ListTaxResponse,\n UpdateTaxRequest,\n} from './objects/';\nimport {\n ArchiveTaxRequestInterface,\n CalculateTaxRequestInterface,\n CalculateTaxResponseInterface,\n CreateTaxRequestInterface,\n GetMultiTaxRequestInterface,\n GetMultiTaxResponseInterface,\n ListTaxRequestInterface,\n ListTaxResponseInterface,\n UpdateTaxRequestInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class TaxApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n calculate(r: CalculateTaxRequest | CalculateTaxRequestInterface): Observable<CalculateTaxResponse> {\n const request = ((<CalculateTaxRequest>r).toApiJson) ? (<CalculateTaxRequest>r) : new CalculateTaxRequest(r);\n return this.http.post<CalculateTaxResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.TaxService/Calculate\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => CalculateTaxResponse.fromProto(resp)),\n share()\n );\n }\n create(r: CreateTaxRequest | CreateTaxRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<CreateTaxRequest>r).toApiJson) ? (<CreateTaxRequest>r) : new CreateTaxRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.TaxService/Create\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n getMulti(r: GetMultiTaxRequest | GetMultiTaxRequestInterface): Observable<GetMultiTaxResponse> {\n const request = ((<GetMultiTaxRequest>r).toApiJson) ? (<GetMultiTaxRequest>r) : new GetMultiTaxRequest(r);\n return this.http.post<GetMultiTaxResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.TaxService/GetMulti\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetMultiTaxResponse.fromProto(resp)),\n share()\n );\n }\n update(r: UpdateTaxRequest | UpdateTaxRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<UpdateTaxRequest>r).toApiJson) ? (<UpdateTaxRequest>r) : new UpdateTaxRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.TaxService/Update\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n list(r: ListTaxRequest | ListTaxRequestInterface): Observable<ListTaxResponse> {\n const request = ((<ListTaxRequest>r).toApiJson) ? (<ListTaxRequest>r) : new ListTaxRequest(r);\n return this.http.post<ListTaxResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.TaxService/List\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => ListTaxResponse.fromProto(resp)),\n share()\n );\n }\n archive(r: ArchiveTaxRequest | ArchiveTaxRequestInterface): Observable<HttpResponse<null>> {\n const request = ((<ArchiveTaxRequest>r).toApiJson) ? (<ArchiveTaxRequest>r) : new ArchiveTaxRequest(r);\n return this.http.post<null>(this.hostService.hostWithScheme() + \"/billing.v1.TaxService/Archive\", request.toApiJson(), {...this.apiOptions(), observe: 'response'});\n }\n \n}\n","// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nimport {Injectable} from '@angular/core';\nimport {\n GenerateVendorReportRequest,\n GenerateVendorReportResponse,\n GetRevenueStatsRequest,\n GetRevenueStatsResponse,\n} from './objects/';\nimport {\n GenerateVendorReportRequestInterface,\n GenerateVendorReportResponseInterface,\n GetRevenueStatsRequestInterface,\n GetRevenueStatsResponseInterface,\n} from './interfaces/';\nimport {HttpHeaders, HttpClient, HttpResponse} from '@angular/common/http';\nimport {HostService} from '../_generated/host.service';\nimport {Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class VendorApiService {\n\n constructor(private http: HttpClient, private hostService: HostService) {\n }\n\n private apiOptions(): {headers: HttpHeaders, withCredentials: boolean} {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n\n generateReport(r: GenerateVendorReportRequest | GenerateVendorReportRequestInterface): Observable<GenerateVendorReportResponse> {\n const request = ((<GenerateVendorReportRequest>r).toApiJson) ? (<GenerateVendorReportRequest>r) : new GenerateVendorReportRequest(r);\n return this.http.post<GenerateVendorReportResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.VendorService/GenerateReport\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GenerateVendorReportResponse.fromProto(resp)),\n share()\n );\n }\n getRevenueStats(r: GetRevenueStatsRequest | GetRevenueStatsRequestInterface): Observable<GetRevenueStatsResponse> {\n const request = ((<GetRevenueStatsRequest>r).toApiJson) ? (<GetRevenueStatsRequest>r) : new GetRevenueStatsRequest(r);\n return this.http.post<GetRevenueStatsResponseInterface>(this.hostService.hostWithScheme() + \"/billing.v1.VendorService/GetRevenueStats\", request.toApiJson(), this.apiOptions())\n .pipe(\n map(resp => GetRevenueStatsResponse.fromProto(resp)),\n share()\n );\n }\n \n}\n","import { AppliedDiscountInterface, DiscountType } from '../_internal';\n\nexport enum AppliedDiscountType {\n FIXED_AMOUNT = 'FIXED_AMOUNT',\n PERCENT_AMOUNT = 'PERCENT_AMOUNT',\n FIXED_NUMBER_OF_UNITS = 'FIXED_NUMBER_OF_UNITS',\n FIXED_AMOUNT_PER_UNIT = 'FIXED_AMOUNT_PER_UNIT',\n};\n\nexport function appliedDiscountTypeFromAPI(adt: DiscountType): AppliedDiscountType {\n switch (adt) {\n case DiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT:\n return AppliedDiscountType.FIXED_AMOUNT_PER_UNIT;\n case DiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS:\n return AppliedDiscountType.FIXED_NUMBER_OF_UNITS;\n case DiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT:\n return AppliedDiscountType.PERCENT_AMOUNT;\n }\n return AppliedDiscountType.FIXED_AMOUNT;\n}\n\nexport function appliedDiscountTypeToApi(adt: AppliedDiscountType): DiscountType {\n switch (adt) {\n case AppliedDiscountType.FIXED_AMOUNT_PER_UNIT:\n return DiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT;\n case AppliedDiscountType.FIXED_NUMBER_OF_UNITS:\n return DiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS;\n case AppliedDiscountType.PERCENT_AMOUNT:\n return DiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT;\n }\n return DiscountType.DISCOUNT_TYPE_FIXED_AMOUNT;\n}\n\nexport interface AppliedDiscount {\n type: AppliedDiscountType;\n value: number;\n totalAmount: number;\n description: string;\n}\n\nexport function appliedDiscountFromApi(ad: AppliedDiscountInterface): AppliedDiscount {\n return {\n type: appliedDiscountTypeFromAPI(ad.type),\n value: ad.value || 0,\n totalAmount: ad.totalAmount || 0,\n description: ad.description || '',\n }\n}\n\nexport function appliedDiscountToApi(ad: AppliedDiscount): AppliedDiscountInterface {\n return {\n type: appliedDiscountTypeToApi(ad.type),\n value: ad.value || 0,\n totalAmount: ad.totalAmount || 0,\n description: ad.description || '',\n }\n}\n\n/** @deprecated use Discount interface from billing/discount */\nexport interface Discount {\n value: number;\n type: string;\n startDate: Date;\n id?: number;\n endDate?: Date;\n total?: number;\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n BankAccount as ApiBankAccount,\n DeleteBankAccountRequest,\n ListBankAccountsRequest,\n ListBankAccountsResponse,\n MerchantApiService,\n SetDefaultBankAccountRequest,\n} from '../_internal';\nimport { BankAccount, bankAccountFromApi } from './bank_account';\n\n@Injectable({providedIn: 'root'})\nexport class BankAccountService {\n constructor(private merchantApi: MerchantApiService) {\n }\n\n listBankAccounts(merchantId: string): Observable<BankAccount[]> {\n return this.merchantApi.listBankAccounts(new ListBankAccountsRequest({\n merchantId\n })).pipe(\n map((res: ListBankAccountsResponse) => res && res.bankAccount ? res.bankAccount : []),\n map((bankAccounts: ApiBankAccount[]) => {\n return bankAccounts.map((ba: ApiBankAccount) => bankAccountFromApi(ba));\n }\n )\n )\n }\n\n setDefaultBankAccount(merchantId: string, bankAccountId: string): Observable<HttpResponse<null>> {\n const request = new SetDefaultBankAccountRequest({\n merchantId, bankAccountId\n })\n return this.merchantApi.setDefaultBankAccount(request)\n }\n\n deleteBankAccount(merchantId: string, bankAccountId: string): Observable<HttpResponse<null>> {\n const request = new DeleteBankAccountRequest({\n merchantId, bankAccountId\n })\n return this.merchantApi.deleteBankAccount(request)\n }\n}\n","import {BankAccount as ApiBankAccount} from '../_internal';\n\nexport interface BankAccount {\n id: string;\n accountHolderName: string;\n bankName: string;\n country: string;\n currency: string;\n routingNumber: string;\n last4: string;\n defaultForCurrency: boolean;\n}\n\nexport function bankAccountFromApi(r: ApiBankAccount): BankAccount {\n return {\n id: r.id,\n accountHolderName: r.accountHolderName,\n bankName: r.bankName,\n country: r.country,\n currency: r.currency,\n routingNumber: r.routingNumber,\n last4: r.last4,\n defaultForCurrency: r.defaultForCurrency\n } as BankAccount;\n}\n","import {BillingStrategy as PricingPlanBillingStrategy} from '../_internal';\n\nexport enum BillingStrategy {\n Invalid = 'INVALID',\n EndOfPeriod = 'END_OF_PERIOD',\n StartOfPeriod = 'START_OF_PERIOD',\n Instantly = 'INSTANTLY',\n EndOfDay = 'END_OF_DAY'\n}\n\nexport function isBillingStrategyInstant(strategy: BillingStrategy): boolean {\n return (strategy === BillingStrategy.Instantly || strategy === BillingStrategy.EndOfDay)\n}\n\nexport function billingStrategyFromAPI(bsAPI: PricingPlanBillingStrategy): BillingStrategy {\n switch (bsAPI) {\n case PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_PERIOD:\n return BillingStrategy.EndOfPeriod;\n case PricingPlanBillingStrategy.BILLING_STRATEGY_START_OF_PERIOD:\n return BillingStrategy.StartOfPeriod;\n case PricingPlanBillingStrategy.BILLING_STRATEGY_INSTANTLY:\n return BillingStrategy.Instantly;\n case PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_DAY:\n return BillingStrategy.EndOfDay;\n }\n return BillingStrategy.Invalid;\n}\n\nexport function billingStrategyToAPI(strategy: BillingStrategy): PricingPlanBillingStrategy {\n switch (strategy) {\n case BillingStrategy.EndOfPeriod:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_PERIOD;\n case BillingStrategy.StartOfPeriod:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_START_OF_PERIOD;\n case BillingStrategy.Instantly:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_INSTANTLY;\n case BillingStrategy.EndOfDay:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_DAY;\n }\n return PricingPlanBillingStrategy.BILLING_STRATEGY_NONE;\n}\n","import { Currency as CurrencyApi } from '../_internal';\n\nexport enum Currency {\n USD = 'USD',\n CAD = 'CAD',\n EUR = 'EUR',\n AUD = 'AUD',\n GBP = 'GBP',\n NZD = 'NZD',\n BRL = 'BRL',\n CHF = 'CHF',\n CNY = 'CNY',\n CZK = 'CZK',\n INR = 'INR',\n JPY = 'JPY',\n KHR = 'KHR',\n KRW = 'KRW',\n MXN = 'MXN',\n NOK = 'NOK',\n RUB = 'RUB',\n SEK = 'SEK',\n SGD = 'SGD',\n TRY = 'TRY',\n ZAR = 'ZAR',\n DZD = 'DZD',\n AWG = 'AWG',\n FJD = 'FJD',\n KYD = 'KYD',\n}\n\nexport function currencyFromApi(cApi: CurrencyApi): Currency {\n switch (cApi) {\n case CurrencyApi.USD:\n return Currency.USD;\n case CurrencyApi.CAD:\n return Currency.CAD;\n case CurrencyApi.EUR:\n return Currency.EUR;\n case CurrencyApi.AUD:\n return Currency.AUD;\n case CurrencyApi.GBP:\n return Currency.GBP;\n case CurrencyApi.NZD:\n return Currency.NZD;\n case CurrencyApi.BRL:\n return Currency.BRL\n case CurrencyApi.CHF:\n return Currency.CHF\n case CurrencyApi.CNY:\n return Currency.CNY\n case CurrencyApi.CZK:\n return Currency.CZK\n case CurrencyApi.INR:\n return Currency.INR\n case CurrencyApi.JPY:\n return Currency.JPY\n case CurrencyApi.KHR:\n return Currency.KHR\n case CurrencyApi.KRW:\n return Currency.KRW\n case CurrencyApi.MXN:\n return Currency.MXN\n case CurrencyApi.NOK:\n return Currency.NOK\n case CurrencyApi.RUB:\n return Currency.RUB\n case CurrencyApi.SEK:\n return Currency.SEK\n case CurrencyApi.SGD:\n return Currency.SGD\n case CurrencyApi.TRY:\n return Currency.TRY\n case CurrencyApi.ZAR:\n return Currency.ZAR\n case CurrencyApi.DZD:\n return Currency.DZD\n case CurrencyApi.AWG:\n return Currency.AWG\n case CurrencyApi.FJD:\n return Currency.FJD\n case CurrencyApi.KYD:\n return Currency.KYD\n default:\n return Currency.USD;\n }\n}\n","import {Frequency as FrequencyApi} from '../_internal';\n\nexport enum Frequency {\n Invalid = 'INVALID',\n Monthly = 'MONTHLY',\n Yearly = 'YEARLY',\n OneTime = 'ONE_TIME'\n}\n\nexport function frequencyFromLegacyApi(fApi: string): Frequency {\n switch (fApi) {\n case 'monthly':\n return Frequency.Monthly;\n case 'yearly':\n return Frequency.Yearly;\n case 'one_time':\n return Frequency.OneTime;\n }\n return Frequency.Invalid;\n}\n\nexport function frequencyFromApi(fApi: FrequencyApi): Frequency {\n switch (fApi) {\n case FrequencyApi.MONTHLY:\n return Frequency.Monthly;\n case FrequencyApi.YEARLY:\n return Frequency.Yearly;\n case FrequencyApi.ONE_TIME:\n return Frequency.OneTime;\n }\n return Frequency.Invalid;\n}\n\nexport function frequencyToApi(frequency: Frequency): FrequencyApi {\n switch (frequency) {\n case Frequency.Monthly:\n return FrequencyApi.MONTHLY;\n case Frequency.Yearly:\n return FrequencyApi.YEARLY;\n case Frequency.OneTime:\n return FrequencyApi.ONE_TIME;\n }\n return FrequencyApi.INVALID;\n}\n","import { ProductPricingRuleInterface } from '../_internal';\n\nexport interface ProductPricingRules {\n price: number;\n minUnits: number;\n maxUnits: number;\n}\n\nexport function productPricingRulesFromApi(pprApi: ProductPricingRuleInterface[]): ProductPricingRules[] {\n return !pprApi ? null : pprApi.map(r => {\n return {\n price: r.price || 0,\n minUnits: r.minUnits,\n maxUnits: r.maxUnits,\n };\n });\n}\n","import { ProductPricingType as ProductPricingTypeApi } from '../_internal';\n\nexport enum ProductPricingType {\n Invalid = 'INVALID',\n Standard = 'STANDARD',\n Stairstep = 'STAIRSTEP',\n Tiered = 'TIERED'\n}\n\nexport function productPricingTypeFromApi(pptApi: ProductPricingTypeApi): ProductPricingType {\n switch (pptApi) {\n case ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STANDARD:\n return ProductPricingType.Standard;\n case ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STAIRSTEP:\n return ProductPricingType.Stairstep;\n case ProductPricingTypeApi.PRODUCT_PRICING_TYPE_TIERED:\n return ProductPricingType.Tiered;\n }\n return ProductPricingType.Invalid;\n}\n\nexport function productPricingTypeToApi(ppt: ProductPricingType): ProductPricingTypeApi {\n switch (ppt) {\n case ProductPricingType.Standard:\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STANDARD;\n case ProductPricingType.Stairstep:\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STAIRSTEP;\n case ProductPricingType.Tiered:\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_TIERED;\n }\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_INVALID;\n}\n","import { CommitmentInterface } from '../_internal';\n\nexport interface Commitment {\n initial: number;\n recurring: number;\n}\n\nexport function commitmentFromAPI(comAPI: CommitmentInterface): Commitment {\n return {\n initial: comAPI.initial,\n recurring: comAPI.recurring\n };\n}\n","import {GetPurchaseCostResponse, ProductPricesInterface, ProductPricingInterface} from '../_internal';\nimport { BillingStrategy, billingStrategyFromAPI } from './billing-strategy';\nimport { Commitment, commitmentFromAPI } from './commitment';\nimport { Currency, currencyFromApi } from './currency';\nimport { Frequency, frequencyFromApi, frequencyFromLegacyApi } from './frequency';\nimport { ProductPricingRules, productPricingRulesFromApi } from './product-pricing-rules';\nimport { ProductPricingType, productPricingTypeFromApi } from './product-pricing-type';\n\nexport interface PurchaseCost {\n billingFrequency: Frequency;\n total: number;\n subtotal: number;\n currency: Currency;\n strategy: BillingStrategy;\n commitment: Commitment;\n isStartingPrice: boolean;\n discountTotal: number;\n setupFee: number;\n}\n\nexport interface ProductPricing {\n strategy: BillingStrategy;\n pricingType: ProductPricingType;\n currency: Currency;\n frequency: Frequency;\n pricingRules: ProductPricingRules[];\n commitment: Commitment;\n volumeCommitment: number;\n isStartingPrice: boolean;\n resolvedFrom?: string;\n setupFee: number;\n}\n\nexport interface ProductPrices {\n sku: string\n prices: ProductPricing[]\n}\n\nexport function purchaseCostFromAPI(pcApi: GetPurchaseCostResponse): PurchaseCost {\n const subtotal = pcApi.subtotalCost || 0\n const discountTotal = pcApi.discountAmount || 0\n const total = pcApi.totalCost || 0;\n const setupFee = pcApi.setupFee || 0;\n\n return {\n subtotal: subtotal,\n discountTotal: discountTotal,\n total: total,\n billingFrequency: frequencyFromLegacyApi(pcApi.billingFrequency),\n currency: currencyFromApi(pcApi.currency),\n strategy: billingStrategyFromAPI(pcApi.strategy),\n commitment: commitmentFromAPI(pcApi.commitment),\n isStartingPrice: pcApi.isStartingPrice,\n setupFee: setupFee\n }\n}\n\nexport function productPricingFromApi(pApi: ProductPricingInterface): ProductPricing {\n return {\n strategy: billingStrategyFromAPI(pApi.strategy),\n pricingType: productPricingTypeFromApi(pApi.pricingType),\n currency: currencyFromApi(pApi.currency),\n frequency: frequencyFromApi(pApi.frequency),\n pricingRules: productPricingRulesFromApi(pApi.pricingRules),\n commitment: commitmentFromAPI(pApi.commitment),\n volumeCommitment: pApi.volumeCommitment,\n isStartingPrice: pApi.isStartingPrice,\n resolvedFrom: pApi.resolvedFrom,\n setupFee: pApi.setupFee\n }\n}\n\nexport function pricesFromApi(pApi: ProductPricesInterface[]): ProductPrices[] {\n return pApi?.map(p => (p && {\n sku: p.sku,\n prices: p.prices.map(price => price && productPricingFromApi(price)),\n } as ProductPrices)\n );\n}\n","import {\n PricingPlanProduct as ApiPricingPlanProduct,\n PricingPlanProductPricing as ApiPricing,\n ProductPricingRule as ApiRule,\n} from '../_internal';\nimport { BillingStrategy, billingStrategyFromAPI } from './billing-strategy';\nimport { Commitment, commitmentFromAPI } from './commitment';\nimport { Currency } from './currency';\nimport { Frequency, frequencyFromApi, frequencyToApi } from './frequency';\nimport {\n ProductPricingRules,\n productPricingRulesFromApi,\n} from './product-pricing-rules';\nimport {\n ProductPricingType,\n productPricingTypeFromApi,\n productPricingTypeToApi,\n} from './product-pricing-type';\n\nexport interface CurrencyPricingMap {\n [key: string]: PricingPlanProductPricing;\n}\n\nexport interface PricingPlanProductPricing {\n type: ProductPricingType;\n rules: ProductPricingRules[];\n setupFee: number;\n frequency?: Frequency;\n currencyCode?: string;\n}\n\nexport interface PricingPlanProduct {\n pricingPlanId: string;\n sku: string;\n frequency?: Frequency;\n pricing: CurrencyPricingMap;\n commitment: Commitment;\n created: Date;\n modified: Date;\n strategy: BillingStrategy;\n volumeCommitment: number;\n defaultStrategy?: BillingStrategy;\n}\n\nexport function pricingPlanProductFromApi(apiProduct: ApiPricingPlanProduct): PricingPlanProduct {\n const pricingMap: CurrencyPricingMap = {};\n for (const apiCurrency in apiProduct.pricing) {\n if (!apiProduct.pricing.hasOwnProperty(apiCurrency)) {\n continue;\n }\n\n const pricingApi = apiProduct.pricing[apiCurrency];\n pricingMap[apiCurrency] = {\n type: productPricingTypeFromApi(pricingApi.type),\n rules: productPricingRulesFromApi(pricingApi.rules),\n setupFee: pricingApi.setupFee || 0\n }\n }\n\n return {\n pricingPlanId: apiProduct.pricingPlanId,\n sku: apiProduct.sku,\n frequency: frequencyFromApi(apiProduct.frequency),\n pricing: pricingMap,\n commitment: commitmentFromAPI(apiProduct.commitment),\n created: apiProduct.created,\n modified: apiProduct.modified,\n strategy: billingStrategyFromAPI(apiProduct.strategy),\n volumeCommitment: apiProduct.volumeCommitment\n };\n}\n\nexport function currencyPricingMapToApi(currencyPricingMap: CurrencyPricingMap): { [key: string]: ApiPricing } {\n return Object.keys(currencyPricingMap).\n filter(c => c in Currency).\n reduce((apiPricingMap: { [key: string]: ApiPricing }, c: string) => {\n apiPricingMap[c] = pricingPlanProductPricingToApi(currencyPricingMap[c]);\n return apiPricingMap;\n }, {})\n}\n\nexport function productPricingRulesToApi(rules: ProductPricingRules[]): ApiRule[] {\n return rules.map(rule => new ApiRule(rule));\n\n}\n\nexport function pricingPlanProductPricingToApi(pricing: PricingPlanProductPricing): ApiPricing {\n return new ApiPricing({\n type: productPricingTypeToApi(pricing.type),\n rules: productPricingRulesToApi(pricing.rules),\n setupFee: pricing.setupFee,\n frequency: frequencyToApi(pricing.frequency),\n currencyCode: pricing.currencyCode\n })\n}\n","import {PricingPlanInterface as PricingPlanProto} from '../_internal';\nimport {BillingStrategy, billingStrategyFromAPI} from './billing-strategy';\n\nexport interface PricingPlan {\n id: string;\n name: string;\n subscriptionName?: string;\n defaultStrategy: BillingStrategy\n}\n\nexport enum Distribution {\n Retail = 'Retail',\n Wholesale = 'Wholesale',\n}\n\n\nexport function pricingPlanFromAPI(proto: PricingPlanProto): PricingPlan {\n return {\n id: proto.id,\n name: proto.name,\n defaultStrategy: billingStrategyFromAPI(proto.defaultBillingStrategy)\n }\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mapTo, share } from 'rxjs/operators';\nimport { HostService } from '../_generated';\nimport {\n BillingApiService,\n Commitment,\n PricingApiService,\n UpsertWholesalePricingRequest\n} from '../_internal';\nimport { BillingStrategy, billingStrategyToAPI } from './billing-strategy';\nimport { PricingPlanProductPricing, pricingPlanProductPricingToApi } from './pricing-plan-product';\nimport { pricesFromApi, ProductPrices, PurchaseCost, purchaseCostFromAPI } from './product-pricing';\n\n\n@Injectable({providedIn: 'root'})\nexport class WholesalePricingService {\n\n constructor(\n private hostService: HostService,\n private http: HttpClient,\n private pricingService: PricingApiService,\n private billingApi: BillingApiService,\n ) {\n }\n\n setProductBillingStrategy(merchantId: string, sku: string, billingStrategy: BillingStrategy): Observable<null> {\n const strategy = billingStrategyToAPI(billingStrategy)\n return this.pricingService.setWholesaleProductStrategy({merchantId, sku, strategy}).pipe(map(() => null));\n }\n\n setProductVolumeCommitment(merchantId: string, sku: string, volumeCommitment: number): Observable<null> {\n return this.pricingService.setWholesaleProductVolumeCommitment({\n merchantId,\n sku,\n volumeCommitment\n }).pipe(map(() => null));\n }\n\n getPurchaseCost(merchantId: string, sku: string, quantity: number): Observable<PurchaseCost> {\n return this.pricingService.getPurchaseCost({merchantId, sku, quantity}).pipe(\n map(resp => purchaseCostFromAPI(resp))\n )\n }\n\n getMultiWholesalePrices(\n merchantId: string,\n skus: string[],\n pricingPlanId?: string,\n ): Observable<ProductPrices[]> {\n return this.billingApi.getMultiProductPricing({ merchantId, skus, pricingPlanId })\n .pipe(\n map(r => pricesFromApi(r.prices)\n ),\n );\n }\n\n upsertPricing(\n pricingPlanId: string,\n sku: string,\n pricing: PricingPlanProductPricing[],\n termCommitment: Commitment,\n strategy: BillingStrategy,\n volumeCommitment: number\n ): Observable<HttpResponse<null>> {\n const request = new UpsertWholesalePricingRequest({\n pricingPlanId,\n sku,\n pricing: (pricing || []).map(p => pricingPlanProductPricingToApi(p)),\n strategy: billingStrategyToAPI(strategy),\n termCommitment,\n volumeCommitment\n });\n return this.pricingService.upsertWholesale(request);\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {Environment, EnvironmentService} from '@vendasta/core';\nimport {Distribution, PricingPlan, pricingPlanFromAPI} from './pricing-plan';\nimport {BillingApiService, UpdatePricingPlanResponse} from '../_internal';\nimport {BillingStrategy, billingStrategyToAPI} from './billing-strategy';\n\n@Injectable({providedIn: 'root'})\nexport class PricingPlanService {\n\n constructor(\n private environmentService: EnvironmentService,\n private billingService: BillingApiService\n ) {\n }\n\n list(distribution?: Distribution): PricingPlan[] {\n const env = this.environmentService.getEnvironment();\n switch (distribution) {\n case Distribution.Retail:\n return retailPlans.get(env)\n case Distribution.Wholesale:\n return wholesalePlans.get(env)\n }\n return pricingPlans.get(env) || [];\n }\n\n isDefault(pricingPlanId: string): boolean {\n const defaultPlan = this.list().find(p => p.name === WholesalePricingPlanName.Default);\n return pricingPlanId === defaultPlan.id;\n }\n\n nameForId(pricingPlanId: string): string {\n const name = this.list().find(p => p.id === pricingPlanId).name;\n return name || null;\n }\n\n idForName(pricingPlanName: string): string {\n const pricingPlan = this.list().find(p => p.name === pricingPlanName);\n return pricingPlan ? pricingPlan.id : null;\n }\n\n idForSubscriptionName(subscriptionName: string): string {\n const pricingPlan = this.list().find(p => p.subscriptionName === subscriptionName);\n return pricingPlan ? pricingPlan.id : null;\n }\n\n setDefaultStrategy(pricingPlanId: string, strategy: BillingStrategy): Observable<UpdatePricingPlanResponse> {\n const request = {\n id: pricingPlanId,\n fieldMask: {\n paths: ['default_billing_strategy']\n },\n defaultBillingStrategy: billingStrategyToAPI(strategy),\n }\n return this.billingService.updatePricingPlan(request)\n }\n\n getMulti(pricingPlanIds: string[]): Observable<PricingPlan[]> {\n return this.billingService.getMultiPricingPlan({pricingPlanIds}).pipe(\n map(resp => resp.plans.map(p => pricingPlanFromAPI(p)))\n )\n }\n}\n\n\nenum RetailPricingPlanName {\n MSRP = 'MSRP'\n}\n\nconst demoRetailPricingPlans: PricingPlan[] = [\n {\n id: 'PP-5049b4b2-fe28-473f-96d6-84d4ea91ada9', name: RetailPricingPlanName.MSRP, subscriptionName: 'msrp',\n defaultStrategy: BillingStrategy.Invalid\n }\n];\n\n\nconst prodRetailPricingPlans: PricingPlan[] = [\n {\n id: 'PP-148b6d8c-6222-4fce-9cd2-f0587f0db563', name: RetailPricingPlanName.MSRP, subscriptionName: 'msrp',\n defaultStrategy: BillingStrategy.Invalid\n }\n];\n\nenum WholesalePricingPlanName {\n // Instant\n VBPFree = 'Free',\n VBPStarter = 'Starter',\n VBPBasic = 'Basic+',\n VBPProfessional = 'Professional+',\n VBPEnterprise = 'Enterprise+',\n VBPEnterprisePilot = 'Enterprise+ Pilot',\n VBP2Startup = 'Startup+',\n VBP2Essentials = 'Essentials+',\n VBP2Growth = 'Growth+',\n VBP2Scale = 'Scale+',\n\n // Invoiced\n BasicSubscription = 'Basic',\n ProfessionalSubscription = 'Professional',\n EnterpriseSubscription = 'Enterprise',\n EliteSubscription = 'Elite',\n PremiumSubscription = 'Premium (Legacy)',\n VBP2Premium = 'Premium',\n\n Default = 'Default'\n}\n\nconst demoWholesalePricingPlans: PricingPlan[] = [\n {\n id: 'PP-587f8f25-b278-4727-b7c4-3ce60e542c8b',\n name: WholesalePricingPlanName.VBPFree, subscriptionName: 'free_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-a5ad2825-8225-4bbe-a868-c1b2a7d2a2e3',\n name: WholesalePricingPlanName.VBPStarter, subscriptionName: 'starter_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-438ccc87-eaff-4180-ad79-f5d3d51e1bc0',\n name: WholesalePricingPlanName.VBPBasic, subscriptionName: 'vbp_basic_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-7201f892-3d44-44b8-b9db-4b23dd34d112',\n name: WholesalePricingPlanName.VBPProfessional, subscriptionName: 'vbp_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-3cc1ec9f-17a8-46c8-9e79-b337e4ea651b',\n name: WholesalePricingPlanName.VBPEnterprise, subscriptionName: 'vbp_enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-7ffa4745-4ea1-4603-983b-81a1404faa3b',\n name: WholesalePricingPlanName.VBPEnterprisePilot, subscriptionName: 'vbp_enterprise_pilot_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-02895bb5-ff6b-4f37-ae1e-8473b895a59d',\n name: WholesalePricingPlanName.VBP2Startup, subscriptionName: 'vbp2_startup_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-c69f1724-d380-432f-8f50-5778da6ea250',\n name: WholesalePricingPlanName.VBP2Essentials, subscriptionName: 'vbp2_essentials_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-8abe2c53-be4a-43d5-bd2c-a8d9be1c82db',\n name: WholesalePricingPlanName.VBP2Growth, subscriptionName: 'vbp2_growth_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-0a872f89-e582-420a-90b0-c98e19b174a4',\n name: WholesalePricingPlanName.VBP2Scale, subscriptionName: 'vbp2_scale_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-7abd1cb2-317b-40d2-9fdc-d2b365d645b7',\n name: WholesalePricingPlanName.VBP2Premium, subscriptionName: 'vbp2_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-a7eca7c3-84fd-4fc2-86a5-87a743f6c3d1',\n name: WholesalePricingPlanName.BasicSubscription, subscriptionName: 'basic_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-7d0053b8-fab4-407d-ae69-33c67d5314eb',\n name: WholesalePricingPlanName.ProfessionalSubscription, subscriptionName: 'professional_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-e85cdb56-2944-4fe0-9e78-a98520eb1489',\n name: WholesalePricingPlanName.EnterpriseSubscription, subscriptionName: 'enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-9a0d6430-5e73-41d2-bd3d-dc3645664bb9',\n name: WholesalePricingPlanName.EliteSubscription, subscriptionName: 'elite_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-a03a1c1e-d03e-4c77-8132-34908012a65c',\n name: WholesalePricingPlanName.PremiumSubscription, subscriptionName: 'premium_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-cf943a15-3eea-40cf-8d3e-e7ea5a5a9817',\n name: WholesalePricingPlanName.Default, subscriptionName: null,\n defaultStrategy: BillingStrategy.Invalid\n },\n];\n\nconst prodWholesalePricingPlans: PricingPlan[] = [\n {\n id: 'PP-77912c15-00af-4a56-bfc0-e8e6c27c7a53',\n name: WholesalePricingPlanName.VBPFree, subscriptionName: 'free_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-1cc75309-ddff-4d8b-aedf-88a7472e2b4e',\n name: WholesalePricingPlanName.VBPStarter, subscriptionName: 'starter_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-52f98211-bd1e-4112-88cd-e78040173198',\n name: WholesalePricingPlanName.VBPBasic, subscriptionName: 'vbp_basic_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-c278bcc6-bd5d-43e5-9ff5-a27e70b48ba9',\n name: WholesalePricingPlanName.VBPProfessional, subscriptionName: 'vbp_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-4133fc94-a58a-4fcd-91cd-9ed111182e77',\n name: WholesalePricingPlanName.VBPEnterprise, subscriptionName: 'vbp_enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-dbbac61e-132f-468f-aa62-7a691b59bb74',\n name: WholesalePricingPlanName.VBPEnterprisePilot, subscriptionName: 'vbp_enterprise_pilot_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-45f8099f-d3f3-4302-83bf-bbf64f431e31',\n name: WholesalePricingPlanName.VBP2Startup, subscriptionName: 'vbp2_startup_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-d44c5a8b-f3b6-4b63-b203-8b7253060984',\n name: WholesalePricingPlanName.VBP2Essentials, subscriptionName: 'vbp2_essentials_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-c1761320-62df-41d7-8df3-008554a4b592',\n name: WholesalePricingPlanName.VBP2Growth, subscriptionName: 'vbp2_growth_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-b6607aae-606f-4fd5-84e4-c48f38b59892',\n name: WholesalePricingPlanName.VBP2Scale, subscriptionName: 'vbp2_scale_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-7375d567-8890-4cb1-930c-5673ea89acba',\n name: WholesalePricingPlanName.VBP2Premium, subscriptionName: 'vbp2_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-38a06671-526b-4d28-b425-bbce3be34699',\n name: WholesalePricingPlanName.BasicSubscription, subscriptionName: 'basic_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-d9717300-f1c3-4471-8433-c3ac7baf003d',\n name: WholesalePricingPlanName.ProfessionalSubscription, subscriptionName: 'professional_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-f6a60130-878b-4a33-9a10-d5bdeac0cdef',\n name: WholesalePricingPlanName.EnterpriseSubscription, subscriptionName: 'enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-dff68124-2223-4c88-91dc-b638a3135fc5',\n name: WholesalePricingPlanName.EliteSubscription, subscriptionName: 'elite_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-15641015-560e-4cd7-977b-b1fc627b18d1',\n name: WholesalePricingPlanName.PremiumSubscription, subscriptionName: 'premium_subscription',\n defaultStrategy: BillingStrategy.Invalid\n },\n {\n id: 'PP-0e9ac148-a2d0-42d0-9250-8c42189bf432',\n name: WholesalePricingPlanName.Default, subscriptionName: null,\n defaultStrategy: BillingStrategy.Invalid\n },\n];\n\nconst pricingPlans = new Map<Environment, PricingPlan[]>([\n [Environment.DEMO, [...demoWholesalePricingPlans, ...demoRetailPricingPlans]],\n [Environment.PROD, [...prodWholesalePricingPlans, ...prodRetailPricingPlans]]\n]);\n\nconst wholesalePlans = new Map<Environment, PricingPlan[]>([\n [Environment.DEMO, [...demoWholesalePricingPlans]],\n [Environment.PROD, [...prodWholesalePricingPlans]]\n])\n\nconst retailPlans = new Map<Environment, PricingPlan[]>([\n [Environment.DEMO, [...demoRetailPricingPlans]],\n [Environment.PROD, [...prodRetailPricingPlans]]\n])\n","import { Currency, currencyFromApi } from '../pricing';\nimport { Payout as ApiPayout, PayoutStatus as ApiPayoutStatus, PayoutType as ApiPayoutType } from '../_internal';\n\nexport enum PayoutStatusType {\n NOT_SET = 0,\n PAID = 1,\n PENDING = 2,\n IN_TRANSIT = 3,\n CANCELED = 4,\n FAILED = 5,\n}\n\nexport interface PayoutStatusLabel {\n id: PayoutStatusType,\n value: string\n}\n\nconst payoutStatusLabelMap = new Map<ApiPayoutStatus, PayoutStatusLabel>([\n [ApiPayoutStatus.PAYOUT_STATUS_NOT_SET, {id: PayoutStatusType.NOT_SET, value: 'Unknown'}],\n [ApiPayoutStatus.PAYOUT_STATUS_PAID, {id: PayoutStatusType.PAID, value: 'Paid'}],\n [ApiPayoutStatus.PAYOUT_STATUS_PENDING, {id: PayoutStatusType.PENDING, value: 'Pending'}],\n [ApiPayoutStatus.PAYOUT_STATUS_IN_TRANSIT, {id: PayoutStatusType.IN_TRANSIT, value: 'In Transit'}],\n [ApiPayoutStatus.PAYOUT_STATUS_CANCELED, {id: PayoutStatusType.CANCELED, value: 'Canceled'}],\n [ApiPayoutStatus.PAYOUT_STATUS_FAILED, {id: PayoutStatusType.FAILED, value: 'Failed'}],\n]);\n\nexport function convertApiPayoutStatus(t: ApiPayoutStatus): PayoutStatusLabel {\n return payoutStatusLabelMap.get(t)\n}\n\nexport enum PayoutTypeType {\n NOT_SET = 0,\n BANK_ACCOUNT = 1,\n CARD = 2,\n}\n\nexport interface PayoutTypeLabel {\n id: PayoutTypeType,\n value: string,\n}\n\nconst payoutTypeLabelMap = new Map<ApiPayoutType, PayoutTypeLabel>([\n [ApiPayoutType.PAYOUT_TYPE_NOT_SET, {id: PayoutTypeType.NOT_SET, value: 'Unknown'}],\n [ApiPayoutType.PAYOUT_TYPE_BANK_ACCOUNT, {id: PayoutTypeType.BANK_ACCOUNT, value: 'Bank Account'}],\n [ApiPayoutType.PAYOUT_TYPE_CARD, {id: PayoutTypeType.CARD, value: 'Card'}],\n]);\n\nexport function convertApiPayoutType(t: ApiPayoutType): PayoutTypeLabel {\n return payoutTypeLabelMap.get(t)\n}\n\nexport interface Payout {\n id: string;\n arrivalDate: Date;\n amount: number;\n status: PayoutStatusLabel;\n type: PayoutTypeLabel;\n currency: Currency;\n lastFourDigits: string;\n bankName: string;\n bankId: string\n}\n\nexport function payoutFromApi(r: ApiPayout): Payout {\n return {\n id: r.id,\n arrivalDate: r.arrivalDate ? new Date(r.arrivalDate) : null,\n amount: r.amount,\n type: convertApiPayoutType(r.type),\n status: convertApiPayoutStatus(r.status),\n currency: currencyFromApi(r.currency),\n lastFourDigits: r.lastFourDigits,\n bankName: r.bankName,\n bankId: r.bankId,\n } as Payout;\n}\n\n","export enum SortDirection {\n Ascending = 0,\n Descending\n}\n","export class PagedResponse<T> {\n results: T[];\n nextCursor: string;\n hasMore: boolean;\n\n constructor(results: T[], nextCursor: string, hasMore: boolean) {\n this.results = results;\n this.nextCursor = nextCursor;\n this.hasMore = hasMore;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n BankReconciliationApiService,\n DateRange,\n ListPayoutsRequest,\n ListPayoutsRequestFilters,\n ListPayoutsResponse,\n PagedRequestOptions,\n ReconcilePayoutRequest,\n ReconcilePayoutResponse,\n} from '../_internal';\nimport { Payout, payoutFromApi } from './payout';\n\n@Injectable({providedIn: 'root'})\nexport class BankReconciliationService {\n constructor( private apiService: BankReconciliationApiService ) { }\n\n reconcilePayout(bankReconciliationId: string, payoutId: string): Observable<string> {\n return this.apiService.reconcilePayout(new ReconcilePayoutRequest({\n payoutId: payoutId,\n bankReconciliationId: bankReconciliationId,\n })).pipe(\n map((resp: ReconcilePayoutResponse) => resp ? resp.pipelineId : '')\n )\n }\n\n listPayouts(arrivalDateStart: Date, arrivalDateEnd: Date, pageSize: number, cursor: string): Observable<PagedResponse<Payout>> {\n return this.apiService\n .listPayouts(new ListPayoutsRequest({\n filters: new ListPayoutsRequestFilters({\n arrivalDateRange: new DateRange ({\n start: arrivalDateStart,\n end: arrivalDateEnd,\n })\n }),\n pagingOptions: new PagedRequestOptions({\n cursor: cursor,\n pageSize: pageSize,\n })\n }))\n .pipe(\n map((resp: ListPayoutsResponse) => {\n if (!resp) {\n return new PagedResponse([], '', false);\n }\n const payouts = (resp.payouts || []).map((pbPayout) => payoutFromApi(pbPayout));\n\n let nextCursor = '';\n let hasMore = false;\n if (resp.pagingMetadata) {\n nextCursor = resp.pagingMetadata.nextCursor;\n hasMore = resp.pagingMetadata.hasMore;\n }\n return new PagedResponse(payouts, nextCursor, hasMore);\n }),\n )\n }\n}\n","import {BillableItemInterface, BillableItemCustomerAddressInterface} from '../_internal/interfaces';\nimport {Frequency, frequencyFromApi} from '../pricing';\n\nexport interface ListBillableItemsFilter {\n skus?: string[];\n merchantId?: string;\n customerId?: string;\n}\n\nexport interface ListSubscriptionsFilterHttp {\n skus?: string[];\n merchantId?: string;\n customerId?: string;\n}\n\nexport interface CustomerAddress {\n address?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n}\n\nexport interface BillableItem {\n merchantId: string;\n sku: string;\n productName: string;\n customerId: string;\n customerName: string;\n orderId: string;\n expiry: Date;\n billingStart: Date;\n created: Date;\n updated: Date;\n frequency: Frequency;\n retailFrequency: Frequency;\n nextRenewal: Date;\n nextRetailRenewal: Date;\n customerAddress: CustomerAddress;\n customUnitPrice: number;\n retailUnitPrice: number;\n}\n\nfunction customerAddressFromApi(apiAddress: BillableItemCustomerAddressInterface): CustomerAddress {\n return {\n address: apiAddress ? (apiAddress.address || '') : '',\n city: apiAddress ? (apiAddress.city || '') : '',\n state: apiAddress ? (apiAddress.state || '') : '',\n zip: apiAddress ? (apiAddress.zip || '') : '',\n country: apiAddress ? (apiAddress.country || '') : '',\n };\n}\n\nexport function billableItemFromApi(apiItem: BillableItemInterface): BillableItem {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n\n return {\n merchantId: apiItem.merchantId || '',\n sku: apiItem.sku || '',\n productName: apiItem.productName || '',\n customerId: apiItem.customerId || '',\n customerName: apiItem.customerName || '',\n orderId: apiItem.orderId || '',\n expiry: apiItem.expiry.valueOf() !== zeroDate ? new Date(apiItem.expiry) : null,\n billingStart: apiItem.billingStart.valueOf() !== zeroDate ? new Date(apiItem.billingStart) : null,\n created: apiItem.created.valueOf() !== zeroDate ? new Date(apiItem.created) : null,\n updated: apiItem.updated.valueOf() !== zeroDate ? new Date(apiItem.updated) : null,\n frequency: frequencyFromApi(apiItem.frequency),\n retailFrequency: frequencyFromApi(apiItem.retailFrequency),\n nextRenewal: apiItem.nextRenewal.valueOf() !== zeroDate ? new Date(apiItem.nextRenewal) : null,\n nextRetailRenewal: apiItem.nextRetailRenewal.valueOf() !== zeroDate ? new Date(apiItem.nextRetailRenewal) : null,\n customerAddress: customerAddressFromApi(apiItem.customerAddress),\n customUnitPrice: apiItem.customUnitPrice || 0,\n retailUnitPrice: apiItem.retailUnitPrice || 0\n };\n}\n\n\nexport function listSubscriptionsFiltersToHTTPJson(filters: ListBillableItemsFilter): ListSubscriptionsFilterHttp {\n return {\n merchantId: filters.merchantId,\n customerId: filters.customerId,\n skus: filters.skus,\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\nimport { HostService } from '../_generated';\nimport { ListBillableItemsFilter, listSubscriptionsFiltersToHTTPJson } from './billable-item';\n\n@Injectable({providedIn: 'root'})\nexport class SubscriptionService {\n\n constructor(\n private hostService: HostService,\n private http: HttpClient\n ) {\n }\n\n exportCSV(filters: ListBillableItemsFilter): Observable<Blob> {\n const jsonFilters = listSubscriptionsFiltersToHTTPJson(filters)\n return this.http.post(\n `${this.hostService.httpsHostWithScheme()}/subscription/export-csv`, {filters: jsonFilters},\n {\n observe: 'body',\n responseType: 'blob',\n withCredentials: true,\n }\n ).pipe(\n share(),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EnvironmentService, Environment } from '@vendasta/core';\n\n@Injectable({providedIn: 'root'})\nexport class BillingHostService {\n\n private billingHosts: Map<Environment, string> = new Map([\n [Environment.LOCAL, 'http://localhost:8088'],\n [Environment.DEMO, 'https://vbilling-demo.appspot.com'],\n [Environment.PROD, 'https://vbilling-prod.appspot.com']\n ]);\n private microserviceHosts: Map<Environment, string> = new Map([\n [Environment.DEMO, 'https://billing-api-demo.vendasta-internal.com'],\n [Environment.PROD, 'https://billing-api-prod.vendasta-internal.com']\n ]);\n\n private env: Environment;\n\n constructor(private environment: EnvironmentService) {\n }\n\n get billingHost(): string {\n if (!this.env) {\n this.env = this.environment.getEnvironment();\n }\n\n return this.billingHosts.get(this.env);\n }\n\n get microserviceHost(): string {\n if (!this.env) {\n this.env = this.environment.getEnvironment();\n }\n\n return this.microserviceHosts.get(this.env);\n }\n\n get constructInvoiceRoute(): string {\n return `${this.billingHost}/internalApi/v1/invoice/construct/`;\n }\n}\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nexport function handleCsvError(error: HttpErrorResponse): Observable<never> {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(\n `Server returned ${error.message}`\n );\n }\n\n return observableThrowError(`Unable to download csv`);\n}\n\nexport function handleFileUploadError(error: HttpErrorResponse): Observable<never> {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(\n `Server returned ${error.message}`\n );\n }\n\n return observableThrowError(`Unable to upload file`);\n}\n","/* Api service for billing's http endpoints */\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { share, catchError } from 'rxjs/operators';\nimport { HostService } from '../_generated';\nimport { DownloadCsvRequestInterface } from './revenue.interfaces';\nimport { handleCsvError } from '../http-shared/error-handlers';\n\n@Injectable({providedIn: 'root'})\nexport class RevenueApiService {\n constructor(private hostService: HostService, private http: HttpClient ) { }\n\n downloadCsv(r: DownloadCsvRequestInterface): Observable<Blob> {\n const queryParams = `?filename=${r.filename}`;\n return this.http.get(\n this.hostService.httpsHostWithScheme() + '/revenue-csv' + queryParams,\n this.apiOptions()\n ).pipe(\n share(),\n catchError(handleCsvError)\n );\n }\n\n private apiOptions(): { responseType: 'blob', withCredentials: boolean } {\n return {\n responseType: 'blob',\n withCredentials: true\n }\n }\n}\n","import { AppliedDiscount, appliedDiscountFromApi } from '../applied_discount';\nimport { AppliedTaxRate } from '../invoice/invoice';\nimport {\n BillingStrategy,\n billingStrategyFromAPI,\n Currency,\n currencyFromApi,\n} from '../pricing';\nimport {\n AppliedCreditInterface,\n AppliedTaxRateInterface,\n CreditType,\n Currency as CurrencyApi,\n PurchaseInterface,\n PurchaseItemInterface,\n} from '../_internal';\nimport { PurchaseStatus, purchaseStatusFromApi } from './purchase_status';\n\nexport interface Purchase {\n merchantId: string;\n timestamp: Date;\n purchaseId: string;\n total: number;\n currency: Currency;\n renewal: boolean;\n items: PurchaseItem[];\n billingStrategy: BillingStrategy;\n isDunning: boolean;\n dunningAttempt: number;\n voided: Date;\n paid: boolean;\n status: PurchaseStatus;\n creditAmount: number;\n appliedCredits: AppliedCredit[];\n taxAmount: number;\n appliedTaxRates: AppliedTaxRate[];\n}\n\nexport enum AppliedCreditType {\n CREDIT_TYPE_CREDIT_NOTE = 'Credit note',\n CREDIT_TYPE_PROMOTIONAL = 'Promotional',\n CREDIT_TYPE_UNSET = '',\n}\n\nexport interface AppliedCredit {\n appliedAmount: number;\n referenceId: string;\n referenceType: AppliedCreditType;\n}\n\nexport interface PurchaseItem {\n sku: string;\n description: string;\n amount: number;\n orderId: string;\n customerId: string;\n discountAmount: number;\n total: number;\n currency?: Currency;\n appliedDiscounts: AppliedDiscount[];\n taxAmount: number;\n appliedTaxRates: AppliedTaxRate[];\n setupFee?: number;\n\n merchantId: string;\n purchaseDay: string;\n purchaseId: string;\n}\n\nexport function purchaseFromApi(pApi: PurchaseInterface): Purchase {\n return {\n merchantId: pApi.merchantId || '',\n timestamp: pApi.timestamp ? new Date(pApi.timestamp) : null,\n purchaseId: pApi.purchaseId || '',\n total: pApi.total || 0,\n currency: pApi.currency ? currencyFromApi(pApi.currency) : Currency.USD,\n renewal: pApi.renewal || false,\n items: pApi.items ? pApi.items.map(p => purchaseItemFromApi(p)) : [],\n billingStrategy: billingStrategyFromAPI(pApi.billingStrategy),\n isDunning: pApi.isDunning || false,\n dunningAttempt: pApi.dunningAttempt || 0,\n voided: pApi.voided ? new Date(pApi.voided) : null,\n paid: pApi.paid || false,\n status: purchaseStatusFromApi(pApi.status),\n creditAmount: pApi.creditAmount || 0,\n appliedCredits: pApi.appliedCredits ? pApi.appliedCredits.map(ac => appliedCreditFromAPI(ac)) : [],\n taxAmount: pApi.taxAmount || 0,\n appliedTaxRates: (pApi.appliedTaxRates || []).map((at) => appliedTaxRateFromAPI(at))\n }\n}\n\nexport function purchaseItemFromApi(pApi: PurchaseItemInterface, currencyApi?: CurrencyApi): PurchaseItem {\n let currency;\n if (currencyApi !== undefined) {\n currency = currencyFromApi(currencyApi);\n }\n return {\n sku: pApi.sku || '',\n description: pApi.description || null,\n amount: pApi.amount || 0,\n orderId: pApi.orderId || '',\n customerId: pApi.customerId || '',\n discountAmount: pApi.discountAmount || 0,\n total: pApi.total || 0,\n currency: currency || Currency.USD,\n appliedDiscounts: pApi.appliedDiscounts ? pApi.appliedDiscounts.map(p => appliedDiscountFromApi(p)) : [],\n merchantId: pApi.merchantId,\n purchaseDay: pApi.day,\n purchaseId: pApi.purchaseId,\n taxAmount: pApi.taxAmount || 0,\n appliedTaxRates: (pApi.appliedTaxRates || []).map((at) => appliedTaxRateFromAPI(at)),\n setupFee: pApi.setupFee || 0\n }\n}\n\nexport function appliedCreditFromAPI(ac: AppliedCreditInterface): AppliedCredit {\n return {\n appliedAmount: ac.appliedAmount,\n referenceId: ac.referenceId,\n referenceType: appliedCreditTypeFromAPI(ac.referenceType)\n }\n}\n\nexport function appliedCreditTypeFromAPI(adt: CreditType): AppliedCreditType {\n switch (adt) {\n case CreditType.CREDIT_TYPE_CREDIT_NOTE:\n return AppliedCreditType.CREDIT_TYPE_CREDIT_NOTE;\n case CreditType.CREDIT_TYPE_PROMOTIONAL:\n return AppliedCreditType.CREDIT_TYPE_PROMOTIONAL\n }\n return AppliedCreditType.CREDIT_TYPE_UNSET;\n}\n\nexport function appliedTaxRateFromAPI(at: AppliedTaxRateInterface): AppliedTaxRate {\n return {\n amount: at.amount || 0,\n name: at.name || '',\n percentage: at.percentage || 0,\n taxRateId: at.taxRateId || '',\n }\n}\n","/* Api service for billing's http endpoints */\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { HostService } from '../_generated';\nimport { DownloadMerchantReportCsvRequest } from './merchant-report.interfaces';\nimport { Observable } from 'rxjs';\nimport { share, catchError } from 'rxjs/operators';\nimport { handleCsvError } from '../http-shared/error-handlers';\n\n@Injectable({providedIn: 'root'})\nexport class MerchantReportApiService {\n constructor(private hostService: HostService, private http: HttpClient ) { }\n\n downloadCsv(r: DownloadMerchantReportCsvRequest): Observable<Blob> {\n const queryParams = `?merchantID=${r.merchantId}&year=${r.year}&month=${r.month}`;\n return this.http.get(\n this.hostService.httpsHostWithScheme() + '/billing-report/get' + queryParams,\n this.apiOptions()\n ).pipe(\n share(),\n catchError(handleCsvError)\n );\n }\n\n generateCsv(r: DownloadMerchantReportCsvRequest): Observable<Blob> {\n const queryParams = `?merchantID=${r.merchantId}&year=${r.year}&month=${r.month}`;\n return this.http.get(\n this.hostService.httpsHostWithScheme() + '/billing-report/generate' + queryParams,\n this.apiOptions()\n ).pipe(\n share(),\n catchError(handleCsvError)\n );\n }\n\n private apiOptions(): { responseType: 'blob', withCredentials: boolean } {\n return {\n responseType: 'blob',\n withCredentials: true\n }\n }\n}\n","import { PurchaseStatus as PurchaseStatusApi } from '../_internal';\n\nexport enum PurchaseStatus {\n Unset = 'UNSET',\n Pending = 'PENDING',\n Due = 'DUE',\n Success = 'SUCCESS',\n Dunning = 'DUNNING',\n Failed = 'FAILED',\n}\n\n\n\nexport function purchaseStatusFromApi(psApi: PurchaseStatusApi): PurchaseStatus {\n switch (psApi) {\n case PurchaseStatusApi.PURCHASE_STATUS_PENDING:\n return PurchaseStatus.Pending;\n case PurchaseStatusApi.PURCHASE_STATUS_DUE:\n return PurchaseStatus.Due;\n case PurchaseStatusApi.PURCHASE_STATUS_SUCCESS:\n return PurchaseStatus.Success;\n case PurchaseStatusApi.PURCHASE_STATUS_DUNNING:\n return PurchaseStatus.Dunning;\n case PurchaseStatusApi.PURCHASE_STATUS_FAILED:\n return PurchaseStatus.Failed;\n }\n return PurchaseStatus.Unset\n}\n","export class Dimension {\n dimensionId: string;\n name: string;\n\n constructor(id: string) {\n this.dimensionId = id;\n this.name = DimensionNameFromId[id] || '';\n }\n}\n\nconst DimensionNameFromId: {[id: string]: string} = {\n 'existing_enterprise': 'Existing Enterprise',\n 'new_enterprise': 'New Enterprise',\n 'agency': 'Agency',\n 'CP_unassisted': 'Channel Partners, Unassisted (PLG)',\n 'CP_growth_MT': 'Channel Partners, Growth (Medium-Touch)',\n 'CP_growth_HT': 'Channel Partners, Growth (High-Touch)',\n};\n\nexport const Agency = new Dimension('agency');\nexport const NewEnterprise = new Dimension('new_enterprise');\nexport const ExistingEnterprise = new Dimension('existing_enterprise');\nexport const ChannelPartnersUnassistedPLG = new Dimension('CP_unassisted');\nexport const ChannelPartnersGrowthMediumTouch = new Dimension('CP_growth_MT');\nexport const ChannelPartnersGrowthHighTouch = new Dimension('CP_growth_HT');\n\n\n","import { ContractInterface } from '../_internal';\nimport { Currency, currencyFromApi } from '../pricing';\nimport { Dimension } from './dimension';\n\nexport interface Contract {\n merchantId: string;\n netD: number;\n created: Date;\n subscriptionId: string;\n dimension: Dimension;\n currency: Currency\n signed: Date;\n end: Date;\n activated: Date;\n modified: Date;\n verified: Date;\n status: string;\n creditLimit: number;\n pricingPlanId: string;\n}\n\nexport function contractFromApi(cApi: ContractInterface): Contract {\n return {\n merchantId: cApi.merchantId || '',\n netD: cApi.netD || 0,\n created: cApi.created || null,\n subscriptionId: cApi.subscriptionId || '',\n dimension: new Dimension(cApi.dimension),\n currency: currencyFromApi(cApi.currency),\n signed: cApi.signed || null,\n end: cApi.end || null,\n activated: cApi.activated || null,\n modified: cApi.modified || null,\n verified: cApi.verified || null,\n status: cApi.status || '',\n creditLimit: cApi.creditLimit || 0,\n pricingPlanId: cApi.pricingPlanId || '',\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {ContractApiService, UpdateContractRequestMutationInterface} from '../_internal';\nimport {Contract, contractFromApi} from './contract';\n\n@Injectable({providedIn: 'root'})\nexport class ContractService {\n constructor(private api: ContractApiService) {}\n\n /**\n * Get a contract by its identifier.\n *\n * @param merchantId is the unique identifier of the merchant.\n * @return An contract observable.\n */\n public get(merchantId: string): Observable<Contract> {\n return this.api.get({merchantId}).pipe(map(c => contractFromApi(c.contract)))\n }\n\n /**\n * Update a contract with a new value.\n *\n * @param merchantId is a string that identifies the contract to update.\n * @param mutations is a list of mutations to apply to the contract.\n * Each mutation object should only contain one value.\n * @return An observable of the update contract.\n */\n public update(merchantId: string, mutations: UpdateContractRequestMutationInterface[]): Observable<Contract> {\n return this.api.update({merchantId, mutations}).pipe(map(c => contractFromApi(c.contract)))\n }\n}\n","import { ListProductsRequestListProductsFiltersInterface, ProductType as ApiProductType } from '../_internal';\n\nexport interface ListProductsFilter {\n hasDiscount?: boolean;\n hasPricingOverride?: boolean;\n skus?: string[];\n productType?: ProductType[];\n}\n\nexport enum ProductType {\n Invalid,\n Standard,\n Vendasta,\n Subscription,\n Fee,\n PartnerSupportSales,\n};\n\nexport function listProductsFilterToApi(filter: ListProductsFilter): ListProductsRequestListProductsFiltersInterface {\n return {\n ...filter,\n productType: (filter.productType || []).map(pt => productTypeToApi(pt))\n }\n}\n\nfunction productTypeToApi(productType: ProductType): ApiProductType {\n switch (productType) {\n case ProductType.Standard:\n return ApiProductType.PRODUCT_TYPE_STANDARD_PRODUCT;\n case ProductType.Vendasta:\n return ApiProductType.PRODUCT_TYPE_VENDASTA_PRODUCT;\n case ProductType.Subscription:\n return ApiProductType.PRODUCT_TYPE_SUBSCRIPTION;\n case ProductType.Fee:\n return ApiProductType.PRODUCT_TYPE_FEE;\n case ProductType.PartnerSupportSales:\n return ApiProductType.PRODUCT_TYPE_PARTNER_SUPPORT_SALES;\n }\n return ApiProductType.PRODUCT_TYPE_INVALID;\n}\n","import { ProductInterface } from '../_internal';\n\nexport interface Product {\n name: string;\n sku: string;\n iconUrl: string;\n hasPricingOverride: boolean;\n hasDiscount: boolean;\n}\n\nexport function productFromApi(apiProduct: ProductInterface): Product {\n return {\n name: apiProduct.name || '',\n sku: apiProduct.sku || '',\n iconUrl: apiProduct.iconUrl || '',\n hasPricingOverride: apiProduct.hasPricingOverride || false,\n hasDiscount: apiProduct.hasDiscount || false\n };\n}\n","import { Injectable } from '@angular/core';\nimport { BillingApiService } from './_internal/billing.api.service';\nimport {\n GenerateVendorReportRequest,\n GetPurchaseCostRequest,\n GetPurchaseCostResponse,\n GetRevenueStatsRequest,\n} from './_internal/objects/api';\nimport {\n GetBillableItemRequest,\n ListBillableItemsRequest,\n} from './_internal/objects/billable-item';\nimport {\n PagedRequestOptions,\n} from './_internal/objects/common';\nimport {\n ListMerchantBillingReportsRequest,\n} from './_internal/objects/merchant-report';\nimport {\n ListContractsRequest,\n} from './_internal/objects/contract';\nimport {\n GetMultiCustomerSummariesRequest,\n} from './_internal/objects/customer-summary';\nimport {\n BillingStrategy,\n billingStrategyFromAPI,\n billingStrategyToAPI,\n ListPricingPlanProductFilter,\n PricingPlanProduct,\n pricingPlanProductFromApi,\n} from './pricing';\nimport {\n CreatePricingPlanProductRequest,\n DeletePricingPlanProductRequest,\n GetPricingPlanProductRequest,\n ListPricingPlanProductsRequest,\n UpdatePricingPlanProductRequest,\n} from './_internal/objects/pricing-plan-product';\nimport {\n GetMultiProductRequest,\n GetMultiProductResponse,\n ListProductsRequest\n} from './_internal/objects/product';\nimport {\n ListPurchaseItemsRequestListPurchaseItemsFilters,\n ListPurchaseRequest,\n RetryPurchaseRequest,\n VoidPurchaseRequest,\n} from './_internal/objects/purchase';\nimport {\n CanCreateSubscriptionsResponse,\n CanCreateSubscriptionsRequest,\n ChangeFrequencyRequest,\n ChangeRenewalDateRequest,\n ChangeCustomUnitPriceRequest,\n} from './_internal/objects/subscription'\nimport { MerchantReportStatus } from './_internal/enums/merchant-report.enum';\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport { Currency } from './_internal/enums/currency.enum';\nimport { RevenueApiService } from './revenue/revenue.service';\nimport { MerchantReportApiService } from './merchant-report/merchant-report.service';\nimport { MerchantReport } from './merchant-report/merchant-report';\nimport {HttpResponse} from '@angular/common/http';\nimport {ProductPricing, productPricingFromApi} from './pricing/product-pricing';\nimport {PagedResponse} from './core/paged-response';\nimport { Frequency, frequencyToApi } from './pricing/frequency';\nimport { Commitment as CommitmentApi } from './_internal/objects/commitment';\nimport { Commitment } from './pricing/commitment';\nimport { CurrencyPricingMap, currencyPricingMapToApi } from './pricing/pricing-plan-product';\nimport { FieldMask } from './_internal/objects/field-mask';\nimport { PurchaseApiService } from './_internal/purchase.api.service';\nimport { Purchase, purchaseFromApi, PurchaseItem, purchaseItemFromApi } from './purchase/purchase';\nimport { ListPurchaseFilter } from './purchase/list-purchases';\nimport { VendorApiService } from './_internal/vendor.api.service';\nimport { CustomerSummary, customerSummaryFromApi } from './customer_summary/customer-summary';\nimport { Contract, contractFromApi } from './contract';\nimport { Product, productFromApi } from './product/product';\nimport { ListProductsFilter, listProductsFilterToApi } from './product/list-products';\nimport { BillableItem, billableItemFromApi, ListBillableItemsFilter } from './billable-item/billable-item';\nimport { PricingApiService } from './_internal/pricing.api.service';\nimport { CanCreateSubscriptionsItem } from './subscription';\n\n@Injectable({providedIn: 'root'})\nexport class BillingService {\n constructor(\n private billingApi: BillingApiService,\n private revenueApi: RevenueApiService,\n private merchantReportApi: MerchantReportApiService,\n private pricingApi: PricingApiService,\n private purchaseApi: PurchaseApiService,\n private vendorApi: VendorApiService,\n ) { }\n\n /** deprecated */\n getPurchaseCost(merchantId: string, sku: string, quantity: number): Observable<GetPurchaseCostResponse> {\n const req = new GetPurchaseCostRequest({\n merchantId: merchantId,\n sku: sku,\n quantity: quantity,\n });\n return this.billingApi.getPurchaseCost(req).pipe(\n map(response => {\n if (!response.currency) {\n response.currency = Currency.USD;\n }\n return response;\n }),\n );\n }\n\n /** deprecated: Use canCreateSubscriptionsWithFrequencies instead. */\n canCreateSubscriptions(\n merchantId: string,\n skus: { [sku: string]: number }\n ): Observable<CanCreateSubscriptionsResponse> {\n const req = new CanCreateSubscriptionsRequest({\n merchantId: merchantId,\n skus: skus,\n });\n return this.billingApi.canCreateSubscriptions(req);\n }\n\n canCreateSubscriptionsWithFrequencies(\n merchantId: string,\n items: CanCreateSubscriptionsItem[]\n ): Observable<CanCreateSubscriptionsResponse> {\n const req = new CanCreateSubscriptionsRequest({\n merchantId: merchantId,\n items: items && items.map(item => {\n if (!item) {\n return null;\n }\n return {\n sku: item.sku,\n frequency: frequencyToApi(item.frequency),\n quantity: item.quantity || 0,\n };\n }),\n });\n return this.billingApi.canCreateSubscriptions(req);\n }\n\n downloadRevenueCsv(filename: string): Observable<Blob> {\n return this.revenueApi.downloadCsv({ filename });\n }\n\n downloadBillingReportCsv(merchantId: string, year: number, month: number): Observable<Blob> {\n return this.merchantReportApi.downloadCsv({ merchantId, year, month });\n }\n\n generateBillingReportCsv(merchantId: string, year: number, month: number): Observable<Blob> {\n return this.merchantReportApi.generateCsv({ merchantId, year, month });\n }\n\n listMerchantBillingReports(\n merchantId: string,\n cursor: string,\n pageSize: number,\n ): Observable<PagedResponse<MerchantReport>> {\n const req = new ListMerchantBillingReportsRequest({\n merchantId: merchantId,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listMerchantBillingReports(req).pipe(\n map(resp => {\n const reports = (resp.reports || []).map(r => {\n return {\n merchantId: r.merchantId,\n year: r.year,\n month: r.month,\n created: r.created,\n status: MerchantReportStatus[r.status || 0],\n } as MerchantReport;\n });\n return new PagedResponse<MerchantReport>(reports, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }),\n );\n }\n\n canBillCreateSnapshot(merchantId: string): Observable<HttpResponse<null>> {\n return this.billingApi.canBillItem({ merchantId: merchantId, sku: 'ST' });\n }\n\n canBillRefreshSnapshot(merchantId: string): Observable<HttpResponse<null>> {\n return this.billingApi.canBillItem({ merchantId: merchantId, sku: 'snapshotreportrefresh' });\n }\n\n canBillItem(merchantId: string, sku: string): Observable<boolean> {\n return this.billingApi.canBillItem({ merchantId: merchantId, sku: sku }).pipe(map(response => response.ok));\n }\n\n createPricingPlanProduct(\n pricingPlanId: string,\n sku: string,\n frequency: Frequency,\n pricing: CurrencyPricingMap,\n commitment: Commitment,\n strategy: BillingStrategy,\n volumeCommitment: number\n ): Observable<boolean> {\n const request = new CreatePricingPlanProductRequest({ pricingPlanId, sku, volumeCommitment });\n request.frequency = frequencyToApi(frequency);\n request.pricing = currencyPricingMapToApi(pricing);\n request.commitment = new CommitmentApi(commitment);\n request.strategy = billingStrategyToAPI(strategy);\n return this.billingApi.createPricingPlanProduct(request).pipe(mapTo(true));\n }\n\n updatePricingPlanProduct(\n pricingPlanId: string,\n sku: string,\n {\n frequency,\n pricing,\n commitment,\n strategy,\n volumeCommitment\n }: {\n frequency?: Frequency;\n pricing?: CurrencyPricingMap;\n commitment?: Commitment;\n strategy?: BillingStrategy;\n volumeCommitment?: number;\n },\n ): Observable<boolean> {\n const fieldMask = new FieldMask({ paths: [] });\n const request = new UpdatePricingPlanProductRequest({ pricingPlanId, sku });\n\n if (frequency !== null) {\n request.frequency = frequencyToApi(frequency);\n fieldMask.paths.push('frequency');\n }\n if (pricing !== null) {\n request.pricing = currencyPricingMapToApi(pricing);\n fieldMask.paths.push('pricing');\n }\n if (commitment !== null) {\n request.commitment = new CommitmentApi(commitment);\n fieldMask.paths.push('commitment');\n }\n if (strategy !== null) {\n request.strategy = billingStrategyToAPI(strategy);\n fieldMask.paths.push('strategy');\n }\n if (volumeCommitment !== null) {\n request.volumeCommitment = volumeCommitment;\n fieldMask.paths.push('volumeCommitment');\n }\n return this.billingApi.updatePricingPlanProduct(request).pipe(mapTo(true));\n }\n\n deletePricingPlanProduct(pricingPlanId: string, sku: string): Observable<boolean> {\n const request = new DeletePricingPlanProductRequest({ pricingPlanId, sku });\n return this.billingApi.deletePricingPlanProduct(request).pipe(mapTo(true));\n }\n\n /** deprecated - Use getMultiWholesalePrices from the WholesalePricingService */\n getMultiProductPricing(\n merchantId: string,\n skus: string[],\n pricingPlanId?: string,\n ): Observable<{ [sku: string]: ProductPricing }> {\n return this.billingApi.getMultiProductPricing({ merchantId, skus, pricingPlanId }).pipe(\n map(r => {\n const productPricesApi = r.productPrices || {};\n const productPricings = {};\n for (const k of Object.keys(productPricesApi)) {\n const productPricingResponse = productPricesApi[k];\n productPricings[k] = productPricingFromApi(productPricingResponse);\n }\n return productPricings;\n }),\n );\n }\n\n /** deprecated - Use getMultiRetailPrices from the RetailPricingService */\n getMultiRetailPricing(\n merchantId: string,\n currency: Currency,\n skus: string[],\n groupId?: string,\n ): Observable<{ [sku: string]: ProductPricing }> {\n const requestGroupId: string = groupId === undefined ? '' : groupId;\n return this.pricingApi.getMultiRetail({ merchantId, currency, skus, groupId: requestGroupId }).pipe(\n map(r => {\n const retailPricesApi = r.productPrices || {};\n const retailPricings = {};\n for (const k of Object.keys(retailPricesApi)) {\n const retailPricingResponse = retailPricesApi[k]\n retailPricings[k] = productPricingFromApi(retailPricingResponse)\n }\n return retailPricings;\n }),\n );\n }\n\n listPricingPlanProducts(\n filters: ListPricingPlanProductFilter,\n cursor: string,\n pageSize: number,\n ): Observable<PagedResponse<PricingPlanProduct>> {\n const req = new ListPricingPlanProductsRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listPricingPlanProducts(req).pipe(\n map(response => {\n const products = (response.products || []).map(p => pricingPlanProductFromApi(p));\n return new PagedResponse(products, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n getPricingPlanProduct(pricingPlanId: string, sku: string): Observable<PricingPlanProduct> {\n const req = new GetPricingPlanProductRequest({ pricingPlanId, sku });\n return this.billingApi.getPricingPlanProduct(req).pipe(\n map(resp => {\n const ppp: PricingPlanProduct = pricingPlanProductFromApi(resp.pricingPlanProduct);\n ppp.defaultStrategy = billingStrategyFromAPI(resp.pricingPlanDefaultStrategy);\n return ppp;\n })\n );\n }\n\n listPurchases(filters: ListPurchaseFilter, cursor: string, pageSize: number): Observable<PagedResponse<Purchase>> {\n const req = new ListPurchaseRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.purchaseApi.list(req).pipe(\n map(response => {\n const purchases = (response.purchases || []).map(purchase => purchaseFromApi(purchase));\n return new PagedResponse(purchases, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n voidPurchase(merchantId: string, purchaseId: string, day: string): Observable<boolean> {\n const req = new VoidPurchaseRequest({ purchaseId, merchantId, day });\n return this.purchaseApi.void(req).pipe(mapTo(true))\n }\n\n listPurchaseItems(\n filters: ListPurchaseItemsRequestListPurchaseItemsFilters,\n cursor: string,\n pageSize: number,\n ): Observable<PagedResponse<PurchaseItem>> {\n const req = new ListPurchaseRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.purchaseApi.listPurchaseItems(req).pipe(\n map(response => {\n const purchaseItems = (response.purchaseItems || []).map(purchaseItem =>\n purchaseItemFromApi(purchaseItem, response.currency),\n );\n return new PagedResponse(purchaseItems, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n retryPurchase(merchantId: string, day: string, purchaseId: string): Observable<boolean> {\n const req = new RetryPurchaseRequest({\n merchantId: merchantId,\n day: day,\n purchaseId: purchaseId,\n });\n return this.purchaseApi.retry(req).pipe(map(() => true));\n }\n\n getMultiCustomerSummaries(\n merchantId: string,\n customerIds: string[],\n periodStart: Date,\n periodEnd: Date,\n ): Observable<CustomerSummary[]> {\n const req = new GetMultiCustomerSummariesRequest({\n customerIds: customerIds,\n merchantId: merchantId,\n periodStart: periodStart,\n periodEnd: periodEnd,\n });\n return this.purchaseApi.getMultiCustomerSummaries(req).pipe(\n map(response => {\n return (response.customerSummaries || []).map(customerSummary => customerSummaryFromApi(customerSummary));\n }),\n );\n }\n\n getMultiContract(merchantIds: string[]): Observable<{ [sku: string]: Contract }> {\n return this.billingApi.getMultiContract({ merchantIds: merchantIds }).pipe(\n map(resp => {\n const contractsAPI = resp.contracts || {};\n const contracts = {};\n for (const k of Object.keys(contractsAPI)) {\n const contractResponse = contractsAPI[k];\n contracts[k] = contractFromApi(contractResponse);\n }\n return contracts;\n }),\n );\n }\n\n generateVendorReport(\n skus: string[],\n periodStart: Date,\n periodEnd: Date,\n vendorName: string,\n markAsApproved: boolean\n ): Observable<string> {\n const req = new GenerateVendorReportRequest({\n skus: skus,\n periodStart: periodStart,\n periodEnd: periodEnd,\n vendorName: vendorName,\n markAsApproved: markAsApproved,\n });\n return this.vendorApi.generateReport(req).pipe(map(response => response.url));\n }\n\n getVendorStats(skus: string[], periodStart: Date, periodEnd: Date): Observable<number> {\n const req = new GetRevenueStatsRequest({\n skus: skus,\n periodStart: periodStart,\n periodEnd: periodEnd,\n });\n return this.vendorApi.getRevenueStats(req).pipe(map(response => response.totalRevenue || 0));\n }\n\n listContracts(cursor: string, pageSize: number): Observable<PagedResponse<Contract>> {\n const req = new ListContractsRequest({\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listContracts(req).pipe(\n map(response => {\n const contracts = (response.contracts || []).map(c => contractFromApi(c));\n return new PagedResponse(contracts, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n listProducts(\n merchantId: string,\n searchTerm: string,\n filters: ListProductsFilter,\n cursor: string,\n pageSize: number,\n ): Observable<PagedResponse<Product>> {\n const apiFilters = listProductsFilterToApi(filters);\n const req = new ListProductsRequest({\n merchantId,\n searchTerm,\n filters: apiFilters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listProducts(req).pipe(\n map(response => {\n const products = (response.products || []).map(p => productFromApi(p));\n return new PagedResponse(products, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n getMultiProduct(\n skus: string[]\n ): Observable<Map<string, Product>> {\n const req = new GetMultiProductRequest({\n skus: skus\n });\n return this.billingApi.getMultiProduct(req).pipe(\n map((response: GetMultiProductResponse) => {\n const productsMap = new Map<string, Product>();\n skus.forEach(sku => {\n productsMap[sku] = productFromApi(response.products[sku])\n });\n return productsMap\n }),\n );\n }\n\n getBillableItem(merchantId: string, sku: string, customerId: string, orderId: string): Observable<BillableItem> {\n const req = new GetBillableItemRequest({\n merchantId: merchantId,\n sku: sku,\n customerId: customerId,\n orderId: orderId,\n });\n\n return this.billingApi.getBillableItem(req).pipe(map(response => billableItemFromApi(response.item)));\n }\n\n changeBillableItemFrequency(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n freq: Frequency): Observable<HttpResponse<null>> {\n const req = new ChangeFrequencyRequest({\n merchantId: merchantId,\n sku: sku,\n customerId: customerId,\n orderId: orderId,\n frequency: frequencyToApi(freq),\n });\n\n return this.billingApi.changeFrequency(req);\n }\n\n changeBillableItemNextRenewalDate(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n next: Date): Observable<HttpResponse<null>> {\n const req = new ChangeRenewalDateRequest({\n merchantId: merchantId,\n sku: sku,\n customerId: customerId,\n orderId: orderId,\n nextRenewalDate: next,\n });\n\n return this.billingApi.changeRenewalDate(req);\n }\n\n changeBillableItemCustomUnitPrice(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n amount: number): Observable<HttpResponse<null>> {\n const req = new ChangeCustomUnitPriceRequest({\n merchantId: merchantId,\n sku: sku,\n customerId: customerId,\n orderId: orderId,\n customUnitPrice: amount,\n });\n\n return this.billingApi.changeCustomUnitPrice(req);\n }\n\n listBillableItems(\n searchTerm: string,\n filters: ListBillableItemsFilter,\n cursor: string,\n pageSize: number\n ): Observable<PagedResponse<BillableItem>> {\n const req = new ListBillableItemsRequest({\n searchTerm: searchTerm,\n filters: filters,\n pagingOptions: new PagedRequestOptions({cursor, pageSize}),\n });\n return this.billingApi.listBillableItems(req).pipe(\n map(response => {\n const items = (response.items || []).map(item => billableItemFromApi(item));\n return new PagedResponse(items, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n startRevRecBackfillWorkflow(): Observable<HttpResponse<null>> {\n return this.billingApi.startRevRecTemplateBackfill({})\n }\n}\n","import {CustomerSummaryInterface} from '../_internal/interfaces';\nimport {Currency, currencyFromApi} from '../pricing';\n\n\nexport interface CustomerSummary {\n customerId: string;\n purchaseItemQuantity: number;\n purchaseItemTotal: number;\n currency: Currency;\n}\n\n\nexport function customerSummaryFromApi(csApi: CustomerSummaryInterface): CustomerSummary {\n let currency;\n if (csApi.currency !== undefined) {\n currency = currencyFromApi(csApi.currency);\n }\n return {\n customerId: csApi.customerId || '',\n purchaseItemQuantity: csApi.purchaseItemQuantity || 0,\n purchaseItemTotal: csApi.purchaseItemTotal || 0,\n currency: currency || Currency.USD\n }\n};\n","import { DiscountType as ApiDiscountType } from '../_internal';\n\nexport enum DiscountType {\n FIXED_AMOUNT = 'FIXED_AMOUNT',\n PERCENT_AMOUNT = 'PERCENT_AMOUNT',\n FIXED_NUMBER_OF_UNITS = 'FIXED_NUMBER_OF_UNITS',\n FIXED_AMOUNT_PER_UNIT = 'FIXED_AMOUNT_PER_UNIT',\n};\n\nexport function discountTypeFromApi(t: ApiDiscountType): DiscountType {\n switch (t) {\n case ApiDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT:\n return DiscountType.FIXED_AMOUNT_PER_UNIT;\n case ApiDiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS:\n return DiscountType.FIXED_NUMBER_OF_UNITS;\n case ApiDiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT:\n return DiscountType.PERCENT_AMOUNT;\n }\n return DiscountType.FIXED_AMOUNT;\n}\n\nexport function discountTypeToApi(t: DiscountType): ApiDiscountType {\n switch (t) {\n case DiscountType.FIXED_AMOUNT_PER_UNIT:\n return ApiDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT;\n case DiscountType.FIXED_NUMBER_OF_UNITS:\n return ApiDiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS;\n case DiscountType.PERCENT_AMOUNT:\n return ApiDiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT;\n }\n return ApiDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT;\n}\n","import { DiscountType } from '../discount';\nimport { discountTypeFromApi, discountTypeToApi } from '../discount/discount_type';\nimport { Bundle as APIBundle, BundleItem as APIBundleItem } from '../_internal';\n\nexport interface Bundle {\n merchantId: string;\n bundleId: string;\n name: string;\n hideBundleDetails: boolean;\n items: BundleItem[];\n created: Date;\n updated: Date;\n}\n\nexport interface BundleItem {\n productId: string;\n discountType: DiscountType;\n discountAmount: number;\n quantity: number;\n defaultSku: string;\n price: Price;\n}\n\nexport interface Price {\n amount: number\n setupFee: number\n}\n\nexport function bundleFromApi(apiBundle: APIBundle): Bundle {\n if (!apiBundle) {\n return null;\n }\n const items = (apiBundle.items || []).map(item => bundleItemFromApi(item));\n return {\n merchantId: apiBundle.merchantId,\n bundleId: apiBundle.bundleId,\n name: apiBundle.name,\n hideBundleDetails: apiBundle.hideBundleDetails,\n items: items,\n created: apiBundle.created,\n updated: apiBundle.updated,\n } as Bundle\n}\n\nexport function bundleItemFromApi(apiBundleItem: APIBundleItem): BundleItem {\n return {\n productId: apiBundleItem.productId,\n discountType: discountTypeFromApi(apiBundleItem.discountType),\n discountAmount: apiBundleItem.discountAmount,\n quantity: apiBundleItem.quantity,\n defaultSku: apiBundleItem.defaultSku,\n price: apiBundleItem.price,\n } as BundleItem\n}\n\nexport function bundleItemToApi(bundleItem: BundleItem): APIBundleItem {\n return {\n productId: bundleItem.productId,\n discountType: discountTypeToApi(bundleItem.discountType),\n discountAmount: bundleItem.discountAmount,\n quantity: bundleItem.quantity,\n defaultSku: bundleItem.defaultSku,\n price: bundleItem.price,\n } as APIBundleItem\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n BundleApiService,\n GetMultiBundleRequest,\n GetMultiBundleResponse,\n ListBundlesRequest,\n ListBundlesResponse,\n PagedRequestOptions,\n UpsertBundleRequest,\n} from '../_internal';\nimport { Bundle, bundleFromApi, BundleItem, bundleItemToApi } from './bundle';\n\nexport interface ListBundleFilter {\n merchantId?: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class BundleService {\n constructor(private bundleApiService: BundleApiService) {\n }\n\n upsert(merchantId: string, bundleId: string, name: string, hideBundleDetails: boolean, items: BundleItem []): Observable<boolean> {\n const request = new UpsertBundleRequest({\n merchantId: merchantId,\n bundleId: bundleId,\n name: name,\n hideBundleDetails: hideBundleDetails,\n items: (items || []).map(item => bundleItemToApi(item))\n });\n return this.bundleApiService.upsert(request).pipe(mapTo(true));\n }\n\n getMulti(merchantId: string, bundleIds: string[]): Observable<Map<string, Bundle>> {\n const request = new GetMultiBundleRequest(\n {\n merchantId: merchantId,\n bundleIds: bundleIds\n }\n );\n return this.bundleApiService.getMulti(request).pipe(\n map((resp: GetMultiBundleResponse) => {\n const bundlesMap = new Map<string, Bundle>();\n if (resp && resp.bundles) {\n bundleIds.forEach(bundleId => {\n bundlesMap.set(bundleId, bundleFromApi(resp.bundles[bundleId]));\n });\n }\n return bundlesMap\n })\n )\n }\n\n list(filters: ListBundleFilter, searchTerm: string, cursor: string, pageSize: number): Observable<PagedResponse<Bundle>> {\n const request = new ListBundlesRequest({\n filters: filters,\n searchTerm: searchTerm,\n pagingOptions: new PagedRequestOptions({cursor, pageSize}),\n });\n return this.bundleApiService.list(request).pipe(\n map((resp: ListBundlesResponse) => {\n const bundles = (resp.bundles || []).map(bundle => bundleFromApi(bundle));\n return new PagedResponse<Bundle>(bundles, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore)\n })\n )\n }\n}\n\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mapTo, share } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport { HostService } from '../_generated';\nimport { DeleteContractDocumentRequest, ListContractDocumentsRequest, PagedRequestOptions } from '../_internal';\nimport { ContractDocumentApiService } from '../_internal/contract-document.api.service';\nimport { ListContractDocumentsFilter } from './list-contract-document';\nimport { ContractDocument, contractDocumentFromApi } from './contract-document';\n\n@Injectable({providedIn: 'root'})\nexport class ContractDocumentService {\n constructor(\n private contractDocumentApi: ContractDocumentApiService,\n private hostService: HostService,\n private http: HttpClient\n ) { }\n\n upload(merchantId: string, file: File): Observable<boolean> {\n const url = `${this.hostService.httpsHostWithScheme()}/contract-document/upload`;\n return this.http.post(url, file, {\n headers: new HttpHeaders({\n 'Content-Type': 'application/pdf',\n 'Content-Disposition': `attachment; filename=${file.name}`\n }),\n observe: 'body',\n responseType: 'blob',\n withCredentials: true,\n params: {merchantId: merchantId}\n }).pipe(\n share(),\n mapTo(true)\n );\n }\n\n list(filters: ListContractDocumentsFilter, cursor: string, pageSize: number): Observable<PagedResponse<ContractDocument>> {\n const req = new ListContractDocumentsRequest({\n filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.contractDocumentApi.list(req).pipe(\n map(response => {\n const documents = (response.contractDocuments || []).map(doc => contractDocumentFromApi(doc));\n return new PagedResponse(documents, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n download(merchantId: string, id: string, filename: string): Observable<Blob> {\n const params = {merchant_id: merchantId, id: id, filename: filename};\n return this.http.get(\n `${this.hostService.httpsHostWithScheme()}/contract-document/download`,\n {\n observe: 'body',\n params: params,\n responseType: 'blob',\n withCredentials: true,\n }\n ).pipe(\n share(),\n );\n }\n\n delete(merchantId: string, id: string): Observable<boolean> {\n const req = new DeleteContractDocumentRequest({\n merchantId,\n id,\n });\n return this.contractDocumentApi.delete(req).pipe(mapTo(true));\n }\n}\n","import { ContractDocumentInterface } from '../_internal';\n\nexport interface ContractDocument {\n id: string;\n merchantId: string;\n filename: string;\n created: Date;\n}\n\nexport function contractDocumentFromApi(apiContractDocument: ContractDocumentInterface): ContractDocument {\n return {\n id: apiContractDocument.id || '',\n merchantId: apiContractDocument.merchantId || '',\n filename: apiContractDocument.filename || '',\n created: apiContractDocument.created || null\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AddCreditRequest, CreditApiService, GetBalanceRequest, GetBalanceResponse } from '../_internal';\nimport { CreditBalance, creditBalanceFromApi } from './credit';\n\n@Injectable({providedIn: 'root'})\nexport class CreditService {\n constructor(\n private creditApi: CreditApiService\n ) { }\n\n getBalance(merchantId: string): Observable<CreditBalance> {\n return this.creditApi.getBalance(new GetBalanceRequest({\n merchantId\n })).pipe(map((res: GetBalanceResponse) => creditBalanceFromApi(res.creditBalance)))\n }\n\n add(merchantId: string, currency: string, amount: number, idempotencyKey?: string, reason?: string): Observable<null> {\n return this.creditApi.add(new AddCreditRequest({\n merchantId,\n currency,\n amount,\n idempotencyKey,\n reason,\n })).pipe(map(() => null))\n }\n}\n","import { CreditBalanceInterface } from '../_internal';\n\nexport interface CreditBalance {\n merchantId: string;\n currency: string;\n amount: number;\n}\n\nexport function creditBalanceFromApi(apiCreditBalance: CreditBalanceInterface): CreditBalance {\n return {\n merchantId: apiCreditBalance.merchantId || '',\n currency: apiCreditBalance.currency || '',\n amount: apiCreditBalance.amount || 0\n };\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n CreateDiscountRequest,\n DiscountApiService,\n ExpireDiscountRequest,\n ListDiscountsRequest,\n PagedRequestOptions,\n UpdateDiscountRequest,\n} from '../_internal';\nimport { Discount, discountFromApi } from './discount';\nimport { DiscountType, discountTypeToApi } from './discount_type';\nimport { ListDiscountsFilter } from './list-discount';\n\n@Injectable({providedIn: 'root'})\nexport class DiscountService {\n constructor(\n private discountApi: DiscountApiService\n ) { }\n\n list(filters: ListDiscountsFilter, cursor: string, pageSize: number): Observable<PagedResponse<Discount>> {\n const req = new ListDiscountsRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.discountApi.list(req).pipe(\n map(response => {\n const discounts = (response.discounts || []).map(item => discountFromApi(item));\n return new PagedResponse(discounts, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n create(merchantId: string, sku: string, discountType: DiscountType, amount: number, startDateTime: string,\n endDateTime?: string, resetEachPeriodFlag?: boolean, description?: string): Observable<HttpResponse<null>> {\n\n let start, dt\n start = new Date(startDateTime)\n dt = discountTypeToApi(discountType)\n\n const r = new CreateDiscountRequest({\n merchantId: merchantId,\n sku: sku,\n discountType: dt,\n amount: amount,\n start: start,\n resetEachPeriod: resetEachPeriodFlag,\n description: description,\n });\n\n if (endDateTime && endDateTime !== '') {\n r.end = new Date(endDateTime)\n }\n\n return this.discountApi.create(r)\n }\n\n update(merchantId: string, id: string, discountType: DiscountType, amount: number, startDateTime: string,\n endDateTime?: string, resetEachPeriodFlag?: boolean, description?: string): Observable<HttpResponse<null>> {\n\n let start, dt\n start = new Date(startDateTime)\n dt = discountTypeToApi(discountType)\n\n const r = new UpdateDiscountRequest({\n merchantId: merchantId,\n id: id,\n discountType: dt,\n amount: amount,\n start: start,\n resetEachPeriod: resetEachPeriodFlag,\n description: description,\n });\n\n if (endDateTime && endDateTime !== '') {\n r.end = new Date(endDateTime)\n }\n return this.discountApi.update(r)\n }\n\n expire(merchantId: string, id: string): Observable<HttpResponse<null>> {\n return this.discountApi.expire(new ExpireDiscountRequest({\n merchantId: merchantId,\n id: id,\n }))\n }\n}\n","import { DiscountInterface } from '../_internal';\nimport { discountTypeFromApi, DiscountType } from './discount_type';\n\nexport interface Discount {\n discountId: number;\n id: string\n discountType: DiscountType;\n amount: number;\n start: Date;\n end: Date;\n resetEachPeriod: boolean;\n merchantId: string;\n created: Date;\n updated: Date;\n SKU: string;\n description: string;\n}\n\nexport function discountFromApi(apiDiscount: DiscountInterface): Discount {\n return {\n merchantId: apiDiscount.merchantId || '',\n discountId: apiDiscount.discountId || 0,\n id: apiDiscount.id || '',\n discountType: discountTypeFromApi(apiDiscount.discountType),\n amount: apiDiscount.amount || 0,\n start: apiDiscount.start ? new Date(apiDiscount.start) : null,\n end: apiDiscount.end ? new Date(apiDiscount.end) : null,\n resetEachPeriod: apiDiscount.resetEachPeriod || false,\n created: apiDiscount.created ? new Date(apiDiscount.created) : null,\n updated: apiDiscount.updated ? new Date(apiDiscount.updated) : null,\n SKU: apiDiscount.sku || '',\n description: apiDiscount.description || ''\n };\n}\n","import { RetailCustomerConfiguration as ApiRetailCustomerConfiguration } from '../_internal/objects/retail-customer-configuration';\n\nexport interface RetailCustomerConfiguration {\n merchantId: string,\n customerId: string,\n contactId: string,\n autoPost?: boolean\n autoGenerate?: boolean\n useTemplateInvoice?: boolean\n collectionMethod?: CollectionMethod\n invoiceDay?: number\n}\n\nexport enum CollectionMethod {\n UNSET = 'Unset',\n MANUAL_COLLECTION = 'Manual Collection',\n CHARGE_AUTOMATICALLY = 'Charge Automatically',\n SEND_EMAIL = 'Send Email',\n}\n\nexport function collectionMethodToApi(m: CollectionMethod): string {\n switch (m) {\n case CollectionMethod.MANUAL_COLLECTION:\n return 'manual-collection';\n case CollectionMethod.CHARGE_AUTOMATICALLY:\n return 'charge-automatically';\n case CollectionMethod.SEND_EMAIL:\n return 'send-email';\n default:\n return '';\n }\n}\n\nexport function collectionMethodFromApi(m: string): CollectionMethod {\n switch (m) {\n case 'manual-collection':\n return CollectionMethod.MANUAL_COLLECTION;\n case 'charge-automatically':\n return CollectionMethod.CHARGE_AUTOMATICALLY;\n case 'send-email':\n return CollectionMethod.SEND_EMAIL;\n default:\n return CollectionMethod.UNSET;\n }\n}\n\nexport function retailCustomerConfigurationFromApi(config: ApiRetailCustomerConfiguration): RetailCustomerConfiguration {\n return {\n merchantId: config.merchantId || '',\n customerId: config.customerId || '',\n contactId: config.contactId || '',\n autoPost: config.autoPost || false,\n autoGenerate: config.autoGenerate || false,\n useTemplateInvoice: config.useTemplateInvoice || false,\n collectionMethod: collectionMethodFromApi(config.collectionMethod),\n invoiceDay: config.invoiceDay || 0,\n };\n}\n","import { AppliedBundle, convertApiAppliedBundle } from '../applied_bundle';\nimport { AppliedDiscount, appliedDiscountFromApi } from '../applied_discount';\nimport { Currency, currencyFromApi } from '../pricing';\nimport {\n CollectionMethod,\n collectionMethodFromApi,\n} from '../retail-customer-configuration';\nimport { TaxRate } from '../tax-rate';\nimport {\n AppliedTaxRate as ApiAppliedTaxRate,\n InvoiceCustomerAddress as ApiInvoiceCustomerAddress,\n Invoice as ApiInvoice,\n InvoiceItem as ApiInvoiceItem,\n InvoiceStatus as ApiInvoiceStatus,\n InvoiceStatus as InternalInvoiceStatus,\n ListInvoicesRequestFilters,\n TaxRate as ApiTaxRate,\n ListInvoicesRequestFiltersDateFilterDateField,\n} from '../_internal';\nimport { ListInvoicesFilter } from './list-invoice';\n\nexport enum InvoiceStatus {\n DRAFT = 'Draft',\n DUE = 'Due',\n PAID = 'Paid',\n VOID = 'Void'\n}\n\nexport enum InvoiceDateField {\n CREATED = 'Created'\n}\n\nexport enum InvoiceOrigin {\n MANUAL = 'Manual',\n SALES_ORDER = 'Sales Order',\n RENEWAL = 'Renewal',\n UNSET = 'Unset'\n}\n\nexport interface InvoiceItem {\n id: string;\n sku: string;\n amount: number;\n quantity: number;\n description: string;\n subtotal: number;\n total: number;\n appliedTaxes: AppliedTaxRate[];\n appliedDiscounts: AppliedDiscount[];\n taxRates: TaxRate[];\n bundleId: string;\n bundleInstanceId?: string;\n}\n\nexport interface Invoice {\n id: string;\n number: string;\n customerId: string;\n customerName: string;\n contactId: string;\n status: InvoiceStatus;\n subtotal: number;\n discountTotal: number;\n total: number;\n paid: Date;\n issued: Date;\n due: Date;\n created: Date;\n updated: Date;\n items: InvoiceItem[];\n currency: Currency;\n orderId: string;\n appliedTaxes: AppliedTaxRate[];\n defaultTaxRates: TaxRate[];\n appliedBundles: AppliedBundle[];\n origin: InvoiceOrigin;\n collectionMethod: CollectionMethod;\n memo: string;\n defaultPaymentMethod: string;\n customerAddress: InvoiceCustomerAddress,\n externalCustomerIdentifier: string,\n}\n\nexport interface AppliedTaxRate {\n amount?: number;\n taxRateId?: string;\n percentage?: number;\n name?: string;\n}\n\nfunction convertApiStatus(s: ApiInvoiceStatus): InvoiceStatus {\n switch (s) {\n case ApiInvoiceStatus.DUE:\n return InvoiceStatus.DUE;\n case ApiInvoiceStatus.PAID:\n return InvoiceStatus.PAID;\n case ApiInvoiceStatus.VOID:\n return InvoiceStatus.VOID;\n default:\n return InvoiceStatus.DRAFT;\n }\n}\n\nfunction invoiceStatusToApi(status: InvoiceStatus): InternalInvoiceStatus {\n switch (status) {\n case InvoiceStatus.DUE:\n return InternalInvoiceStatus.DUE;\n case InvoiceStatus.PAID:\n return InternalInvoiceStatus.PAID;\n case InvoiceStatus.VOID:\n return InternalInvoiceStatus.VOID;\n default:\n return InternalInvoiceStatus.DRAFT;\n }\n}\n\nfunction invoiceDateFilterFieldToApi(dateField: InvoiceDateField): ListInvoicesRequestFiltersDateFilterDateField {\n switch (dateField) {\n default:\n return ListInvoicesRequestFiltersDateFilterDateField.CREATED\n }\n}\n\nfunction convertApiOrigin(s: string): InvoiceOrigin {\n switch (s) {\n case 'manual':\n return InvoiceOrigin.MANUAL;\n case 'sales-order':\n return InvoiceOrigin.SALES_ORDER;\n case 'renewal':\n return InvoiceOrigin.RENEWAL;\n default:\n return InvoiceOrigin.UNSET;\n }\n}\n\nexport function convertApiAppliedTaxRate(at: ApiAppliedTaxRate): AppliedTaxRate {\n if (!at) {\n return null\n }\n\n return {\n amount: at.amount || 0,\n taxRateId: at.taxRateId || '',\n percentage: at.percentage || 0,\n name: at.name || '',\n }\n}\n\nexport function convertAppliedTaxRate(at: AppliedTaxRate): ApiAppliedTaxRate {\n if (!at) {\n return null\n }\n\n return new ApiAppliedTaxRate({\n amount: at.amount,\n taxRateId: at.taxRateId\n })\n}\n\n\nexport function convertApiTaxRate(tr: ApiTaxRate): TaxRate {\n if (!tr) {\n return null\n }\n\n return {\n id: tr.id || '',\n name: tr.name || '',\n description: tr.description || '',\n percentage: tr.percentage || 0,\n }\n}\n\nexport function convertTaxRate(tr: TaxRate): ApiTaxRate {\n if (!tr) {\n return null\n }\n\n return new ApiTaxRate({\n id: tr.id,\n name: tr.name,\n description: tr.description,\n percentage: tr.percentage,\n })\n}\n\nexport interface InvoiceCustomerAddress {\n address?: string;\n address2?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n}\n\nfunction convertApiCustomerAddress(ca: ApiInvoiceCustomerAddress): InvoiceCustomerAddress {\n return {\n address: ca?.address || '',\n address2: ca?.address2 || '',\n city: ca?.city || '',\n state: ca?.state || '',\n zip: ca?.zip || '',\n country: ca?.country || '',\n };\n}\n\nexport function convertApiInvoiceItem(ii: ApiInvoiceItem): InvoiceItem {\n if (!ii) {\n return null\n }\n\n const appliedTaxes: AppliedTaxRate[] = (ii.appliedTaxes || []).map((at) => convertApiAppliedTaxRate(at));\n const taxRates: TaxRate[] = (ii.taxRates || []).map((tr) => convertApiTaxRate(tr));\n const appliedDiscounts: AppliedDiscount[] = (ii.discounts || []).map((ad) => appliedDiscountFromApi(ad));\n\n return {\n id: ii.id || '',\n sku: ii.sku || '',\n amount: ii.amount || 0,\n quantity: ii.quantity || 0,\n description: ii.description || '',\n subtotal: ii.subtotal || 0,\n total: ii.total || 0,\n appliedDiscounts: appliedDiscounts || [],\n appliedTaxes: appliedTaxes || [],\n taxRates: taxRates || [],\n bundleId: ii.bundleId || '',\n bundleInstanceId: ii.bundleInstanceId || '',\n };\n}\n\nexport function convertInvoiceItem(ii: InvoiceItem): ApiInvoiceItem {\n if (!ii) {\n return null\n }\n\n return new ApiInvoiceItem({\n sku: ii.sku,\n amount: ii.amount,\n quantity: ii.quantity,\n description: ii.description,\n total: ii.total,\n });\n}\n\nexport function convertApiInvoice(i: ApiInvoice): Invoice {\n if (!i) {\n return null\n }\n\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n const invoiceItems: InvoiceItem[] = (i.items || []).map((ii) => convertApiInvoiceItem(ii));\n const appliedTaxes: AppliedTaxRate[] = (i.appliedTaxes || []).map((at) => convertApiAppliedTaxRate(at));\n const taxRates: TaxRate[] = (i.defaultTaxRates || []).map((tr) => convertApiTaxRate(tr));\n const appliedBundles: AppliedBundle[] = (i.appliedBundles || []).map((at) => convertApiAppliedBundle(at));\n\n return {\n id: i.id || '',\n number: i.number || '',\n customerId: i.customerId || '',\n customerName: i.customerName || '',\n contactId: i.contactId || '',\n status: convertApiStatus(i.status),\n subtotal: i.subtotal || 0,\n total: i.total || 0,\n discountTotal: i.amountDiscount || 0,\n paid: i.paid.valueOf() !== zeroDate ? i.paid : null,\n issued: i.issued.valueOf() !== zeroDate ? i.issued : null,\n due: i.due.valueOf() !== zeroDate ? i.due : null,\n created: i.created.valueOf() !== zeroDate ? i.created : null,\n updated: i.updated.valueOf() !== zeroDate ? i.updated : null,\n items: invoiceItems || [],\n currency: currencyFromApi(i.currency),\n orderId: i.orderId || '',\n appliedTaxes: appliedTaxes || [],\n defaultTaxRates: taxRates || [],\n appliedBundles: appliedBundles || [],\n origin: convertApiOrigin(i.origin),\n collectionMethod: collectionMethodFromApi(i.collectionMethod),\n memo: i.memo || '',\n defaultPaymentMethod: i.defaultPaymentMethod || '',\n customerAddress: convertApiCustomerAddress(i.customerAddress),\n externalCustomerIdentifier: i.externalCustomerIdentifier || '',\n };\n}\n\nexport function listInvoiceFiltersToApi(filters: ListInvoicesFilter): ListInvoicesRequestFilters {\n return new ListInvoicesRequestFilters({\n ...filters,\n statuses: (filters.statuses || []).map(s => invoiceStatusToApi(s)),\n dateFilter: {\n dateGte: filters.dateFilter?.dateGte,\n dateLte: filters.dateFilter?.dateLte,\n dateField: invoiceDateFilterFieldToApi(filters.dateFilter?.dateField),\n }\n });\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport {\n GetRetailCustomerConfigurationRequest,\n GetRetailCustomerConfigurationResponse,\n RetailCustomerConfigurationApiService,\n UpsertRetailCustomerConfigurationRequest,\n} from '../_internal';\nimport {\n CollectionMethod,\n collectionMethodToApi,\n RetailCustomerConfiguration,\n retailCustomerConfigurationFromApi,\n} from './retail-customer-configuration';\n\n@Injectable({providedIn: 'root'})\nexport class RetailCustomerConfigurationService {\n constructor(\n private configApiService: RetailCustomerConfigurationApiService,\n ) {}\n\n get(merchantId: string, customerId: string): Observable<RetailCustomerConfiguration> {\n const req = new GetRetailCustomerConfigurationRequest({\n merchantId,\n customerId\n });\n return this.configApiService.get(req).pipe(\n map((resp: GetRetailCustomerConfigurationResponse) => retailCustomerConfigurationFromApi(resp.configuration))\n );\n }\n\n upsert(\n merchantId: string,\n customerId: string,\n contactId: string,\n autoPost: boolean,\n autoGenerate: boolean,\n collectionMethod: CollectionMethod,\n invoiceDay: number,\n useTemplateInvoice: boolean,\n ): Observable<null> {\n const req = new UpsertRetailCustomerConfigurationRequest({\n merchantId,\n customerId,\n contactId,\n autoPost,\n autoGenerate,\n collectionMethod: collectionMethodToApi(collectionMethod),\n invoiceDay,\n useTemplateInvoice\n });\n return this.configApiService.upsert(req).pipe(\n mapTo(null)\n );\n }\n}\n\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, share } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport { currencyFromApi } from '../pricing';\nimport {\n CollectionMethod,\n collectionMethodToApi,\n} from '../retail-customer-configuration';\nimport { HostService } from '../_generated';\nimport {\n AddBundleRequest,\n AddBundleResponse,\n AddLineItemRequest,\n AddLineItemResponse,\n ChargeInvoiceRequest,\n CreateInvoiceRequest,\n CreateInvoiceResponse,\n Currency,\n DeleteInvoiceRequest,\n DeleteLineItemRequest,\n DeleteLineItemResponse,\n DuplicateInvoiceRequest,\n DuplicateInvoiceResponse,\n FieldMask,\n GetInvoiceRequest,\n GetInvoiceResponse,\n Invoice as ApiInvoice,\n InvoiceApiService,\n ListInvoicesRequest,\n PagedRequestOptions,\n PayInvoiceRequest,\n RemoveBundleRequest,\n RemoveBundleResponse,\n SendInvoiceRequest,\n UpdateBundleRequest,\n UpdateBundleResponse,\n UpdateDefaultTaxRatesRequest,\n UpdateDefaultTaxRatesResponse,\n UpdateInvoiceRequest,\n UpdateInvoiceResponse,\n UpdateLineItemRequest,\n UpdateLineItemResponse,\n VoidInvoiceRequest,\n} from '../_internal';\nimport { convertApiInvoice, Invoice, listInvoiceFiltersToApi } from './invoice';\nimport { ListInvoicesFilter } from './list-invoice';\n\n@Injectable({providedIn: 'root'})\nexport class InvoiceService {\n constructor(\n private hostService: HostService,\n private http: HttpClient,\n private invoiceApiService: InvoiceApiService,\n ) {\n }\n\n addBundle(merchantId: string, invoiceId: string, bundleId: string): Observable<Invoice> {\n return this.invoiceApiService.addBundle(new AddBundleRequest(\n {\n merchantId,\n invoiceId,\n bundleId,\n }\n )).pipe(\n map((res: AddBundleResponse) => convertApiInvoice(res.invoice))\n );\n }\n\n addLineItem(merchantId: string, invoiceId: string, sku: string, amount: number, quantity: number,\n description: string, taxRates: string[]): Observable<Invoice> {\n return this.invoiceApiService.addLineItem(new AddLineItemRequest({\n merchantId,\n invoiceId,\n sku,\n amount,\n quantity,\n description,\n taxRates\n })).pipe(map((res: AddLineItemResponse) => convertApiInvoice(res.invoice)))\n }\n\n charge(merchantId: string, customerId: string, invoiceId: string, paymentMethodId: string): Observable<HttpResponse<null>> {\n return this.invoiceApiService.charge(new ChargeInvoiceRequest({\n merchantId,\n customerId,\n invoiceId,\n paymentMethodId\n }));\n }\n\n create(merchantId: string, customerId: string, orderId?: string, currencyCode?: string): Observable<string> {\n return this.invoiceApiService.create(new CreateInvoiceRequest({\n merchantId: merchantId,\n customerId: customerId,\n orderId: orderId,\n currencyCode: currencyCode\n })).pipe(map(\n (res: CreateInvoiceResponse) => res ? res.invoiceId : ''\n ))\n }\n\n delete(merchantId: string, invoiceId: string): Observable<HttpResponse<null>> {\n return this.invoiceApiService.delete(new DeleteInvoiceRequest({\n merchantId,\n invoiceId\n }));\n }\n\n deleteLineItem(merchantId: string, invoiceId: string, id: string): Observable<Invoice> {\n return this.invoiceApiService.deleteLineItem(new DeleteLineItemRequest({\n merchantId,\n invoiceId,\n id,\n })).pipe(map((res: DeleteLineItemResponse) => convertApiInvoice(res.invoice)))\n }\n\n exportCSV(merchantId: string, filters?: ListInvoicesFilter): Observable<Blob> {\n const url = `${this.hostService.httpsHostWithScheme()}/invoice/export`;\n return this.http.post(url, {\n merchant_id: merchantId,\n filters: filters\n }, {\n observe: 'body',\n responseType: 'blob',\n withCredentials: true\n }).pipe(\n share(),\n );\n }\n\n generatePDF(merchantId: string, invoiceId: string, documentType: string): Observable<Blob> {\n const url = `${this.hostService.httpsHostWithScheme()}/invoice/generate-pdf`;\n return this.http.post(url, {\n merchant_id: merchantId, invoice_id: invoiceId, document_type: documentType\n }, {\n observe: 'body',\n responseType: 'blob',\n }).pipe(\n share(),\n );\n }\n\n get(merchantId: string, invoiceId: string): Observable<Invoice> {\n return this.invoiceApiService.get(new GetInvoiceRequest({\n merchantId, invoiceId\n })).pipe(map((res: GetInvoiceResponse) => convertApiInvoice(res.invoice)))\n }\n\n list(filters: ListInvoicesFilter, cursor: string, pageSize: number): Observable<PagedResponse<Invoice>> {\n const req = new ListInvoicesRequest({\n filters: listInvoiceFiltersToApi(filters),\n pagingOptions: new PagedRequestOptions({cursor, pageSize}),\n });\n return this.invoiceApiService.list(req).pipe(\n map(response => {\n const invoices = (response.invoices || []).map(item => convertApiInvoice(item));\n return new PagedResponse(invoices, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n pay(merchantId: string, invoiceId: string): Observable<HttpResponse<null>> {\n return this.invoiceApiService.pay(new PayInvoiceRequest({\n merchantId,\n invoiceId\n }));\n }\n\n preview(merchantId: string, invoiceId: string): Observable<string> {\n const url = `${this.hostService.httpsHostWithScheme()}/retail-invoice/preview`;\n return this.http.post(url,\n {\n merchant_id: merchantId,\n invoice_id: invoiceId\n },\n {\n responseType: 'text',\n withCredentials: true\n });\n }\n\n removeBundle(merchantId: string, invoiceId: string, bundleId: string, bundleInstanceId?: string): Observable<Invoice> {\n return this.invoiceApiService.removeBundle(new RemoveBundleRequest(\n {\n merchantId,\n invoiceId,\n bundleId,\n bundleInstanceId,\n }\n )).pipe(\n map((res: RemoveBundleResponse) => convertApiInvoice(res.invoice))\n );\n }\n\n send(merchantId: string, invoiceId: string, emailAddresses: string[]): Observable<HttpResponse<null>> {\n return this.invoiceApiService.send(new SendInvoiceRequest({\n merchantId, invoiceId, emailAddresses\n }));\n }\n\n updateBundle(merchantId: string, invoiceId: string, bundleId: string, hideBundleItems: boolean,\n bundleInstanceId?: string): Observable<Invoice> {\n return this.invoiceApiService.updateBundle(new UpdateBundleRequest({\n merchantId,\n invoiceId,\n bundleId,\n hideBundleItems,\n bundleInstanceId,\n })).pipe(map((res: UpdateBundleResponse) => convertApiInvoice(res.invoice)))\n }\n\n updateCurrency(merchantId: string, id: string, currency: Currency): Observable<Invoice> {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n currency: currencyFromApi(currency),\n });\n\n const fm = new FieldMask({\n paths: ['currency']\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateDueDate(merchantId: string, id: string, due: Date): Observable<Invoice> {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n due,\n });\n\n const fm = new FieldMask({\n paths: ['due']\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateContact(merchantId: string, id: string, contactId: string): Observable<Invoice> {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n contactId,\n });\n\n const fm = new FieldMask({\n paths: ['contactId']\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateCollectionMethod(merchantId: string, id: string, collectionMethod: CollectionMethod): Observable<Invoice> {\n const apiCollectionMethod = collectionMethodToApi(collectionMethod)\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n collectionMethod: apiCollectionMethod,\n });\n\n const fm = new FieldMask({\n paths: ['collectionMethod']\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateMemo(merchantId: string, id: string, memo: string): Observable<Invoice> {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n memo,\n });\n\n const fm = new FieldMask({\n paths: ['memo']\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateDefaultPaymentMethod(merchantId: string, id: string, defaultPaymentMethod: string): Observable<Invoice> {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n defaultPaymentMethod,\n });\n\n const fm = new FieldMask({\n paths: ['defaultPaymentMethod']\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateDefaultTaxes(merchantId: string, invoiceId: string, taxRateIds: string[]): Observable<Invoice> {\n return this.invoiceApiService.updateDefaultTaxRates(new UpdateDefaultTaxRatesRequest({\n merchantId,\n invoiceId,\n taxRateIds\n })).pipe(map((res: UpdateDefaultTaxRatesResponse) => convertApiInvoice(res.invoice)))\n }\n\n updateLineItem(merchantId: string, invoiceId: string, id: string, sku: string, amount: number, quantity: number,\n description: string, taxRates: string[]): Observable<Invoice> {\n return this.invoiceApiService.updateLineItem(new UpdateLineItemRequest({\n merchantId,\n invoiceId,\n id,\n sku,\n amount,\n quantity,\n description,\n taxRates\n })).pipe(map((res: UpdateLineItemResponse) => convertApiInvoice(res.invoice)))\n }\n\n private update(invoice: ApiInvoice, mask: FieldMask): Observable<Invoice> {\n return this.invoiceApiService.update(new UpdateInvoiceRequest({\n invoice: invoice,\n fieldMask: mask\n })).pipe(map((res: UpdateInvoiceResponse) => convertApiInvoice(res.invoice)));\n }\n\n void(merchantId: string, invoiceId: string): Observable<HttpResponse<null>> {\n return this.invoiceApiService.void(new VoidInvoiceRequest({\n merchantId,\n invoiceId\n }));\n }\n\n duplicate(merchantId: string, invoiceId: string): Observable<string> {\n return this.invoiceApiService.duplicate(new DuplicateInvoiceRequest({\n merchantId,\n invoiceId\n })).pipe(map(\n (res: DuplicateInvoiceResponse) => res ? res.invoiceId : ''\n ));\n }\n}\n","import { AppliedBundle, convertApiAppliedBundle } from '../applied_bundle';\nimport { AppliedDiscount } from '../applied_discount';\nimport { appliedDiscountFromApi } from '../applied_discount/applied_discount';\nimport {\n AppliedTaxRate,\n convertApiAppliedTaxRate,\n convertApiTaxRate,\n} from '../invoice/invoice';\nimport { Currency, currencyFromApi } from '../pricing/currency';\nimport { TaxRate } from '../tax-rate/tax-rate';\nimport {\n AppliedTaxRateInterface,\n InvoiceTemplate as APIInvoiceTemplate,\n InvoiceTemplateItem as APIInvoiceTemplateItem,\n TaxRateInterface,\n} from '../_internal';\n\nexport interface InvoiceTemplate {\n merchantId: string;\n customerId: string;\n items: InvoiceTemplateItem[];\n appliedTaxes: AppliedTaxRate[];\n currency: Currency;\n total: number;\n subtotal: number;\n discountTotal: number;\n created: Date;\n updated: Date;\n defaultTaxRates: TaxRate[];\n appliedBundles: AppliedBundle[];\n}\n\nexport interface InvoiceTemplateItem {\n id?: string;\n sku?: string;\n unitPrice?: number;\n quantity?: number;\n description?: string;\n total?: number;\n appliedTaxes?: AppliedTaxRateInterface[];\n taxRates?: TaxRateInterface[];\n subtotal?: number;\n appliedDiscounts?: AppliedDiscount[];\n bundleId?: string;\n}\n\nexport function convertApiInvoiceTemplate(t: APIInvoiceTemplate): InvoiceTemplate {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n const appliedBundles: AppliedBundle[] = (t?.appliedBundles || []).map(ab => convertApiAppliedBundle(ab));\n\n\n return {\n merchantId: t.merchantId,\n customerId: t.customerId,\n currency: currencyFromApi(t.currency),\n items: (t.items || []).map(item => convertApiInvoiceTemplateItem(item)),\n appliedTaxes: (t.appliedTaxes || []).map((at) => convertApiAppliedTaxRate(at)),\n total: t.total || 0,\n subtotal: t.subtotal || 0,\n created: t.created.valueOf() !== zeroDate ? t.created : null,\n updated: t.updated.valueOf() !== zeroDate ? t.updated : null,\n defaultTaxRates: (t.defaultTaxRates || []).map((tr) => convertApiTaxRate(tr)),\n appliedBundles: appliedBundles || [],\n discountTotal: t.amountDiscount || 0\n } as InvoiceTemplate\n}\n\nexport function convertApiInvoiceTemplateItem(item: APIInvoiceTemplateItem): InvoiceTemplateItem {\n const appliedDiscounts: AppliedDiscount[] = (item?.discounts || []).map(ad => appliedDiscountFromApi(ad));\n\n return {\n sku: item?.sku,\n unitPrice: item?.unitPrice || 0,\n quantity: item?.quantity || 0,\n description: item?.description,\n total: item?.total || 0,\n appliedTaxes: item?.appliedTaxes || [],\n taxRates: item?.taxRates || [],\n subtotal: item?.subtotal || 0,\n bundleId: item?.bundleId || '',\n appliedDiscounts: appliedDiscounts || [],\n } as InvoiceTemplateItem\n}\n","import {GetPayoutSummaryResponse} from '../_internal';\n\nexport enum PayoutInterval {\n Daily = 'daily',\n Weekly = 'weekly',\n Monthly = 'monthly',\n}\n\nexport interface PayoutSummary {\n nextInTransitPayout: Date,\n balances: PayoutBalance[];\n payoutInterval: PayoutInterval;\n payoutDelayDays: number;\n}\n\nexport interface PayoutBalance {\n currencyCode: string;\n futurePayouts: number;\n inTransit: number;\n}\n\nexport function payoutSummaryFromAPI(proto: GetPayoutSummaryResponse): PayoutSummary {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n return {\n nextInTransitPayout: proto.nextInTransitPayoutExpectedDate.valueOf() !== zeroDate ? proto.nextInTransitPayoutExpectedDate : null,\n payoutInterval: payoutIntervalFromAPI(proto.payoutInterval),\n payoutDelayDays: proto.payoutDelayDays,\n balances: (proto.balances || []).map(balance => ({\n currencyCode: balance.currencyCode,\n amount: balance.amount || 0,\n futurePayouts: balance.futurePayouts || 0,\n inTransit: balance.inTransit || 0,\n }))\n }\n}\n\n\nexport function payoutIntervalFromAPI(proto: string): PayoutInterval {\n switch (proto) {\n case 'daily':\n return PayoutInterval.Daily;\n case 'weekly':\n return PayoutInterval.Weekly;\n case 'monthly':\n return PayoutInterval.Monthly;\n }\n return null\n\n}\n","import {\n DefaultCustomerConfiguration as ApiDefaultCustomerConfiguration,\n DefaultCustomerConfigurationInterface,\n RetailConfiguration as ApiRetailConfiguration,\n} from '../_internal';\nimport {\n CollectionMethod,\n collectionMethodFromApi,\n collectionMethodToApi,\n} from '../retail-customer-configuration';\n\nexport interface RetailConfiguration {\n merchantId: string;\n retailGroupId: string;\n currencyCode: string;\n currencyConversionRate: number;\n defaultCustomerConfiguration?: DefaultCustomerConfiguration;\n}\n\nexport interface DefaultCustomerConfiguration {\n generateMethod: GenerateMethod;\n collectionMethod: CollectionMethod;\n invoiceDay: number;\n}\n\nexport enum GenerateMethod {\n UNSET = 'Unset',\n SUBSCRIPTION = 'Subscription',\n TEMPLATE = 'Template',\n}\n\nexport function generateMethodToApi(m: GenerateMethod): string {\n switch (m) {\n case GenerateMethod.SUBSCRIPTION:\n return 'subscription';\n case GenerateMethod.TEMPLATE:\n return 'template';\n default:\n return '';\n }\n}\n\nexport function generateMethodFromApi(m: string): GenerateMethod {\n switch (m) {\n case 'subscription':\n return GenerateMethod.SUBSCRIPTION;\n case 'template':\n return GenerateMethod.TEMPLATE;\n default:\n return GenerateMethod.UNSET;\n }\n}\n\nexport function retailConfigurationFromApi(proto: ApiRetailConfiguration): RetailConfiguration {\n return {\n merchantId: proto.merchantId,\n retailGroupId: proto.retailGroupId,\n currencyCode: proto.currencyCode,\n currencyConversionRate: proto.currencyConversionRate || 0,\n defaultCustomerConfiguration: defaultCustomerConfigurationFromApi(proto.defaultCustomerConfiguration),\n }\n}\n\nexport function defaultCustomerConfigurationFromApi(proto: ApiDefaultCustomerConfiguration): DefaultCustomerConfiguration {\n if (!proto) {\n return null;\n }\n return {\n generateMethod: generateMethodFromApi(proto.generateMethod),\n collectionMethod: collectionMethodFromApi(proto.collectionMethod),\n invoiceDay: proto.invoiceDay,\n }\n}\n\nexport function defaultCustomerConfigurationToApi(c: DefaultCustomerConfiguration): DefaultCustomerConfigurationInterface {\n if (!c) {\n return null;\n }\n return {\n generateMethod: generateMethodToApi(c.generateMethod),\n collectionMethod: collectionMethodToApi(c.collectionMethod),\n invoiceDay: c.invoiceDay,\n } as ApiDefaultCustomerConfiguration;\n}\n","import {HttpClient, HttpResponse} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {catchError, map, mapTo, share} from 'rxjs/operators';\nimport {PagedResponse, SortDirection} from '../core';\nimport {handleCsvError} from '../http-shared/error-handlers';\nimport {currencyFromApi} from '../pricing';\nimport {HostService} from '../_generated';\nimport {\n CreateStripeExternalAccountRequest,\n GetMerchantRequest,\n GetMultiRetailConfigurationsRequest,\n GetMultiRetailConfigurationsResponse,\n GetOutstandingBalanceRequest,\n GetPayoutSummaryRequest,\n GetRetailPayoutRequest,\n GetStatisticsRequest,\n GetStatisticsResponse,\n ListRetailPayoutsRequest,\n ListRetailPayoutsResponse,\n MerchantApiService,\n PagedRequestOptions,\n PagedRequestOptionsInterface,\n RetailPayout,\n SearchMerchantsRequestSortBy as SortByApi,\n SortDirection as SortDirectionApi,\n UpsertDefaultRetailCustomerConfigurationRequest,\n UpsertRetailConfigurationRequest,\n} from '../_internal';\nimport {Balance} from './balance';\nimport {Merchant, MerchantFromAPI} from './merchant';\nimport {DownloadMerchantsCsvRequest} from './merchant.interface';\nimport {PayoutSummary, payoutSummaryFromAPI} from './payout-summary';\nimport {\n DefaultCustomerConfiguration,\n defaultCustomerConfigurationToApi,\n RetailConfiguration,\n retailConfigurationFromApi,\n} from './retail-configuration';\n\n/**\n * @enum SortMerchantsBy\n * Names should match corresponding field in Merchant interface.\n * Values should match ../_internal/enums/SortBy\n */\nexport enum SortMerchantsBy {\n merchantId = 0,\n companyName,\n contactName,\n emailAddress,\n country,\n state,\n created,\n updated\n}\n\n@Injectable({providedIn: 'root'})\nexport class MerchantService {\n constructor(private merchantApi: MerchantApiService, private hostService: HostService, private http: HttpClient) { }\n\n get(merchantId: string): Observable<Merchant> {\n const req = new GetMerchantRequest({ merchantId });\n return this.merchantApi.get(req).pipe(map(resp => MerchantFromAPI(resp.merchant)));\n }\n\n create(\n merchantId: string, address: string, city: string, state: string, country: string, zipCode: string, emailAddress: string,\n phoneNumber: string, contactName: string, companyName: string, additionalEmailAddresses?: string[]\n ): Observable<boolean> {\n return this.merchantApi.create({\n merchantId,\n address,\n city,\n state,\n country,\n zipCode,\n emailAddress,\n phoneNumber,\n contactName,\n companyName,\n additionalEmailAddresses\n }).pipe(\n mapTo(true)\n );\n }\n\n update(\n merchantId: string, address: string, city: string, state: string, country: string, zipCode: string, emailAddress: string,\n phoneNumber: string, contactName: string, companyName: string, additionalEmailAddresses?: string[]\n ): Observable<boolean> {\n return this.merchantApi.update({\n merchantId,\n address,\n city,\n state,\n country,\n zipCode,\n emailAddress,\n phoneNumber,\n contactName,\n companyName,\n additionalEmailAddresses\n }).pipe(\n mapTo(true)\n );\n }\n\n getOutstandingBalance(merchantId: string): Observable<Balance> {\n const req = new GetOutstandingBalanceRequest({ merchantId });\n return this.merchantApi.getOutstandingBalance(req).pipe(\n map(r => ({\n outstanding: r.outstandingBalance || 0,\n currency: currencyFromApi(r.currency)\n }))\n );\n }\n\n getStatistics(merchantId: string): Observable<GetStatisticsResponse> {\n const req = new GetStatisticsRequest({ merchantId });\n return this.merchantApi.getStatistics(req);\n }\n\n search(\n searchTerm: string, sortBy: SortMerchantsBy, sortDirection: SortDirection, pagingOptions: PagedRequestOptionsInterface\n ): Observable<PagedResponse<Merchant>> {\n return this.merchantApi.search({\n searchTerm: searchTerm,\n sortBy: SortByApi[SortByApi[sortBy]],\n sortDirection: SortDirectionApi[SortDirectionApi[sortDirection]],\n pagingOptions: new PagedRequestOptions(pagingOptions)\n }).pipe(\n map(r => new PagedResponse(r.merchants.map(m => MerchantFromAPI(m)), r.pagingMetadata.nextCursor, r.pagingMetadata.hasMore))\n );\n }\n\n setAutoPostInvoices(merchantId: string, autoPostInvoices: boolean): Observable<boolean> {\n return this.merchantApi.setAutoPostInvoices({\n merchantId: merchantId,\n shouldAutoPostInvoices: autoPostInvoices\n }).pipe(\n mapTo(true)\n );\n }\n\n setAutoChargeInvoices(merchantId: string, autoChargeInvoices: boolean): Observable<boolean> {\n return this.merchantApi.setAutoChargeInvoices({\n merchantId, autoChargeInvoices\n }).pipe(\n mapTo(true)\n );\n }\n\n downloadCsv(r: DownloadMerchantsCsvRequest): Observable<Blob> {\n const queryParams = `?filename=${r.filename}`;\n return this.http.get(\n this.hostService.httpsHostWithScheme() + '/merchants-csv' + queryParams,\n this.apiOptions()\n ).pipe(\n catchError(handleCsvError)\n );\n }\n\n setIncludeInFinancialRecords(merchantId: string, includeInFinancialRecords: boolean): Observable<boolean> {\n return this.merchantApi.setIncludeInFinancialRecords({\n merchantId: merchantId,\n includeInFinancialRecords: includeInFinancialRecords\n }).pipe(\n mapTo(true)\n );\n }\n\n sendSalesInvoiceEmail(merchantId: string, invoiceId: string): Observable<boolean> {\n return this.merchantApi.sendSalesInvoiceEmail({\n merchantId: merchantId,\n invoiceId: invoiceId\n }).pipe(\n mapTo(true)\n )\n }\n\n chargeSalesInvoice(merchantId: string, invoiceId: string, amount: number): Observable<boolean> {\n return this.merchantApi.chargeSalesInvoice({\n merchantId,\n invoiceId,\n amount\n }).pipe(\n mapTo(true)\n )\n }\n\n sendSalesInvoiceReceiptEmail(merchantId: string, invoiceId: string): Observable<boolean> {\n return this.merchantApi.sendSalesInvoiceReceiptEmail({\n merchantId: merchantId,\n invoiceId: invoiceId\n }).pipe(\n mapTo(true)\n )\n }\n\n private apiOptions(): { responseType: 'blob', withCredentials: boolean } {\n return {\n responseType: 'blob',\n withCredentials: true\n }\n }\n\n createExternalAccount(merchantId: string, stripeToken: string): Observable<boolean> {\n return this.merchantApi.createStripeExternalAccount(new CreateStripeExternalAccountRequest({\n merchantId,\n stripeToken,\n })).pipe(\n mapTo(true)\n );\n }\n\n generateAccountBalanceReport(merchantId: string): Observable<Blob> {\n const queryParams = `?merchantID=${merchantId}`;\n return this.http.get(\n this.hostService.httpsHostWithScheme() + '/merchant-balance-details-report' + queryParams,\n this.apiOptions()\n ).pipe(\n share(),\n catchError(handleCsvError)\n );\n }\n\n getMultiRetailConfigurations(merchantId: string, retailGroupIds: string[]): Observable<Map<string, RetailConfiguration>> {\n const request = new GetMultiRetailConfigurationsRequest({\n merchantId,\n retailGroupIds\n });\n return this.merchantApi.getMultiRetailConfigurations(request).pipe(\n map((resp: GetMultiRetailConfigurationsResponse) => {\n const configMap = new Map<string, RetailConfiguration>();\n retailGroupIds.forEach(groupId => {\n configMap.set(groupId, retailConfigurationFromApi(resp.retailConfigurations[groupId]));\n });\n return configMap\n })\n )\n }\n\n upsertRetailConfiguration(\n merchantId: string,\n retailGroupId: string,\n currencyCode: string,\n currencyConversionRate?: number,\n ): Observable<null> {\n const request = new UpsertRetailConfigurationRequest({\n merchantId,\n retailGroupId,\n currencyCode,\n currencyConversionRate,\n });\n return this.merchantApi.upsertRetailConfiguration(request).pipe(mapTo(null));\n }\n\n getPayoutSummary(merchantId: string): Observable<PayoutSummary> {\n return this.merchantApi.getPayoutSummary(new GetPayoutSummaryRequest({\n merchantId,\n })).pipe(map(resp => payoutSummaryFromAPI(resp)));\n }\n\n getRetailPayout(merchantId: string, payoutId: string): Observable<RetailPayout> {\n return this.merchantApi.getRetailPayout(new GetRetailPayoutRequest({\n merchantId,\n payoutId,\n })).pipe(map(resp => resp.payout))\n }\n\n listRetailPayouts(merchantId: string, cursor: string = '', pageSize: number = 10): Observable<PagedResponse<RetailPayout>> {\n return this.merchantApi.listRetailPayouts(new ListRetailPayoutsRequest({\n merchantId: merchantId,\n pagingOptions: new PagedRequestOptions({cursor, pageSize}),\n })).pipe(\n map((resp: ListRetailPayoutsResponse) => {\n const retailPayouts = (resp.payouts || []);\n return new PagedResponse(retailPayouts, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n })\n );\n }\n\n /**\n * Updates the default retail customer configuration for a given merchant and group ID\n * @param merchantId - the merchant to update for\n * @param retailGroupId - the group ID to update for\n * @param defaultCustomerConfiguration - the default customer configuration to apply. If `null`, the merchant/group will have no defaults\n */\n upsertDefaultRetailCustomerConfiguration(\n merchantId: string,\n retailGroupId: string,\n defaultCustomerConfiguration?: DefaultCustomerConfiguration\n ): Observable<HttpResponse<null>> {\n return this.merchantApi.upsertDefaultRetailCustomerConfiguration(\n new UpsertDefaultRetailCustomerConfigurationRequest({\n merchantId,\n retailGroupId,\n defaultCustomerConfiguration: defaultCustomerConfigurationToApi(defaultCustomerConfiguration),\n })\n );\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { appliedDiscountToApi } from '../applied_discount/applied_discount';\nimport {\n AddTemplateBundleRequest,\n AddTemplateBundleResponse,\n AppliedDiscountInterface,\n DeleteInvoiceTemplateRequest,\n GetInvoiceTemplateRequest,\n InvoiceTemplateApiService,\n UpdateTemplateBundleRequest,\n UpdateTemplateBundleResponse,\n UpdateTemplateDefaultTaxRatesRequest,\n UpsertInvoiceTemplateRequest,\n UpsertInvoiceTemplateRequestInvoiceTemplateItemRequest,\n} from '../_internal';\nimport {\n convertApiInvoiceTemplate,\n InvoiceTemplate,\n InvoiceTemplateItem,\n} from './invoice-template';\n\n@Injectable({providedIn: 'root'})\nexport class InvoiceTemplateService {\n constructor(private invoiceTemplateApiService: InvoiceTemplateApiService) {\n }\n\n upsert(\n merchantId: string,\n customerId: string,\n items: InvoiceTemplateItem[],\n defaultTaxRates: string[],\n ): Observable<InvoiceTemplate> {\n const itemsRequest: UpsertInvoiceTemplateRequestInvoiceTemplateItemRequest[] = (items || []).map(item => {\n const appliedDiscounts: AppliedDiscountInterface[] = (item.appliedDiscounts || []).map((ad) => appliedDiscountToApi(ad));\n return new UpsertInvoiceTemplateRequestInvoiceTemplateItemRequest({\n sku: item.sku,\n unitPrice: item.unitPrice,\n quantity: item.quantity,\n description: item.description,\n taxRates: (item.taxRates || []).map(r => r.id),\n bundleId: item.bundleId,\n appliedDiscounts: appliedDiscounts\n })\n })\n\n const req = new UpsertInvoiceTemplateRequest({\n merchantId: merchantId,\n customerId: customerId,\n items: itemsRequest || [],\n defaultTaxRates: defaultTaxRates,\n });\n return this.invoiceTemplateApiService.upsert(req).pipe(\n map(resp => convertApiInvoiceTemplate(resp?.invoiceTemplate))\n );\n }\n\n get(merchantId: string, customerId: string): Observable<InvoiceTemplate> {\n const req = new GetInvoiceTemplateRequest({\n merchantId,\n customerId\n });\n return this.invoiceTemplateApiService.get(req).pipe(\n map(resp => convertApiInvoiceTemplate(resp?.invoiceTemplate))\n );\n }\n\n delete(merchantId: string, customerId: string): Observable<HttpResponse<null>> {\n const req = new DeleteInvoiceTemplateRequest({\n merchantId,\n customerId\n });\n return this.invoiceTemplateApiService.delete(req);\n }\n\n updateDefaultTaxRates(merchantId: string, customerId: string, taxRateIds: string[]): Observable<InvoiceTemplate> {\n const req = new UpdateTemplateDefaultTaxRatesRequest({\n customerId: customerId,\n merchantId: merchantId,\n taxRateIds: taxRateIds,\n });\n return this.invoiceTemplateApiService.updateTemplateDefaultTaxRates(req).pipe(\n map(resp => convertApiInvoiceTemplate(resp?.invoiceTemplate))\n );\n }\n\n addBundle(merchantId: string, customerId: string, bundleId: string): Observable<InvoiceTemplate> {\n return this.invoiceTemplateApiService.addBundle(new AddTemplateBundleRequest({\n merchantId,\n customerId,\n bundleId,\n })).pipe(\n map((resp: AddTemplateBundleResponse) => convertApiInvoiceTemplate(resp?.invoiceTemplate))\n );\n }\n\n updateBundle(merchantId: string, customerId: string, bundleId: string, hideBundleItems: boolean): Observable<InvoiceTemplate> {\n return this.invoiceTemplateApiService.updateBundle(new UpdateTemplateBundleRequest({\n merchantId,\n customerId,\n bundleId,\n hideBundleItems,\n })).pipe(\n map((resp: UpdateTemplateBundleResponse) => convertApiInvoiceTemplate(resp?.invoiceTemplate))\n );\n }\n}\n","import {Merchant as ApiMerchant} from '../_internal';\n\nexport interface Merchant {\n merchantId: string;\n address: string;\n city: string;\n state: string;\n country: string;\n zipCode: string;\n emailAddress: string;\n phoneNumber: string;\n contactName: string;\n companyName: string;\n autoPostInvoices: boolean;\n autoChargeInvoices: boolean;\n includeInFinancialRecords: boolean;\n additionalEmailAddresses: string[];\n stripeConnectId: string;\n}\n\nexport function MerchantFromAPI(proto: ApiMerchant): Merchant {\n return {\n merchantId: proto.merchantId,\n address: proto.address,\n city: proto.city,\n state: proto.state,\n country: proto.country,\n zipCode: proto.zipCode,\n emailAddress: proto.emailAddress,\n phoneNumber: proto.phoneNumber,\n contactName: proto.contactName,\n companyName: proto.companyName,\n autoPostInvoices: proto.autoPostInvoices,\n autoChargeInvoices: proto.autoChargeInvoices,\n includeInFinancialRecords: proto.includeInFinancialRecords,\n additionalEmailAddresses: proto.additionalEmailAddresses || [],\n stripeConnectId: proto.stripeAccountId,\n }\n}\n","import {\n Dispute as DisputeApi,\n DisputeEvidence as DisputeEvidenceApi,\n DisputeEvidenceDetails as DisputeEvidenceDetailsApi,\n DisputeStatus as DisputeStatusApi,\n File as FileApi,\n} from '../_internal';\n\nexport enum DisputeStatus {\n WARNING_NEEDS_RESPONSE = 'Warning Needs Response',\n WARNING_UNDER_REVIEW = 'Warning Under Review',\n WARNING_CLOSED = 'Warning Closed',\n NEEDS_RESPONSE = 'Needs Response',\n UNDER_REVIEW = 'Under Review',\n CHARGE_REFUNDED = 'Charge Refunded',\n LOST = 'Lost',\n WON = 'Won'\n}\n\nexport interface Dispute {\n id: string;\n paymentId: string;\n status: DisputeStatus;\n amount: number;\n created: Date;\n currencyCode: string;\n evidence: DisputeEvidence;\n evidenceDetails: DisputeEvidenceDetails;\n isChargeRefundable: boolean;\n reason: string;\n fee: number;\n feeCurrencyCode: string;\n}\n\nexport interface DisputeEvidence {\n customerCommunication: File;\n customerSignature: File;\n shippingDocumentation: File;\n receipt: File;\n uncategorizedFile: File;\n billingAddress: string;\n customerEmailAddress: string;\n customerName: string;\n productDescription: string;\n}\n\nexport interface DisputeEvidenceRequest {\n billingAddress?: string;\n customerEmailAddress?: string;\n customerName?: string;\n productDescription?: string;\n customerSignatureFileId?: string;\n customerCommunicationFileId?: string;\n receiptFileId?: string;\n shippingDocumentationFileId?: string;\n uncategorizedFileId?: string;\n}\n\nexport interface File {\n created: Date;\n id: string;\n filename: string;\n url: string;\n}\n\nexport interface DisputeEvidenceDetails {\n dueBy: Date;\n hasEvidence: boolean;\n pastDue: boolean;\n submissionCount: number;\n}\n\nexport function disputeFromApi(dispute: DisputeApi): Dispute {\n if (!dispute) {\n return null;\n }\n return {\n id: dispute.id || '',\n paymentId: dispute.paymentId || '',\n status: disputeStatusFromApi(dispute.status),\n amount: dispute.amount || 0,\n created: dispute.created,\n currencyCode: dispute.currencyCode,\n evidence: disputeEvidenceFromApi(dispute.evidence),\n evidenceDetails: disputeEvidenceDetailsFromApi(dispute.evidenceDetails),\n isChargeRefundable: dispute.isChargeRefundable || false,\n reason: dispute.reason || '',\n fee: dispute.fee,\n feeCurrencyCode: dispute.feeCurrencyCode,\n };\n}\n\nfunction disputeEvidenceFromApi(evidence: DisputeEvidenceApi): DisputeEvidence {\n if (!evidence) {\n return null;\n }\n return {\n customerCommunication: fileFromApi(evidence.customerCommunication),\n customerSignature: fileFromApi(evidence.customerSignature),\n shippingDocumentation: fileFromApi(evidence.shippingDocumentation),\n receipt: fileFromApi(evidence.receipt),\n uncategorizedFile: fileFromApi(evidence.uncategorizedFile),\n billingAddress: evidence.billingAddress || '',\n customerEmailAddress: evidence.customerEmailAddress || '',\n customerName: evidence.customerName || '',\n productDescription: evidence.productDescription || '',\n }\n}\n\nfunction fileFromApi(file: FileApi): File {\n if (!file) {\n return null;\n }\n return {\n id: file.id || '',\n created: file.created,\n filename: file.filename || '',\n url: file.url || '',\n }\n}\n\nfunction disputeEvidenceDetailsFromApi(evidence: DisputeEvidenceDetailsApi): DisputeEvidenceDetails {\n if (!evidence) {\n return null;\n }\n return {\n dueBy: evidence.dueBy,\n hasEvidence: evidence.hasEvidence,\n pastDue: evidence.pastDue,\n submissionCount: evidence.submissionCount,\n }\n}\n\nexport function disputeStatusFromApi(status: DisputeStatusApi): DisputeStatus {\n switch (status) {\n case DisputeStatusApi.DISPUTE_STATUS_WARNING_NEEDS_RESPONSE:\n return DisputeStatus.WARNING_NEEDS_RESPONSE;\n case DisputeStatusApi.DISPUTE_STATUS_WARNING_UNDER_REVIEW:\n return DisputeStatus.WARNING_UNDER_REVIEW;\n case DisputeStatusApi.DISPUTE_STATUS_WARNING_CLOSED:\n return DisputeStatus.WARNING_CLOSED;\n case DisputeStatusApi.DISPUTE_STATUS_NEEDS_RESPONSE:\n return DisputeStatus.NEEDS_RESPONSE;\n case DisputeStatusApi.DISPUTE_STATUS_UNDER_REVIEW:\n return DisputeStatus.UNDER_REVIEW;\n case DisputeStatusApi.DISPUTE_STATUS_CHARGE_REFUNDED:\n return DisputeStatus.CHARGE_REFUNDED;\n case DisputeStatusApi.DISPUTE_STATUS_LOST:\n return DisputeStatus.LOST;\n case DisputeStatusApi.DISPUTE_STATUS_WON:\n return DisputeStatus.WON;\n default:\n return null;\n }\n}\n","import { PaymentSource as PaymentSourceApi } from '../_internal';\n\nexport enum PaymentSource {\n UNSET = 'Unset',\n STRIPE = 'Stripe',\n VCASH = 'vCash',\n}\n\nexport function paymentSourceFromApi(pApi: PaymentSourceApi): PaymentSource {\n switch (pApi) {\n case PaymentSourceApi.PAYMENT_SOURCE_STRIPE:\n return PaymentSource.STRIPE;\n case PaymentSourceApi.PAYMENT_SOURCE_VCASH:\n return PaymentSource.VCASH;\n default:\n return PaymentSource.UNSET;\n }\n}\n","import { PaymentStatus as PaymentStatusApi } from '../_internal';\n\nexport enum PaymentStatus {\n Unset = 'UNSET',\n Failed = 'FAILED',\n Succeeded = 'SUCCEEDED'\n}\n\nexport function paymentStatusFromApi(psApi: PaymentStatusApi): PaymentStatus {\n switch (psApi) {\n case PaymentStatusApi.PAYMENT_STATUS_FAILED:\n return PaymentStatus.Failed;\n case PaymentStatusApi.PAYMENT_STATUS_SUCCEEDED:\n return PaymentStatus.Succeeded;\n }\n return PaymentStatus.Unset\n}\n","import { PaymentAllocationType as PaymentAllocationTypeApi } from '../_internal';\n\nexport enum PaymentAllocationType {\n UNSET = 'UNSET',\n PURCHASE = 'PURCHASE',\n INVOICE = 'INVOICE',\n}\n\nexport function paymentAllocationTypeFromApi(pApi: PaymentAllocationTypeApi): PaymentAllocationType {\n switch (pApi) {\n case PaymentAllocationTypeApi.PAYMENT_ALLOCATION_TYPE_INVOICE:\n return PaymentAllocationType.INVOICE;\n case PaymentAllocationTypeApi.PAYMENT_ALLOCATION_TYPE_PURCHASE:\n return PaymentAllocationType.PURCHASE;\n default:\n return PaymentAllocationType.UNSET;\n }\n}\n","import { PaymentPaymentAllocationInterface, PaymentInterface } from '../_internal';\nimport { Currency, currencyFromApi } from '../pricing';\nimport { PaymentSource, paymentSourceFromApi } from './payment-source';\nimport { PaymentStatus, paymentStatusFromApi } from './payment-status';\nimport { PaymentAllocationType, paymentAllocationTypeFromApi } from './payment-allocation-type';\n\nexport interface Intent {\n stripeClientSecret?: string;\n intentId?: string;\n}\n\nexport interface ListPaymentsFilter {\n merchantId?: string;\n allocationIds?: string[];\n start?: Date;\n end?: Date;\n}\n\nexport interface Payment {\n merchantId: string;\n created: Date;\n currency: Currency;\n paymentSource: PaymentSource;\n allocations: PaymentAllocation[];\n total: number;\n description: string;\n externalReferenceId: string;\n status: PaymentStatus;\n}\n\nexport interface PaymentAllocation {\n referenceId: string;\n amount: number;\n type: PaymentAllocationType;\n}\n\nexport function paymentFromApi(pApi: PaymentInterface): Payment {\n return {\n merchantId: pApi.merchantId || '',\n created: pApi.created ? new Date(pApi.created) : null,\n currency: pApi.currency ? currencyFromApi(pApi.currency) : Currency.USD,\n paymentSource: paymentSourceFromApi(pApi.paymentSource),\n allocations: pApi.allocations ? pApi.allocations.map(p => paymentAllocationFromApi(p)) : [],\n total: pApi.total || 0,\n description: pApi.description || '',\n externalReferenceId: pApi.externalReferenceId || '',\n status: paymentStatusFromApi(pApi.status)\n }\n};\n\nexport function paymentAllocationFromApi(pApi: PaymentPaymentAllocationInterface): PaymentAllocation {\n return {\n referenceId: pApi.referenceId || '',\n amount: pApi.amount || 0,\n type: pApi.type ? paymentAllocationTypeFromApi(pApi.type) : PaymentAllocationType.UNSET\n }\n}\n\nexport interface RetailProvider {\n statementDescriptor: string;\n stripeConnectId: string;\n}\n\nexport interface DeclineReason {\n description: string;\n nextSteps: string;\n}\n\nexport const DeclineReasons: Map<string, DeclineReason> = new Map<string, DeclineReason>(\n [\n [\n 'authentication_required', {\n description: 'The card was declined as the transaction requires authentication.',\n nextSteps: 'The customer should try again and authenticate their card when prompted during the transaction.'\n }\n ],\n [\n 'approve_with_id', {\n description: 'The payment cannot be authorized.',\n nextSteps: 'The payment should be attempted again. If it still cannot be processed, the customer needs to contact their card issuer.'\n }\n ],\n [\n 'call_issuer', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer needs to contact their card issuer for more information.'\n }\n ],\n [\n 'card_not_supported', {\n description: 'The card does not support the specified currency.',\n nextSteps: 'The customer needs to check with the issuer whether the card can be used for the type of currency specified.'\n }\n ],\n [\n 'do_not_honor', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer needs to contact their card issuer for more information.'\n }\n ],\n [\n 'do_not_try_again', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.'\n }\n ],\n [\n 'duplicate_transaction', {\n description: 'A transaction with identical amount and credit card information was submitted very recently.',\n nextSteps: 'Check to see if a recent payment already exists.'\n }\n ],\n [\n 'expired_card', {\n description: 'The card has expired.',\n nextSteps: 'The customer should use another card.'\n }\n ],\n [\n 'fraudulent', {\n description: 'The payment has been declined as Stripe suspects it is fraudulent.',\n nextSteps: 'Do not report more detailed information to your customer. Instead, present as you would the generic_decline described below.'\n }\n ],\n [\n 'generic_decline', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer needs to contact their card issuer for more information.'\n }\n ],\n [\n 'incorrect_number', {\n description: 'The card number is incorrect.',\n nextSteps: 'The customer should try again using the correct card number.'\n }\n ],\n [\n 'incorrect_cvc', {\n description: 'The CVC number is incorrect.',\n nextSteps: 'The customer should try again using the correct CVC.'\n }\n ],\n [\n 'incorrect_pin', {\n description: 'The PIN entered is incorrect. This decline code only applies to payments made with a card reader.',\n nextSteps: 'The customer should try again using the correct PIN.'\n }\n ],\n [\n 'incorrect_zip', {\n description: 'The ZIP/postal code is incorrect.',\n nextSteps: 'The customer should try again using the correct billing ZIP/postal code.'\n }\n ],\n [\n 'insufficient_funds', {\n description: 'The card has insufficient funds to complete the purchase.',\n nextSteps: 'The customer should use an alternative payment method.'\n }\n ],\n [\n 'invalid_account', {\n description: 'The card, or account the card is connected to, is invalid.',\n nextSteps: 'The customer needs to contact their card issuer to check that the card is working correctly.'\n }\n ],\n [\n 'invalid_amount', {\n description: 'The payment amount is invalid, or exceeds the amount that is allowed.',\n nextSteps: 'If the amount appears to be correct, the customer needs to check with their card issuer that they can make purchases of that amount.'\n }\n ],\n [\n 'invalid_cvc', {\n description: 'The CVC number is incorrect.',\n nextSteps: 'The customer should try again using the correct CVC.'\n }\n ],\n [\n 'invalid_expiry_year', {\n description: 'The expiration year invalid.',\n nextSteps: 'The customer should try again using the correct expiration date.'\n }\n ],\n [\n 'invalid_number', {\n description: 'The card number is incorrect.',\n nextSteps: 'The customer should try again using the correct card number.'\n }\n ],\n [\n 'invalid_pin', {\n description: 'The PIN entered is incorrect. This decline code only applies to payments made with a card reader.',\n nextSteps: 'The customer should try again using the correct PIN.'\n }\n ],\n [\n 'issuer_not_available', {\n description: 'The card issuer could not be reached, so the payment could not be authorized.',\n nextSteps: 'The payment should be attempted again. If it still cannot be processed, the customer needs to contact their card issuer.'\n }\n ],\n [\n 'lost_card', {\n description: 'The payment has been declined because the card is reported lost.',\n nextSteps: 'The specific reason for the decline should not be reported to the customer. Instead, it needs to be presented as a generic decline.'\n }\n ],\n [\n 'merchant_blacklist', {\n description: 'The payment has been declined because it matches a value on the Stripe user\\'s block list.',\n nextSteps: 'Do not report more detailed information to your customer. Instead, present as you would the generic_decline described above.'\n }\n ],\n [\n 'new_account_information_available', {\n description: 'The card, or account the card is connected to, is invalid.',\n nextSteps: 'The customer needs to contact their card issuer for more information.'\n }\n ],\n [\n 'no_action_taken', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.'\n }\n ],\n [\n 'not_permitted', {\n description: 'The payment is not permitted.',\n nextSteps: 'The customer needs to contact their card issuer for more information.'\n }\n ],\n [\n 'offline_pin_required', {\n description: 'The card has been declined as it requires a PIN.',\n nextSteps: 'The customer should try again by inserting their card and entering a PIN.'\n }\n ],\n [\n 'online_or_offline_pin_required', {\n description: 'The card has been declined as it requires a PIN.',\n nextSteps: 'If the card reader supports Online PIN, the customer should be prompted for a PIN without a new transaction being created. If the card reader does not support Online PIN, the customer should try again by inserting their card and entering a PIN.'\n }\n ],\n [\n 'pickup_card', {\n description: 'The card cannot be used to make this payment (it is possible it has been reported lost or stolen).',\n nextSteps: 'The customer needs to contact their card issuer for more information.'\n }\n ],\n [\n 'pin_try_exceeded', {\n description: 'The allowable number of PIN tries has been exceeded.',\n nextSteps: 'The customer must use another card or method of payment.'\n }\n ],\n [\n 'processing_error', {\n description: 'An error occurred while processing the card.',\n nextSteps: 'The payment should be attempted again. If it still cannot be processed, try again later.'\n }\n ],\n [\n 'reenter_transaction', {\n description: 'The payment could not be processed by the issuer for an unknown reason.',\n nextSteps: 'The payment should be attempted again. If it still cannot be processed, the customer needs to contact their card issuer.'\n }\n ],\n [\n 'restricted_card', {\n description: 'The card cannot be used to make this payment (it is possible it has been reported lost or stolen).',\n nextSteps: 'The customer needs to contact their card issuer for more information.'\n }\n ],\n [\n 'revocation_of_all_authorizations', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.'\n }\n ],\n [\n 'revocation_of_authorization', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.'\n }\n ],\n [\n 'security_violation', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer needs to contact their card issuer for more information.'\n }\n ],\n [\n 'service_not_allowed', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.'\n }\n ],\n [\n 'stolen_card', {\n description: 'The payment has been declined because the card is reported stolen.',\n nextSteps: 'The specific reason for the decline should not be reported to the customer. Instead, it needs to be presented as a generic decline.'\n }\n ],\n [\n 'stop_payment_order', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.'\n }\n ],\n [\n 'testmode_decline', {\n description: 'A Stripe test card number was used.',\n nextSteps: 'A genuine card must be used to make a payment.'\n }\n ],\n [\n 'transaction_not_allowed', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer needs to contact their card issuer for more information.'\n }\n ],\n [\n 'try_again_later', {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'Ask the customer to attempt the payment again. If subsequent payments are declined, the customer should contact their card issuer for more information.'\n }\n ],\n [\n 'withdrawal_count_limit_exceeded', {\n description: 'The customer has exceeded the balance or credit limit available on their card.',\n nextSteps: 'The customer should use an alternative payment method.'\n }\n ]\n ]\n);\n","import { PaymentCard as ApiPaymentCard, PaymentCardCARD_TYPE, PaymentCardFUNDING_TYPE } from '../_internal';\n\nexport interface PaymentCard {\n cardType: PaymentCardTypeLabel;\n fundingType: FundingTypeLabel;\n cardId: string;\n lastFourDigits: string;\n expiryMonth: number;\n expiryYear: number;\n cardholderName?: string;\n address?: string;\n city?: string;\n state?: string;\n country?: string;\n zipCode?: string;\n default?: boolean;\n}\n\nexport enum FundingType {\n PREPAID = 'Pre-paid',\n DEBIT = 'Debit',\n CREDIT = 'Credit',\n UNKNOWN = 'Unknown',\n}\n\nexport interface FundingTypeLabel {\n value: string,\n id: FundingType\n}\n\nexport enum PaymentCardType {\n AMEX = 'American Express',\n VISA = 'Visa',\n MASTERCARD = 'Mastercard',\n JCB = 'JCB',\n DINERS_CLUB = 'Diners Club',\n DISCOVER = 'Discover',\n UNKNOWN = 'Unknown',\n}\n\nexport interface PaymentCardTypeLabel {\n id: PaymentCardType,\n value: string,\n}\n\nconst paymentCardTypeLabelMap = new Map<PaymentCardCARD_TYPE, PaymentCardTypeLabel>([\n [PaymentCardCARD_TYPE.AMEX, {id: PaymentCardType.AMEX, value: 'American Express'}],\n [PaymentCardCARD_TYPE.VISA, {id: PaymentCardType.VISA, value: 'Visa'}],\n [PaymentCardCARD_TYPE.MASTERCARD, {id: PaymentCardType.MASTERCARD, value: 'Mastercard'}],\n [PaymentCardCARD_TYPE.JCB, {id: PaymentCardType.JCB, value: 'JCB'}],\n [PaymentCardCARD_TYPE.DINERS_CLUB, {id: PaymentCardType.DINERS_CLUB, value: 'Diners Club'}],\n [PaymentCardCARD_TYPE.DISCOVER, {id: PaymentCardType.DISCOVER, value: 'Discover'}],\n [PaymentCardCARD_TYPE.UNKNOWN, {id: PaymentCardType.UNKNOWN, value: 'Unknown'}],\n])\n\nfunction convertApiPaymentCardType(t: PaymentCardCARD_TYPE): PaymentCardTypeLabel {\n return paymentCardTypeLabelMap.get(t)\n}\n\nconst fundingTypeLabelMap = new Map<PaymentCardFUNDING_TYPE, FundingTypeLabel>([\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_DEBIT, {id: FundingType.DEBIT, value: 'Debit'}],\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_CREDIT, {id: FundingType.CREDIT, value: 'Credit'}],\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_PREPAID, {id: FundingType.PREPAID, value: 'Pre-paid'}],\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_UNKNOWN, {id: FundingType.UNKNOWN, value: 'Unknown'}],\n])\n\nexport function convertApiFundingType(t: PaymentCardFUNDING_TYPE): FundingTypeLabel {\n return fundingTypeLabelMap.get(t)\n}\n\nexport function convertApiPaymentCardDetails(c: ApiPaymentCard): PaymentCard {\n return {\n cardType: convertApiPaymentCardType(c.cardType),\n fundingType: convertApiFundingType(c.fundingType),\n cardId: c.cardId,\n lastFourDigits: c.lastFourDigits,\n expiryMonth: c.expiryMonth,\n expiryYear: c.expiryYear,\n cardholderName: c.cardholderName,\n address: c.address,\n city: c.city,\n state: c.state,\n country: c.country,\n zipCode: c.zipCode,\n default: c.default\n } as PaymentCard;\n}\n","import {\n CardType,\n PaymentStatus as PaymentStatusApi,\n RetailPayment as RetailPaymentApi,\n RetailPaymentCardDetails as RetailPaymentCardDetailsApi,\n RetailPaymentReferenceType as RetailPaymentReferenceTypeApi,\n} from '../_internal';\nimport {Dispute, disputeFromApi} from './dispute';\nimport {PaymentCardType} from '../payment-card';\n\nexport enum RetailPaymentStatus {\n Failed = 'Failed',\n Succeeded = 'Succeeded',\n Refunded = 'Refunded',\n PartialyRefunded = 'Partially refunded',\n Disputed = 'Disputed'\n}\n\nexport interface CardDetails {\n cardType: PaymentCardType;\n lastFourDigits: string;\n}\n\nexport interface RetailPayment {\n id: string;\n merchantId: string;\n created: Date;\n currencyCode: string;\n amount: number;\n referenceId: string;\n referenceType: RetailPaymentReferenceTypeApi;\n description: string;\n customerId: string;\n status: RetailPaymentStatus;\n failureCode: string;\n failureMessage: string;\n applicationFee: number;\n dispute: Dispute;\n cardDetails: CardDetails\n}\n\nexport function retailPaymentFromApi(pApi: RetailPaymentApi): RetailPayment {\n return {\n id: pApi.id || '',\n merchantId: pApi.merchantId || '',\n created: pApi.created || null,\n currencyCode: pApi.currencyCode || '',\n amount: pApi.amount || 0.0,\n referenceId: pApi.referenceId || '',\n referenceType: pApi.referenceType,\n description: pApi.description || '',\n customerId: pApi.customerId || '',\n status: retailPaymentStatusFromApi(pApi.status, pApi.disputed),\n failureCode: pApi.failureCode,\n failureMessage: pApi.failureMessage,\n applicationFee: pApi.applicationFee,\n dispute: disputeFromApi(pApi.dispute),\n cardDetails: cardDetailsFromApi(pApi.cardDetails)\n };\n}\n\nfunction cardDetailsFromApi(cardDetails: RetailPaymentCardDetailsApi): CardDetails {\n return {\n lastFourDigits: cardDetails.lastFourDigits,\n cardType: cardTypeFromApi(cardDetails.cardType)\n };\n}\n\nfunction cardTypeFromApi(cardType: CardType): PaymentCardType {\n switch (cardType) {\n case CardType.CARD_TYPE_VISA:\n return PaymentCardType.VISA;\n case CardType.CARD_TYPE_MASTERCARD:\n return PaymentCardType.MASTERCARD;\n case CardType.CARD_TYPE_AMEX:\n return PaymentCardType.AMEX;\n case CardType.CARD_TYPE_DISCOVER:\n return PaymentCardType.DISCOVER;\n case CardType.CARD_TYPE_JCB:\n return PaymentCardType.JCB;\n case CardType.CARD_TYPE_DINERS_CLUB:\n return PaymentCardType.UNKNOWN;\n }\n}\n\nexport function retailPaymentStatusFromApi(status: PaymentStatusApi, disputed: boolean): RetailPaymentStatus {\n if (disputed) {\n return RetailPaymentStatus.Disputed;\n }\n switch (status) {\n case PaymentStatusApi.PAYMENT_STATUS_SUCCEEDED:\n return RetailPaymentStatus.Succeeded;\n case PaymentStatusApi.PAYMENT_STATUS_FAILED:\n return RetailPaymentStatus.Failed;\n case PaymentStatusApi.PAYMENT_STATUS_REFUNDED:\n return RetailPaymentStatus.Refunded;\n case PaymentStatusApi.PAYMENT_STATUS_PARTIALLY_REFUNDED:\n return RetailPaymentStatus.PartialyRefunded;\n default:\n return null;\n }\n}\n\n\n","import {\n RetailStatusResponseInterface,\n RetailStatusResponseVerificationErrorInterface,\n RetailStatusResponseVerificationRequirementsInterface\n} from '../_internal';\n\nexport interface RetailStatus {\n supportedRegion: boolean;\n canAcceptPayment: boolean;\n disabledReason: DisabledReason;\n requirements: Requirements;\n}\n\nexport interface Requirements {\n due: string[];\n errors: VerificationError[];\n}\n\nexport interface VerificationError {\n requirement: string;\n code: string;\n reason: string;\n}\n\nexport enum DisabledReason {\n FIELDS_NEEDED = 'fields needed',\n LISTED = 'listed',\n REJECTED = 'rejected',\n UNDER_REVIEW = 'under review',\n OTHER = 'other',\n }\n\nfunction disabledReasonFromAPI(reason: string): DisabledReason | null {\n switch (reason) {\n case 'rejected.fraud':\n case 'rejected.listed':\n case 'rejected.other':\n case 'rejected.terms_of_service':\n return DisabledReason.REJECTED;\n case 'other':\n return DisabledReason.OTHER;\n case 'listed':\n return DisabledReason.LISTED;\n case 'under_review':\n return DisabledReason.UNDER_REVIEW;\n default:\n return null;\n }\n}\n\nfunction verificationErrorFromAPI(e: RetailStatusResponseVerificationErrorInterface): VerificationError {\n return {\n requirement: e.requirement,\n code: e.code,\n reason: e.reason\n }\n}\n\nfunction requirementsFromAPI(requirements: RetailStatusResponseVerificationRequirementsInterface): Requirements {\n if (!requirements) {\n return {due: [], errors: []}\n }\n return {\n due: requirements.due,\n errors: (requirements.error || []).map(e => verificationErrorFromAPI(e))\n }\n}\n\nexport function retailResponseFromAPI(proto: RetailStatusResponseInterface): RetailStatus {\n return {\n supportedRegion: proto.supportedRegion || false,\n canAcceptPayment: proto.canAcceptPayment || false,\n disabledReason: disabledReasonFromAPI(proto.disabledReason),\n requirements: requirementsFromAPI(proto.requirements)\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n CreatePaymentCardRequest,\n ListPaymentCardsRequest,\n ListPaymentCardsResponse,\n MerchantApiService,\n PaymentCard as ApiPaymentCard,\n SetDefaultPaymentCardRequest,\n UpdatePaymentCardRequest,\n} from '../_internal';\nimport { convertApiPaymentCardDetails, PaymentCard } from './payment-card';\n\n@Injectable({providedIn: 'root'})\nexport class PaymentCardService {\n constructor(private apiService: MerchantApiService ) { }\n\n setDefaultCard(merchantId: string, cardId: string): Observable<HttpResponse<null>> {\n const request = new SetDefaultPaymentCardRequest({\n merchantId, cardId\n })\n return this.apiService.setDefaultPaymentCard(request)\n }\n\n getFirstPaymentCard(merchantId: string): Observable<PaymentCard> {\n return this.getAll(merchantId).pipe(\n map((cards: PaymentCard[]) => cards && cards.length ? cards[0] : null)\n )\n }\n\n getAll(merchantId: string): Observable<PaymentCard[]> {\n const req = new ListPaymentCardsRequest({\n merchantId: merchantId,\n });\n return this.apiService.listPaymentCards(req)\n .pipe(\n map((res: ListPaymentCardsResponse) => res && res.paymentCard ? res.paymentCard : []),\n map((paymentCards: ApiPaymentCard[]) => {\n return paymentCards.map((c: ApiPaymentCard) => convertApiPaymentCardDetails(c));\n }\n )\n )\n }\n\n update(merchantId: string, token: string): Observable<HttpResponse<null>> {\n const request = new UpdatePaymentCardRequest({merchantId: merchantId, stripeToken: token});\n return this.apiService.updatePaymentCard(new UpdatePaymentCardRequest(request));\n }\n\n create(merchantId: string, token: string): Observable<HttpResponse<null>> {\n const request = new CreatePaymentCardRequest({merchantId: merchantId, stripeToken: token});\n return this.apiService.createPaymentCard(new CreatePaymentCardRequest(request));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n ListPaymentRequest,\n ListRetailDisputesRequest,\n ListRetailDisputesResponse,\n ListRetailPaymentsRequest,\n ListRetailPaymentsRequestListRetailPaymentsFilters,\n ListRetailPaymentsResponse,\n PagedRequestOptions,\n PaymentApiService,\n PrepareRetailPaymentRequest,\n RetailPaymentsEnabledRequest,\n RetailStatusRequest,\n RetailStatusResponse,\n} from '../_internal';\nimport { Dispute, DisputeEvidenceRequest, disputeFromApi } from './dispute';\nimport {\n Intent,\n ListPaymentsFilter,\n Payment,\n paymentFromApi,\n RetailProvider,\n} from './payment';\nimport { RetailPayment, retailPaymentFromApi } from './retail-payment';\nimport { retailResponseFromAPI, RetailStatus } from './retail-status';\n\n@Injectable({providedIn: 'root'})\nexport class PaymentService {\n constructor(\n private paymentApi: PaymentApiService,\n ) {\n }\n\n listPayments(filters: ListPaymentsFilter, cursor: string, pageSize: number): Observable<PagedResponse<Payment>> {\n const req = new ListPaymentRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({cursor, pageSize}),\n });\n return this.paymentApi.list(req).pipe(\n map(response => {\n const payments = (response.payments || []).map(payment => paymentFromApi(payment));\n return new PagedResponse(payments, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n prepareRetailPayment(merchantId: string, customerId: string): Observable<Intent> {\n const req = new PrepareRetailPaymentRequest({\n merchantId: merchantId,\n customerId: customerId,\n });\n return this.paymentApi.prepareRetail(req).pipe(\n map(response => {\n return {\n stripeClientSecret: response.stripeClientSecret,\n intentId: response.intentId\n };\n })\n );\n }\n\n getRetail(merchantId: string, paymentId: string): Observable<RetailPayment> {\n return this.paymentApi.getRetail({\n merchantId: merchantId,\n paymentId: paymentId\n }).pipe(map(resp => retailPaymentFromApi(resp.payment)));\n }\n\n listRetail(\n merchantId: string,\n cursor: string = '',\n pageSize: number = 10,\n payoutId?: string,\n customerId?: string,\n createdDateGte?: Date,\n createdDateLte?: Date,\n ): Observable<PagedResponse<RetailPayment>> {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n const filters: ListRetailPaymentsRequestListRetailPaymentsFilters = new ListRetailPaymentsRequestListRetailPaymentsFilters({\n payoutId: payoutId || '',\n customerId: customerId || '',\n });\n if (!!createdDateGte && createdDateGte.valueOf() !== zeroDate) {\n filters.createdDateGte = createdDateGte\n }\n if (!!createdDateLte && createdDateLte.valueOf() !== zeroDate) {\n filters.createdDateLte = createdDateLte\n }\n return this.paymentApi.listRetail(new ListRetailPaymentsRequest({\n merchantId: merchantId,\n filters: filters,\n pagingOptions: new PagedRequestOptions({cursor, pageSize}),\n })).pipe(\n map((resp: ListRetailPaymentsResponse) => {\n const retailPayments = (resp.payments || []).map(payment => retailPaymentFromApi(payment));\n return new PagedResponse(retailPayments, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n })\n );\n }\n\n getRetailDispute(merchantId: string, disputeId: string): Observable<Dispute> {\n return this.paymentApi.getRetailDispute({\n merchantId: merchantId,\n disputeId: disputeId,\n }).pipe(map(resp => disputeFromApi(resp.dispute)));\n }\n\n listRetailDisputes(merchantId: string, cursor: string = '', pageSize: number = 10): Observable<PagedResponse<Dispute>> {\n return this.paymentApi.listRetailDisputes(new ListRetailDisputesRequest({\n merchantId: merchantId,\n pagingOptions: new PagedRequestOptions({cursor, pageSize}),\n })).pipe(\n map((resp: ListRetailDisputesResponse) => {\n const retailPayments = (resp.disputes || []).map(d => disputeFromApi(d));\n return new PagedResponse(retailPayments, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n })\n );\n }\n\n retailStatus(merchantId: string): Observable<RetailStatus> {\n const req = new RetailStatusRequest({ merchantId });\n return this.paymentApi.retailStatus(req).pipe(\n map((r: RetailStatusResponse) => retailResponseFromAPI(r))\n )\n }\n\n retailPaymentsEnabled(merchantId: string): Observable<boolean> {\n const req = new RetailPaymentsEnabledRequest({ merchantId });\n return this.paymentApi.retailPaymentsEnabled(req).pipe(\n map(resp => resp.enabled),\n );\n }\n\n configureRetailProvider(merchantId: string, successUrl: string, failureUrl: string): Observable<string> {\n return this.paymentApi.configureRetailProvider({\n merchantId,\n successUrl,\n failureUrl\n }).pipe(map(resp => resp.stripeUrl))\n }\n\n getRetailProvider(merchantId: string): Observable<RetailProvider> {\n return this.paymentApi.getRetailProvider({merchantId}).pipe(\n map(resp => {\n return {\n statementDescriptor: resp.statementDescriptor,\n stripeConnectId: resp.stripeConnectId\n }\n })\n )\n }\n\n updateRetailProvider(merchantId: string, statementDescriptor: string): Observable<null> {\n return this.paymentApi.updateRetailProvider({merchantId, statementDescriptor}).pipe(mapTo(null))\n }\n\n submitEvidence(\n merchantId: string,\n disputeId: string,\n paymentId: string,\n submit: boolean,\n evidence?: DisputeEvidenceRequest\n ): Observable<null> {\n return this.paymentApi.submitEvidence({\n merchantId: merchantId,\n disputeId: disputeId,\n paymentId: paymentId,\n evidence: {\n billingAddress: evidence?.billingAddress || null,\n customerEmailAddress: evidence?.customerEmailAddress || null,\n customerName: evidence?.customerName || null,\n productDescription: evidence?.productDescription || null,\n customerSignatureFileId: evidence?.customerSignatureFileId || null,\n customerCommunicationFileId: evidence?.customerCommunicationFileId || null,\n receiptFileId: evidence?.receiptFileId || null,\n shippingDocumentationFileId: evidence?.shippingDocumentationFileId || null,\n uncategorizedFileId: evidence?.uncategorizedFileId || null,\n },\n submit: submit\n }).pipe(mapTo(null))\n }\n\n closeDispute(merchantId: string, disputeId: string): Observable<null> {\n return this.paymentApi.closeRetailDispute({\n merchantId: merchantId,\n disputeId: disputeId,\n }).pipe(mapTo(null))\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport {\n convertApiPaymentCardDetails,\n PaymentCard,\n} from '../payment-card/payment-card';\nimport {\n DeletePaymentCardRequest,\n ListPaymentCardsRequest,\n ListPaymentCardsResponse,\n PaymentMethodApiService,\n SetDefaultPaymentMethodRequest,\n} from '../_internal';\n\n@Injectable({providedIn: 'root'})\nexport class PaymentMethodService {\n constructor(\n private apiService: PaymentMethodApiService,\n ) {\n }\n\n listPaymentCards(merchantId: string, customerId: string): Observable<PaymentCard[]> {\n const req = new ListPaymentCardsRequest({\n merchantId,\n customerId\n });\n return this.apiService.listPaymentCards(req).pipe(\n map((resp: ListPaymentCardsResponse) => {\n return (resp && resp.paymentCard ? resp.paymentCard : []).map(c => convertApiPaymentCardDetails(c));\n }),\n )\n }\n\n deletePaymentCard(merchantId: string, cardId: string): Observable<boolean> {\n const req = new DeletePaymentCardRequest({\n merchantId,\n cardId\n });\n return this.apiService.deletePaymentCard(req).pipe(\n mapTo(true)\n );\n }\n\n setDefaultPaymentCard(merchantId: string, customerId: string, paymentMethodId: string): Observable<boolean> {\n const req = new SetDefaultPaymentMethodRequest({\n merchantId,\n customerId,\n paymentMethodId\n });\n return this.apiService.setDefaultPaymentMethod(req).pipe(\n mapTo(true)\n );\n }\n}\n\n","import {\n RetentionMetrics as RetentionMetricsApi,\n ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup as RetentionMetricsByGroupApi\n} from '../_internal';\n\nexport interface RetentionMetrics {\n sku: string;\n productName: string;\n startingCount: number;\n activations: number;\n deactivations: number;\n churn: number;\n retention: number;\n}\n\nexport interface RetentionMetricsByGroup {\n groupID: string;\n metrics: RetentionMetrics[];\n}\n\n\nexport interface ListSubscriptionRetentionFilters {\n start?: Date;\n end?: Date;\n}\n\nexport function subscriptionMetricFromAPI(mApi: RetentionMetricsApi): RetentionMetrics {\n return {\n sku: mApi.sku || '',\n productName: mApi.productName || '',\n startingCount: mApi.startingCount || 0,\n activations: mApi.activations || 0,\n deactivations: mApi.deactivations || 0,\n churn: mApi.churn || 0.0,\n retention: mApi.retention || 0.0,\n }\n}\n\nexport function subscriptionMetricByGroupFromAPI(mApi: RetentionMetricsByGroupApi): RetentionMetricsByGroup {\n const metrics = (mApi.subscriptionMetrics || []).map(metric => subscriptionMetricFromAPI(metric))\n return {\n groupID: mApi.groupId || '',\n metrics: metrics || []\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n ListSubscriptionRetentionByGroupResponse,\n ListSubscriptionRetentionBySKUResponse,\n ListSubscriptionRetentionRequest,\n ProductSummaryApiService,\n PagedRequestOptions,\n} from '../_internal';\nimport {\n ListSubscriptionRetentionFilters,\n subscriptionMetricFromAPI,\n subscriptionMetricByGroupFromAPI,\n RetentionMetrics,\n RetentionMetricsByGroup\n} from './subscription-retention';\n\n@Injectable({providedIn: 'root'})\nexport class ProductSummaryService {\n constructor(private productSummaryApi: ProductSummaryApiService) { }\n\n listSubscriptionRetentionBySKU(\n merchantID: string, filters: ListSubscriptionRetentionFilters, cursor: string, pageSize: number\n ): Observable<PagedResponse<RetentionMetrics>> {\n const req = new ListSubscriptionRetentionRequest({\n merchantId: merchantID,\n filters,\n pagingOptions: new PagedRequestOptions({cursor, pageSize}),\n });\n return this.productSummaryApi.listSubscriptionRetentionBySku(req).pipe(\n map((response: ListSubscriptionRetentionBySKUResponse) => {\n const metrics = (response.subscriptionMetrics || []).map(metric => subscriptionMetricFromAPI(metric));\n return new PagedResponse(metrics, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n listSubscriptionRetentionByGroup(\n merchantID: string, filters: ListSubscriptionRetentionFilters, cursor: string, pageSize: number\n ): Observable<PagedResponse<RetentionMetricsByGroup>> {\n const req = new ListSubscriptionRetentionRequest({\n merchantId: merchantID,\n filters,\n pagingOptions: new PagedRequestOptions({cursor, pageSize}),\n });\n return this.productSummaryApi.listSubscriptionRetentionByGroup(req).pipe(\n map((response: ListSubscriptionRetentionByGroupResponse) => {\n const metricsByGroup = (response.metricsByGroup || []).map(m => subscriptionMetricByGroupFromAPI(m));\n return new PagedResponse(metricsByGroup, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\nimport { HostService } from '../_generated';\nimport { ListPurchaseFilter, listPurchaseFiltersToHTTPJson } from './list-purchases';\n\n@Injectable({providedIn: 'root'})\nexport class PurchaseService {\n\n constructor(\n private hostService: HostService,\n private http: HttpClient\n ) {\n }\n\n exportCSV(filters: ListPurchaseFilter): Observable<Blob> {\n const jsonFilters = listPurchaseFiltersToHTTPJson(filters)\n return this.http.post(\n `${this.hostService.httpsHostWithScheme()}/purchase/export-csv`, {filters: jsonFilters},\n {\n observe: 'body',\n responseType: 'blob',\n withCredentials: true,\n }\n ).pipe(\n share(),\n );\n }\n}\n","import { ListPurchaseRequestListPurchaseBillingStrategyFilterInterface, ListPurchaseRequestState, PurchaseStatus } from '../_internal';\n\nexport interface ListPurchaseFilter {\n merchantId?: string;\n purchaseId?: string;\n start?: Date;\n end?: Date;\n billingStrategyFilter?: ListPurchaseRequestListPurchaseBillingStrategyFilterInterface;\n state?: ListPurchaseRequestState;\n minPrice?: number;\n status?: PurchaseStatus;\n includeVoided?: boolean;\n}\n\ninterface ListPurchaseFilterHttp {\n merchantId?: string;\n purchaseId?: string;\n start?: string;\n end?: string;\n billingStrategyFilter?: {\n billingStrategy?: number[];\n };\n state?: number;\n minPrice?: number;\n status?: number;\n includeVoided?: boolean;\n}\n\n\nexport function listPurchaseFiltersToHTTPJson(filters: ListPurchaseFilter): ListPurchaseFilterHttp {\n return {\n merchantId: filters.merchantId,\n purchaseId: filters.purchaseId,\n start: filters.start ? filters.start.toISOString() : undefined,\n end: filters.end ? filters.end.toISOString() : undefined,\n billingStrategyFilter: filters.billingStrategyFilter ? {\n billingStrategy: filters.billingStrategyFilter.billingStrategy ?\n filters.billingStrategyFilter.billingStrategy.map(bs => bs.valueOf()) : []\n } : undefined,\n state: !!filters.state ? filters.state.valueOf() : undefined,\n minPrice: filters.minPrice,\n status: filters.status,\n includeVoided: filters.includeVoided\n }\n}\n","import { ReferenceType as ApiReferenceType, RefundInterface, RefundReason as ApiReason, RefundStatus as ApiStatus } from '../_internal';\n\nexport interface Refund {\n merchantId: string,\n chargeId: string;\n refundId: string;\n amount: number;\n reason: RefundReason,\n status: RefundStatus,\n created: Date;\n updated: Date;\n referenceType: ReferenceType;\n referenceId: string;\n}\n\nexport enum RefundReason {\n REQUESTED_BY_CUSTOMER = 'Requested by Customer',\n DUPLICATE = 'Duplicate',\n FRAUDULENT = 'Fraudulent',\n UNKNOWN = 'Unknown'\n}\n\nexport enum RefundStatus {\n SUCCEEDED = 'Succeeded',\n FAILED = 'Failed',\n PENDING = 'Pending',\n UNKNOWN = 'Unknown'\n}\n\nexport enum ReferenceType {\n PURCHASE = 'Purchase',\n PURCHASE_ITEM = 'Purchase Item',\n INVOICE = 'Invoice',\n UNKNOWN = 'Unknown'\n}\n\nexport function reasonToApi(r: RefundReason): ApiReason {\n switch (r) {\n case RefundReason.REQUESTED_BY_CUSTOMER:\n return ApiReason.REQUESTED_BY_CUSTOMER;\n case RefundReason.FRAUDULENT:\n return ApiReason.FRAUDULENT;\n case RefundReason.DUPLICATE:\n return ApiReason.DUPLICATE;\n }\n return ApiReason.DUPLICATE;\n}\n\nexport function reasonFromApi(r: ApiReason): RefundReason {\n switch (r) {\n case ApiReason.DUPLICATE:\n return RefundReason.DUPLICATE\n case ApiReason.REQUESTED_BY_CUSTOMER:\n return RefundReason.REQUESTED_BY_CUSTOMER;\n case ApiReason.FRAUDULENT:\n return RefundReason.FRAUDULENT;\n }\n return RefundReason.REQUESTED_BY_CUSTOMER;\n}\n\nexport function statusFromApi(r: ApiStatus): RefundStatus {\n switch (r) {\n case ApiStatus.SUCCEEDED:\n return RefundStatus.SUCCEEDED\n case ApiStatus.FAILED:\n return RefundStatus.FAILED;\n case ApiStatus.PENDING:\n return RefundStatus.PENDING\n }\n return RefundStatus.SUCCEEDED\n}\n\nexport function referenceFromApi(r: ApiReferenceType): ReferenceType {\n switch (r) {\n case ApiReferenceType.PURCHASE:\n return ReferenceType.PURCHASE\n case ApiReferenceType.PURCHASE_ITEM:\n return ReferenceType.PURCHASE_ITEM\n case ApiReferenceType.INVOICE:\n return ReferenceType.INVOICE\n }\n return ReferenceType.PURCHASE;\n}\n\nexport function refundFromApi(refund: RefundInterface): Refund {\n return {\n merchantId: refund.merchantId || '',\n chargeId: refund.chargeId || '',\n refundId: refund.refundId || '',\n amount: refund.amount || 0,\n reason: reasonFromApi(refund.reason),\n status: statusFromApi(refund.status),\n created: refund.created ? new Date(refund.created) : null,\n updated: refund.updated ? new Date(refund.updated) : null,\n referenceType: referenceFromApi(refund.referenceType),\n referenceId: refund.referenceId || ''\n };\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError as observableThrowError } from 'rxjs';\nimport { catchError, map, mapTo } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport { CreateRefundRequest, ListRefundsRequest, RefundApiService } from '../_internal';\nimport { reasonToApi, Refund, refundFromApi, RefundReason } from './refund';\n\n@Injectable({providedIn: 'root'})\nexport class RefundService {\n constructor(\n private refundApiService: RefundApiService,\n ) {}\n\n create(merchantId: string, chargeId: string, amount: number, reason: RefundReason): Observable<null> {\n const request = new CreateRefundRequest({\n merchantId: merchantId,\n paymentId: chargeId,\n amount: amount,\n reason: reasonToApi(reason)\n });\n return this.refundApiService\n .create(request)\n .pipe(\n catchError(this.handleError),\n mapTo(null)\n );\n }\n\n list(merchantId: string, paymentIds: string[], cursor: string, pageSize: number): Observable<PagedResponse<Refund>> {\n const req = new ListRefundsRequest({\n paymentIds: paymentIds,\n cursor: cursor,\n pageSize: pageSize,\n merchantId: merchantId,\n });\n return this.refundApiService.list(req).pipe(\n map(response => {\n const refunds = (response.refunds || []).map(item => refundFromApi(item));\n return new PagedResponse(refunds, response.nextCursor, response.hasMore);\n }),\n );\n }\n\n private handleError(error: HttpErrorResponse): Observable<never> {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(\n `Server returned ${error.message}`\n );\n }\n\n return observableThrowError(`Unable to issue a refund`);\n }\n}\n\n","import { CollectionMethod } from '../retail-customer-configuration';\nimport { CollectionMethod as ApiCollectionMethod } from '../_internal';\n\n\nexport function convertFromApiCollectionMethod(s: ApiCollectionMethod): CollectionMethod {\n switch (s) {\n case ApiCollectionMethod.COLLECTION_METHOD_INVALID:\n return CollectionMethod.UNSET;\n case ApiCollectionMethod.COLLECTION_METHOD_MANUAL:\n return CollectionMethod.MANUAL_COLLECTION;\n case ApiCollectionMethod.COLLECTION_METHOD_EMAIL:\n return CollectionMethod.SEND_EMAIL;\n case ApiCollectionMethod.COLLECTION_METHOD_CHARGE_AUTOMATICALLY:\n return CollectionMethod.CHARGE_AUTOMATICALLY;\n default:\n return CollectionMethod.UNSET;\n }\n}\n\nexport function convertToApiCollectionMethod(s: CollectionMethod): ApiCollectionMethod {\n switch (s) {\n case CollectionMethod.UNSET:\n return ApiCollectionMethod.COLLECTION_METHOD_INVALID;\n case CollectionMethod.MANUAL_COLLECTION:\n return ApiCollectionMethod.COLLECTION_METHOD_MANUAL;\n case CollectionMethod.SEND_EMAIL:\n return ApiCollectionMethod.COLLECTION_METHOD_EMAIL;\n case CollectionMethod.CHARGE_AUTOMATICALLY:\n return ApiCollectionMethod.COLLECTION_METHOD_CHARGE_AUTOMATICALLY;\n default:\n return ApiCollectionMethod.COLLECTION_METHOD_INVALID;\n }\n}\n","import { Interval as ApiInterval } from '../_internal';\n\nexport enum Interval {\n INVALID = 'Invalid',\n DAY = 'Daily',\n WEEK = 'Weekly',\n MONTH = 'Monthly',\n YEAR = 'Yearly',\n}\n\nexport function convertFromApiInterval(s: ApiInterval): Interval {\n switch (s) {\n case ApiInterval.INTERVAL_INVALID:\n return Interval.INVALID;\n case ApiInterval.INTERVAL_DAY:\n return Interval.DAY;\n case ApiInterval.INTERVAL_WEEK:\n return Interval.WEEK;\n case ApiInterval.INTERVAL_MONTH:\n return Interval.MONTH;\n case ApiInterval.INTERVAL_YEAR:\n return Interval.YEAR;\n default:\n return Interval.INVALID;\n }\n}\n\nexport function convertToApiInterval(s: Interval): ApiInterval {\n switch (s) {\n case Interval.INVALID:\n return ApiInterval.INTERVAL_INVALID;\n case Interval.DAY:\n return ApiInterval.INTERVAL_DAY;\n case Interval.WEEK:\n return ApiInterval.INTERVAL_WEEK;\n case Interval.MONTH:\n return ApiInterval.INTERVAL_MONTH;\n case Interval.YEAR:\n return ApiInterval.INTERVAL_YEAR;\n default:\n return ApiInterval.INTERVAL_INVALID;\n }\n}\n","import { PaymentProcessor as ApiPaymentProcessor } from '../_internal';\n\nexport enum PaymentProcessor {\n INVALID = 'Invalid',\n UNSET = 'Unset',\n STRIPE = 'Stripe',\n}\n\nexport function convertFromApiPaymentProcessor(s: ApiPaymentProcessor): PaymentProcessor {\n switch (s) {\n case ApiPaymentProcessor.PAYMENT_PROCESSOR_INVALID:\n return PaymentProcessor.INVALID;\n case ApiPaymentProcessor.PAYMENT_PROCESSOR_UNSET:\n return PaymentProcessor.UNSET;\n case ApiPaymentProcessor.PAYMENT_PROCESSOR_STRIPE:\n return PaymentProcessor.STRIPE;\n default:\n return PaymentProcessor.INVALID;\n }\n}\n\nexport function convertToApiPaymentProcessor(s: PaymentProcessor): ApiPaymentProcessor {\n switch (s) {\n case PaymentProcessor.INVALID:\n return ApiPaymentProcessor.PAYMENT_PROCESSOR_INVALID;\n case PaymentProcessor.UNSET:\n return ApiPaymentProcessor.PAYMENT_PROCESSOR_UNSET;\n case PaymentProcessor.STRIPE:\n return ApiPaymentProcessor.PAYMENT_PROCESSOR_STRIPE;\n default:\n return ApiPaymentProcessor.PAYMENT_PROCESSOR_INVALID;\n }\n}\n","import { RecurringInvoiceStatus as ApiRecurringInvoiceStatus } from '../_internal';\n\n\nexport enum RecurringInvoiceStatus {\n INVALID = 'Invalid',\n INACTIVE = 'Inactive',\n ACTIVE = 'Active',\n ARCHIVED = 'Archived',\n}\n\nexport function convertFromApiRecurringInvoiceStatus(s: ApiRecurringInvoiceStatus): RecurringInvoiceStatus {\n switch (s) {\n case ApiRecurringInvoiceStatus.RECURRING_INVOICE_STATUS_INVALID:\n return RecurringInvoiceStatus.INVALID;\n case ApiRecurringInvoiceStatus.RECURRING_INVOICE_STATUS_INACTIVE:\n return RecurringInvoiceStatus.INACTIVE;\n case ApiRecurringInvoiceStatus.RECURRING_INVOICE_STATUS_ACTIVE:\n return RecurringInvoiceStatus.ACTIVE;\n case ApiRecurringInvoiceStatus.RECURRING_INVOICE_STATUS_ARCHIVED:\n return RecurringInvoiceStatus.ARCHIVED;\n default:\n return RecurringInvoiceStatus.INVALID;\n }\n}\n\nexport function convertToApiRecurringInvoiceStatus(s: RecurringInvoiceStatus): ApiRecurringInvoiceStatus {\n switch (s) {\n case RecurringInvoiceStatus.INVALID:\n return ApiRecurringInvoiceStatus.RECURRING_INVOICE_STATUS_INVALID;\n case RecurringInvoiceStatus.INACTIVE:\n return ApiRecurringInvoiceStatus.RECURRING_INVOICE_STATUS_INACTIVE;\n case RecurringInvoiceStatus.ACTIVE:\n return ApiRecurringInvoiceStatus.RECURRING_INVOICE_STATUS_ACTIVE;\n case RecurringInvoiceStatus.ARCHIVED:\n return ApiRecurringInvoiceStatus.RECURRING_INVOICE_STATUS_ARCHIVED;\n default:\n return ApiRecurringInvoiceStatus.RECURRING_INVOICE_STATUS_INVALID;\n }\n}\n","import { CollectionMethod } from '../retail-customer-configuration';\nimport {\n RecurringInvoice as RecurringInvoiceApi,\n RecurringInvoiceItem as RecurringInvoiceItemApi,\n RecurringInvoiceLineItem as RecurringInvoiceLineItemApi,\n RecurringInvoiceBundle as RecurringInvoiceBundleApi,\n RecurringInvoiceLineItemInterface,\n RecurringInvoiceBundleInterface\n} from '../_internal';\nimport { convertFromApiCollectionMethod } from './collection-method';\nimport { convertFromApiInterval, Interval } from './interval';\nimport { convertFromApiPaymentProcessor, PaymentProcessor } from './payment-processor';\nimport { convertFromApiRecurringInvoiceStatus, RecurringInvoiceStatus } from './status';\n\nexport class ListRecurringInvoicesByCustomerID {\n customerId: string;\n\n constructor(customerId: string) {\n this.customerId = customerId;\n }\n}\n\nexport class ListRecurringInvoicesByMerchantID {\n merchantId: string;\n\n constructor(merchantId: string) {\n this.merchantId = merchantId;\n }\n}\n\nexport interface CreateRecurringInvoiceRequest {\n customerId: string,\n issuedAt: Date,\n intervalCount: number,\n interval: Interval,\n collectionMethod: CollectionMethod,\n recipientUserId: string,\n paymentProcessorId: string,\n paymentProcessor: PaymentProcessor,\n items: (RecurringInvoiceLineItem | RecurringInvoiceBundle)[],\n status: RecurringInvoiceStatus\n}\nclass LineItem {\n name: string;\n\n constructor(name: string) {\n this.name = name;\n }\n}\n\nexport class RecurringInvoiceLineItem extends LineItem implements RecurringInvoiceLineItemInterface {\n sku?: string;\n unitPrice: number;\n quantity: number;\n taxRateIds?: string[];\n\n constructor(kwargs?: RecurringInvoiceLineItemInterface) {\n super(kwargs.name);\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n}\n\nexport class RecurringInvoiceBundle extends LineItem implements RecurringInvoiceBundleInterface {\n hideLineItems: boolean;\n lineItems: RecurringInvoiceLineItem[];\n\n constructor(kwargs?: RecurringInvoiceBundleInterface) {\n super(kwargs.name);\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n}\n\n\nexport interface RecurringInvoice {\n id: string;\n created?: Date;\n updated?: Date;\n customerId: string;\n status: RecurringInvoiceStatus;\n issuedAt: Date;\n nextIssue?: Date;\n intervalCount: number;\n interval: Interval;\n collectionMethod: CollectionMethod;\n recipientUserId: string;\n paymentProcessor: PaymentProcessor;\n paymentProcessorId: string;\n items: (RecurringInvoiceLineItem | RecurringInvoiceBundle)[];\n totalAmount?: number;\n currencyCode?: string;\n}\n\nfunction convertFromApiRecurringInvoiceLineItem(li: RecurringInvoiceLineItemApi): RecurringInvoiceLineItem {\n if (!li) {\n return\n }\n\n return new RecurringInvoiceLineItem({\n sku: li.sku,\n unitPrice: li.unitPrice,\n quantity: li.quantity,\n name: li.name,\n taxRateIds: li.taxRateIds || [],\n });\n}\n\nfunction convertFromApiRecurringInvoiceLineItemBundle(li: RecurringInvoiceBundleApi): RecurringInvoiceBundle {\n if (!li) {\n return\n }\n\n return new RecurringInvoiceBundle({\n name: li.name,\n hideLineItems: li.hideLineItems || false,\n lineItems: (li.lineItems || []).map(i => convertFromApiRecurringInvoiceLineItem(i))\n });\n}\n\nfunction convertFromApiRecurringInvoiceItem(i: RecurringInvoiceItemApi): RecurringInvoiceLineItem | RecurringInvoiceBundle {\n if (!!i.lineItem) {\n return convertFromApiRecurringInvoiceLineItem(i.lineItem);\n } else if (!!i.bundle) {\n return convertFromApiRecurringInvoiceLineItemBundle(i.bundle);\n }\n return null;\n}\n\nexport function convertFromApiRecurringInvoice(i: RecurringInvoiceApi): RecurringInvoice {\n if (!i) {\n return\n }\n\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n return {\n id: i.id,\n created: i.created.valueOf() !== zeroDate ? i.created : null,\n updated: i.updated.valueOf() !== zeroDate ? i.updated : null,\n customerId: i.customerId,\n status: convertFromApiRecurringInvoiceStatus(i.status),\n issuedAt: i.issuedAt.valueOf() !== zeroDate ? i.issuedAt : null,\n nextIssue: i.nextIssue.valueOf() !== zeroDate ? i.nextIssue : null,\n intervalCount: i.intervalCount,\n interval: convertFromApiInterval(i.interval),\n collectionMethod: convertFromApiCollectionMethod(i.collectionMethod),\n recipientUserId: i.recipientUserId,\n paymentProcessor: convertFromApiPaymentProcessor(i.paymentProcessor),\n paymentProcessorId: i.paymentProcessorId,\n items: (i.items || []).map(li => convertFromApiRecurringInvoiceItem(li)),\n totalAmount: i.totalAmount || 0,\n currencyCode: i.currencyCode\n } as RecurringInvoice\n}\n\nfunction convertToApiRecurringInvoiceLineItem(li: RecurringInvoiceLineItem): RecurringInvoiceLineItemApi {\n if (!li) {\n return\n }\n\n return new RecurringInvoiceLineItemApi({\n sku: li.sku,\n unitPrice: li.unitPrice,\n quantity: li.quantity,\n name: li.name,\n taxRateIds: li.taxRateIds\n });\n}\n\nexport function convertToApiRecurringInvoiceItem(li: RecurringInvoiceLineItem | RecurringInvoiceBundle): RecurringInvoiceItemApi {\n let lineItem: RecurringInvoiceLineItemApi;\n let bundle: RecurringInvoiceBundleApi;\n\n if (li instanceof RecurringInvoiceLineItem) {\n lineItem = convertToApiRecurringInvoiceLineItem(li)\n } else if (li instanceof RecurringInvoiceBundle) {\n bundle = new RecurringInvoiceBundleApi({\n name: li.name,\n hideLineItems: li.hideLineItems,\n lineItems: (li.lineItems || []).map(item => convertToApiRecurringInvoiceLineItem(item))\n })\n }\n\n return new RecurringInvoiceItemApi({\n lineItem, bundle\n })\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n RecurringInvoiceApiService,\n RecurringInvoice as RecurringInvoiceApi,\n GetRecurringInvoiceRequest,\n DeleteRecurringInvoiceRequest,\n ListRecurringInvoicesRequest,\n ListRecurringInvoicesResponse,\n UpdateRecurringInvoiceRequest,\n} from '../_internal';\nimport {\n RecurringInvoice,\n convertFromApiRecurringInvoice,\n ListRecurringInvoicesByCustomerID,\n ListRecurringInvoicesByMerchantID,\n convertToApiRecurringInvoiceItem,\n CreateRecurringInvoiceRequest,\n} from './recurring-invoice';\nimport { HttpResponse } from '@angular/common/http';\nimport { PagedResponse } from '../core';\nimport { convertToApiInterval } from './interval';\nimport { convertToApiCollectionMethod } from './collection-method';\nimport { convertToApiPaymentProcessor } from './payment-processor';\nimport { convertToApiRecurringInvoiceStatus } from './status';\n\n@Injectable({ providedIn: 'root' })\nexport class RecurringInvoiceService {\n constructor(private recurringInvoiceApiService: RecurringInvoiceApiService) { }\n\n create(request: CreateRecurringInvoiceRequest): Observable<RecurringInvoice> {\n const req = new RecurringInvoiceApi({\n ...request,\n status: convertToApiRecurringInvoiceStatus(request.status),\n interval: convertToApiInterval(request.interval),\n collectionMethod: convertToApiCollectionMethod(request.collectionMethod),\n paymentProcessor: convertToApiPaymentProcessor(request.paymentProcessor),\n items: (request.items || []).map(i => convertToApiRecurringInvoiceItem(i)),\n });\n\n return this.recurringInvoiceApiService.createRecurringInvoice(req).pipe(\n map((res: RecurringInvoiceApi) => convertFromApiRecurringInvoice(res))\n );\n }\n\n get(id: string): Observable<RecurringInvoice> {\n const req = new GetRecurringInvoiceRequest({\n id\n });\n return this.recurringInvoiceApiService.getRecurringInvoice(req).pipe(\n map((resp: RecurringInvoiceApi) => convertFromApiRecurringInvoice(resp))\n )\n }\n\n delete(id: string): Observable<HttpResponse<null>> {\n const req = new DeleteRecurringInvoiceRequest({\n id\n })\n return this.recurringInvoiceApiService.deleteRecurringInvoice(req);\n }\n\n list(\n filter: ListRecurringInvoicesByCustomerID | ListRecurringInvoicesByMerchantID,\n cursor: string,\n pageSize: number\n ): Observable<PagedResponse<RecurringInvoice>> {\n const req = new ListRecurringInvoicesRequest({\n pagingOptions: {\n cursor,\n pageSize,\n },\n });\n if (filter instanceof ListRecurringInvoicesByCustomerID) {\n req.customerId = filter.customerId;\n } else if (filter instanceof ListRecurringInvoicesByMerchantID) {\n req.merchantId = filter.merchantId;\n }\n return this.recurringInvoiceApiService.listRecurringInvoices(req).pipe(\n map((resp: ListRecurringInvoicesResponse) => {\n const invoices = (resp.recurringInvoices || []).map(item => convertFromApiRecurringInvoice(item));\n return new PagedResponse(invoices, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }),\n );\n }\n\n update(recurringInvoice: RecurringInvoice): Observable<RecurringInvoice> {\n const req = new UpdateRecurringInvoiceRequest({\n recurringInvoice: new RecurringInvoiceApi({\n ...recurringInvoice,\n status: convertToApiRecurringInvoiceStatus(recurringInvoice.status),\n interval: convertToApiInterval(recurringInvoice.interval),\n collectionMethod: convertToApiCollectionMethod(recurringInvoice.collectionMethod),\n paymentProcessor: convertToApiPaymentProcessor(recurringInvoice.paymentProcessor),\n items: (recurringInvoice.items || []).map(i => convertToApiRecurringInvoiceItem(i))\n })\n });\n\n return this.recurringInvoiceApiService.updateRecurringInvoice(req).pipe(\n map((res: RecurringInvoiceApi) => convertFromApiRecurringInvoice(res))\n );\n }\n}\n","import {SalesCreditNoteInterface} from '../_internal/interfaces';\nimport {Currency, currencyFromApi} from '../pricing';\nimport {SalesCreditNoteStatus as InternalSalesCreditNoteStatus} from '../_internal/enums';\nimport {\n ListSalesCreditNoteRequestListSalesCreditNoteFilters,\n} from '../_internal/objects/sales-credit-note';\n\nexport interface SalesCreditNote {\n creditNoteId: string;\n creditNoteNumber: string;\n merchantId: string;\n creditNoteReason: string;\n creditNoteDate: Date;\n dueDate: Date;\n currency: Currency;\n total: number;\n outstanding?: number;\n invoiceId: string;\n invoiceNumber: string;\n status: SalesCreditNoteStatus;\n paymentStatus?: string;\n}\n\nexport enum SalesCreditNoteStatus {\n InProgress = 'IN_PROGRESS',\n ReadyToPost = 'READY_TO_POST',\n Complete = 'COMPLETE',\n Discarded = 'DISCARDED',\n}\n\nexport interface ListFilters {\n merchantId?: string;\n statuses?: SalesCreditNoteStatus[];\n}\n\nexport function salesCreditNoteFromApi(siApi: SalesCreditNoteInterface): SalesCreditNote {\n return {\n creditNoteId: siApi.creditNoteId,\n creditNoteNumber: siApi.creditNoteNumber,\n merchantId: siApi.merchantId,\n creditNoteReason: siApi.creditNoteReason,\n creditNoteDate: siApi.creditNoteDate ? new Date(siApi.creditNoteDate) : null,\n dueDate: siApi.dueDate ? new Date(siApi.dueDate) : null,\n currency: currencyFromApi(siApi.currency),\n total: siApi.total || 0,\n outstanding: siApi.outstanding || 0,\n invoiceId: siApi.invoiceId,\n invoiceNumber: siApi.invoiceNumber,\n status: salesCreditNoteStatusFromApi(siApi.status),\n paymentStatus: siApi.paymentStatus,\n }\n}\n\nexport function listSalesCreditNoteFiltersToApi(filters: ListFilters): ListSalesCreditNoteRequestListSalesCreditNoteFilters {\n return new ListSalesCreditNoteRequestListSalesCreditNoteFilters({\n ...filters,\n statuses: (filters.statuses || []).map(s => salesCreditNoteStatusToApi(s))\n });\n}\n\n\nfunction salesCreditNoteStatusFromApi(sApi: InternalSalesCreditNoteStatus): SalesCreditNoteStatus {\n switch (sApi) {\n case InternalSalesCreditNoteStatus.SALES_CREDIT_NOTE_STATUS_READY_TO_POST:\n return SalesCreditNoteStatus.ReadyToPost;\n case InternalSalesCreditNoteStatus.SALES_CREDIT_NOTE_STATUS_COMPLETE:\n return SalesCreditNoteStatus.Complete;\n case InternalSalesCreditNoteStatus.SALES_CREDIT_NOTE_STATUS_DISCARDED:\n return SalesCreditNoteStatus.Discarded;\n }\n return SalesCreditNoteStatus.InProgress;\n}\n\nfunction salesCreditNoteStatusToApi(status: SalesCreditNoteStatus): InternalSalesCreditNoteStatus {\n switch (status) {\n case SalesCreditNoteStatus.ReadyToPost:\n return InternalSalesCreditNoteStatus.SALES_CREDIT_NOTE_STATUS_READY_TO_POST;\n case SalesCreditNoteStatus.Complete:\n return InternalSalesCreditNoteStatus.SALES_CREDIT_NOTE_STATUS_COMPLETE;\n case SalesCreditNoteStatus.Discarded:\n return InternalSalesCreditNoteStatus.SALES_CREDIT_NOTE_STATUS_DISCARDED;\n }\n return InternalSalesCreditNoteStatus.SALES_CREDIT_NOTE_STATUS_IN_PROGRESS;\n}\n","import {SalesInvoiceInterface} from '../_internal/interfaces';\nimport {Currency, currencyFromApi} from '../pricing';\nimport {\n PaymentStatuses,\n SalesInvoiceStatus as InternalSalesInvoiceStatus,\n SalesInvoiceType as InternalSalesInvoiceType\n} from '../_internal/enums';\nimport {ListSalesInvoiceRequestListSalesInvoiceFilters} from '../_internal/objects/sales-invoice';\n\nexport interface SalesInvoice {\n invoiceId: string;\n invoiceNumber: string;\n merchantId: string;\n invoiceDate: Date;\n startDate: Date;\n endDate: Date;\n dueDate: Date;\n currency: Currency;\n status: SalesInvoiceStatus;\n type: SalesInvoiceType;\n total: number;\n paymentStatus?: string;\n outstanding?: number;\n}\n\nexport enum SalesInvoiceStatus {\n InProgress = 'IN_PROGRESS',\n ReadyToPost = 'READY_TO_POST',\n Complete = 'COMPLETE',\n Discarded = 'DISCARDED',\n}\n\nexport enum SalesInvoiceType {\n Instant = 'INSTANT',\n Invoiced = 'INVOICED',\n}\n\nexport enum PaymentStatusType {\n Not_Applicable = 'Not Applicable',\n Unpaid = 'Unpaid',\n Paid = 'Paid',\n Part_Paid = 'Part Paid'\n}\n\nexport interface ListSalesInvoicesFilters {\n merchantId?: string;\n statuses?: SalesInvoiceStatus[];\n paymentStatuses?: PaymentStatusType[];\n invoiceId?: string[];\n}\n\nexport function salesInvoiceFromApi(siApi: SalesInvoiceInterface): SalesInvoice {\n return {\n invoiceId: siApi.invoiceId,\n invoiceNumber: siApi.invoiceNumber,\n merchantId: siApi.merchantId,\n invoiceDate: siApi.invoiceDate ? new Date(siApi.invoiceDate) : null,\n startDate: siApi.startDate ? new Date(siApi.startDate) : null,\n endDate: siApi.endDate ? new Date(siApi.endDate) : null,\n dueDate: siApi.dueDate ? new Date(siApi.dueDate) : null,\n currency: currencyFromApi(siApi.currency),\n status: salesInvoiceStatusFromApi(siApi.status),\n type: salesInvoiceTypeFromApi(siApi.type),\n total: siApi.total || 0,\n paymentStatus: siApi.paymentStatus,\n outstanding: siApi.outstanding || 0,\n }\n}\n\nexport function listSalesInvoiceFiltersToApi(filters: ListSalesInvoicesFilters): ListSalesInvoiceRequestListSalesInvoiceFilters {\n return new ListSalesInvoiceRequestListSalesInvoiceFilters({\n ...filters,\n statuses: (filters.statuses || []).map(s => salesInvoiceStatusToApi(s)),\n paymentStatuses: (filters.paymentStatuses || []).map(s => salesInvoicePaymentStatusToApi(s)),\n });\n}\n\n\nfunction salesInvoiceStatusFromApi(sApi: InternalSalesInvoiceStatus): SalesInvoiceStatus {\n switch (sApi) {\n case InternalSalesInvoiceStatus.SALES_INVOICE_STATUS_READY_TO_POST:\n return SalesInvoiceStatus.ReadyToPost;\n case InternalSalesInvoiceStatus.SALES_INVOICE_STATUS_COMPLETE:\n return SalesInvoiceStatus.Complete;\n case InternalSalesInvoiceStatus.SALES_INVOICE_STATUS_DISCARDED:\n return SalesInvoiceStatus.Discarded;\n }\n return SalesInvoiceStatus.InProgress;\n}\n\nfunction salesInvoiceStatusToApi(status: SalesInvoiceStatus): InternalSalesInvoiceStatus {\n switch (status) {\n case SalesInvoiceStatus.ReadyToPost:\n return InternalSalesInvoiceStatus.SALES_INVOICE_STATUS_READY_TO_POST;\n case SalesInvoiceStatus.Complete:\n return InternalSalesInvoiceStatus.SALES_INVOICE_STATUS_COMPLETE;\n case SalesInvoiceStatus.Discarded:\n return InternalSalesInvoiceStatus.SALES_INVOICE_STATUS_DISCARDED;\n }\n return InternalSalesInvoiceStatus.SALES_INVOICE_STATUS_IN_PROGRESS;\n}\n\nfunction salesInvoiceTypeFromApi(type: InternalSalesInvoiceType): SalesInvoiceType {\n switch (type) {\n case InternalSalesInvoiceType.SALES_INVOICE_TYPE_INVOICED:\n return SalesInvoiceType.Invoiced;\n case InternalSalesInvoiceType.SALES_INVOICE_TYPE_INSTANT:\n return SalesInvoiceType.Instant;\n }\n return null\n}\n\nfunction salesInvoicePaymentStatusToApi(status: PaymentStatusType): PaymentStatuses {\n switch (status) {\n case PaymentStatusType.Paid:\n return PaymentStatuses.PAYMENT_STATUSES_PAID;\n case PaymentStatusType.Part_Paid:\n return PaymentStatuses.PAYMENT_STATUSES_PART_PAID;\n case PaymentStatusType.Unpaid:\n return PaymentStatuses.PAYMENT_STATUSES_UNPAID;\n case PaymentStatusType.Not_Applicable:\n return PaymentStatuses.PAYMENT_STATUSES_NOT_APPLICABLE\n }\n return PaymentStatuses.PAYMENT_STATUSES_NOT_SET\n}\n","\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError as observableThrowError } from 'rxjs';\nimport { catchError, map, share } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport { HostService } from '../_generated';\nimport {\n CreateSalesCreditNoteRequest,\n ListSalesCreditNoteRequest,\n PagedRequestOptions,\n SalesCreditNoteApiService,\n} from '../_internal';\nimport {\n ListFilters,\n listSalesCreditNoteFiltersToApi,\n SalesCreditNote,\n salesCreditNoteFromApi,\n} from './sales-credit-note';\n\n@Injectable({providedIn: 'root'})\nexport class SalesCreditNoteService {\n constructor(private hostService: HostService, private http: HttpClient, private salesCreditNoteApi: SalesCreditNoteApiService) { }\n\n downloadPdf(salesCreditNoteId: string, merchantId?: string): Observable<Blob> {\n let params;\n if (merchantId) {\n params = { salesCreditNoteId, merchantId }\n } else {\n params = { salesCreditNoteId }\n }\n\n return this.http.get(`${this.hostService.httpsHostWithScheme()}/sales-credit-note-pdf`, {\n observe: 'body',\n params: params,\n responseType: 'blob',\n withCredentials: true,\n }).pipe(\n share(),\n catchError(this.handleDownloadPDFError.bind(this))\n );\n }\n\n createAutomatedCreditNote(merchantId: string, creditNoteReason: string, total: number, sku: string): Observable<null> {\n const req = new CreateSalesCreditNoteRequest({\n merchantId,\n creditNoteReason,\n total,\n sku,\n });\n return this.salesCreditNoteApi.create(req).pipe(map(() => null));\n }\n\n list(filters: ListFilters, cursor: string, pageSize: number): Observable<PagedResponse<SalesCreditNote>> {\n const req = new ListSalesCreditNoteRequest({\n filters: listSalesCreditNoteFiltersToApi(filters),\n pagingOptions: new PagedRequestOptions({cursor, pageSize})\n });\n return this.salesCreditNoteApi.list(req).pipe(\n map(response => {\n const salesCreditNotes = (response.creditNote || []).map(i => salesCreditNoteFromApi(i));\n return new PagedResponse(salesCreditNotes, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore)\n })\n );\n }\n\n private handleDownloadPDFError(error: HttpErrorResponse): Observable<never> {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(`Server returned ${error.message}`);\n }\n return observableThrowError(`Unable to download pdf`);\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError as observableThrowError } from 'rxjs';\nimport { catchError, map, mapTo, share } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport { HostService } from '../_generated';\nimport {\n GetSalesInvoiceRequest,\n ListSalesInvoiceRequest,\n PagedRequestOptions,\n PostSalesInvoiceRequest,\n SalesInvoiceApiService,\n} from '../_internal';\nimport {\n listSalesInvoiceFiltersToApi,\n ListSalesInvoicesFilters,\n SalesInvoice,\n salesInvoiceFromApi,\n} from './sales-invoice';\n\n@Injectable({providedIn: 'root'})\nexport class SalesInvoiceService {\n constructor(private hostService: HostService, private http: HttpClient, private salesInvoiceApi: SalesInvoiceApiService) { }\n\n downloadPdf(salesInvoiceId: string, merchantId?: string): Observable<Blob> {\n let params;\n if (merchantId) {\n params = { salesInvoiceId, merchantId }\n } else {\n params = { salesInvoiceId }\n }\n return this.http.get(\n `${this.hostService.httpsHostWithScheme()}/sales-invoice-pdf`,\n {\n observe: 'body',\n params: params,\n responseType: 'blob',\n withCredentials: true,\n }).pipe(\n share(),\n catchError(handleError)\n );\n }\n\n listSalesInvoices(\n filters: ListSalesInvoicesFilters, cursor: string, pageSize: number, searchTerm?: string\n ): Observable<PagedResponse<SalesInvoice>> {\n const req = new ListSalesInvoiceRequest({\n filters: listSalesInvoiceFiltersToApi(filters),\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n searchTerm: searchTerm || ''\n });\n return this.salesInvoiceApi.list(req).pipe(\n map(response => {\n const salesInvoices = (response.invoice || []).map(i => salesInvoiceFromApi(i));\n return new PagedResponse(salesInvoices, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore)\n })\n );\n }\n\n postSalesInvoice(invoice_id: string): Observable<boolean> {\n const req = new PostSalesInvoiceRequest({\n invoiceId: invoice_id\n });\n return this.salesInvoiceApi.post(req).pipe(\n mapTo(true)\n );\n }\n\n getSalesInvoice(invoice_id: string, merchant_id: string): Observable<SalesInvoice> {\n const req = new GetSalesInvoiceRequest({\n invoiceId: invoice_id,\n merchantId: merchant_id\n });\n return this.salesInvoiceApi.get(req).pipe(\n map(resp => salesInvoiceFromApi(resp.invoice))\n );\n }\n\n}\n\nfunction handleError(error: HttpErrorResponse): Observable<never> {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(\n `Server returned ${error.message}`\n );\n }\n\n return observableThrowError(`Unable to download pdf`);\n}\n","export enum FilePurpose {\n ACCOUNT_REQUIREMENT = 'account_requirement',\n ADDITIONAL_VERIFICATION = 'additional_verification',\n BUSINESS_ICON = 'business_icon',\n BUSINESS_LOGO = 'business_logo',\n CUSTOMER_SIGNATURE = 'customer_signature',\n DISPUTE_EVIDENCE = 'dispute_evidence',\n IDENTITY_DOCUMENT = 'identity_document',\n PCI_DOCUMENT = 'pci_document',\n TAX_DOCUMENT_USER_UPLOAD = 'tax_document_user_upload',\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError, share } from 'rxjs/operators';\nimport { handleFileUploadError } from '../http-shared/error-handlers';\nimport { HostService } from '../_generated';\nimport { FileData } from './file';\nimport { FilePurpose } from './purpose';\n\n@Injectable({providedIn: 'root'})\nexport class StripeFileService {\n constructor(\n private hostService: HostService,\n private httpClient: HttpClient\n ) {\n }\n\n uploadFile(merchantId: string, purpose: FilePurpose, file: Blob): Observable<FileData> {\n const formData = new FormData()\n formData.append('merchant_id', merchantId)\n formData.append('purpose', purpose)\n formData.append('file', file)\n\n return this.httpClient.post<FileData>(\n `${this.hostService.httpsHostWithScheme()}/stripe/files`,\n formData,\n this.apiOptions()\n ).pipe(\n share(),\n catchError(handleFileUploadError),\n )\n }\n\n private apiOptions(): { withCredentials: boolean } {\n return {\n withCredentials: true\n };\n }\n}\n","import { TaxRateInterface } from '../_internal/interfaces';\n\nexport interface TaxRate {\n id?: string;\n merchantId?: string;\n countryCode?: string;\n stateCode?: string;\n name?: string;\n description?: string;\n percentage?: number;\n accountingSystemId?: string;\n}\n\nexport function taxRateFromApi(apiTaxRate: TaxRateInterface): TaxRate {\n return {\n id: apiTaxRate.id || '',\n merchantId: apiTaxRate.merchantId || '',\n countryCode: apiTaxRate.countryCode || '',\n stateCode: apiTaxRate.stateCode || '',\n name: apiTaxRate.name || '',\n description: apiTaxRate.description || '',\n percentage: apiTaxRate.percentage || 0.0,\n accountingSystemId: apiTaxRate.accountingSystemId || '',\n };\n}\n\nexport interface ListTaxRateFilter {\n merchantId?: string;\n includeArchived?: boolean;\n}\n\nexport interface CalculateTaxResponse {\n taxableAmount: number;\n taxRates: TaxRate[];\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n ArchiveTaxRequest,\n CalculateTaxRequest,\n CreateTaxRequest,\n GetMultiTaxRequest,\n ListTaxRequest,\n PagedRequestOptions,\n TaxApiService,\n UpdateTaxRequest,\n} from '../_internal';\nimport {\n CalculateTaxResponse,\n ListTaxRateFilter,\n TaxRate,\n taxRateFromApi,\n} from './tax-rate';\n\n@Injectable({providedIn: 'root'})\nexport class TaxRateService {\n constructor(\n private taxRateApi: TaxApiService\n ) {}\n\n calculate(merchantId: string, customerId: string, amount: number): Observable<CalculateTaxResponse> {\n const r = new CalculateTaxRequest({\n merchantId: merchantId,\n customerId: customerId,\n amount: amount\n })\n return this.taxRateApi.calculate(r).pipe(\n map(response => {\n const taxRates = (response.taxRates || []).map(item => taxRateFromApi(item));\n return {\n taxableAmount: response.taxableAmount || 0,\n taxRates: taxRates\n };\n })\n );\n }\n\n create(merchantId: string, countryCode: string, stateCode: string, name: string,\n description: string, percentage: number, accountingSystemId: string): Observable<HttpResponse<null>> {\n\n const r = new CreateTaxRequest({\n merchantId: merchantId,\n countryCode: countryCode,\n stateCode: stateCode,\n name: name,\n description: description,\n percentage: percentage,\n accountingSystemId: accountingSystemId,\n });\n\n return this.taxRateApi.create(r)\n }\n\n update(merchantId: string, id: string, countryCode: string, stateCode: string, name: string,\n description: string, percentage: number, accountingSystemId: string): Observable<HttpResponse<null>> {\n\n const r = new UpdateTaxRequest({\n merchantId: merchantId,\n id: id,\n countryCode: countryCode,\n stateCode: stateCode,\n name: name,\n description: description,\n percentage: percentage,\n accountingSystemId: accountingSystemId,\n });\n\n return this.taxRateApi.update(r)\n }\n\n list(filters: ListTaxRateFilter, cursor: string, pageSize: number): Observable<PagedResponse<TaxRate>> {\n const req = new ListTaxRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.taxRateApi.list(req).pipe(\n map(response => {\n const taxRates = (response.taxRates || []).map(item => taxRateFromApi(item));\n return new PagedResponse(taxRates, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n getMulti(merchantId: string, ids: string[]): Observable<TaxRate[]> {\n const req = new GetMultiTaxRequest({\n merchantId: merchantId,\n ids: ids\n });\n return this.taxRateApi.getMulti(req).pipe(\n map(response => {\n const taxRates = (response.taxRates || []).map(item => taxRateFromApi(item));\n return taxRates;\n })\n );\n }\n\n archive(merchantId: string, id: string): Observable<HttpResponse<null>> {\n const req = new ArchiveTaxRequest({\n merchantId,\n id,\n });\n return this.taxRateApi.archive(req);\n }\n}\n","export const SNAPSHOT_REPORT_SKU = 'ST';\nexport const SNAPSHOT_REPORT_REFRESH_SKU = 'snapshotreportrefresh';\nexport const REPUTATION_MANGEMENT_SKU = 'RM';\n","import {UpdateContractRequestMutationInterface} from '../_internal';\n\nexport const setNetD = (netD: number): UpdateContractRequestMutationInterface => ({netD});\nexport const setCurrencyCode = (currencyCode: string): UpdateContractRequestMutationInterface => ({currencyCode});\nexport const setStatus = (status: string): UpdateContractRequestMutationInterface => ({status});\nexport const setDimension = (dimension: string): UpdateContractRequestMutationInterface => ({dimension});\nexport const setSigned = (signed: Date): UpdateContractRequestMutationInterface => ({signed});\nexport const setActivated = (activated: Date): UpdateContractRequestMutationInterface => ({activated});\nexport const setEnd = (end: Date): UpdateContractRequestMutationInterface => ({end});\nexport const setModified = (modified: Date): UpdateContractRequestMutationInterface => ({modified});\nexport const setCreditLimit = (creditLimit: number): UpdateContractRequestMutationInterface => ({creditLimit});\nexport const setSubscriptionId = (subscriptionId: string): UpdateContractRequestMutationInterface => ({subscriptionId});\n"]}