wapi-client 0.4.1 → 0.5.1

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 (238) hide show
  1. package/dist/api/auth/auth.enums.d.ts +4 -4
  2. package/dist/api/base-client.d.ts +354 -335
  3. package/dist/api/connection/connection.enums.d.ts +19 -7
  4. package/dist/api/http-client.d.ts +15 -0
  5. package/dist/api/index.d.ts +22 -16
  6. package/dist/api/jsonrpc/jsonrpc.enums.d.ts +53 -25
  7. package/dist/api/ws-client.d.ts +26 -25
  8. package/dist/client.d.ts +1725 -1714
  9. package/dist/db/consts.enums.d.ts +274 -272
  10. package/dist/db/index.d.ts +31 -31
  11. package/dist/db/token/token.enums.d.ts +148 -148
  12. package/dist/db/transfer/transfer.enums.d.ts +236 -236
  13. package/dist/db/transfer-group/transfer-group.enums.d.ts +160 -160
  14. package/dist/db/transfer-log/transfer-log.enums.d.ts +193 -193
  15. package/dist/db/wallet/wallet.enums.d.ts +148 -148
  16. package/dist/db/wallet-token-setting/wallet-token-setting.enums.d.ts +96 -96
  17. package/dist/db/wapi-setting/wapi-setting.enums.d.ts +88 -88
  18. package/dist/fns/aggregate-transfers/aggregate-transfers.d.ts +18 -18
  19. package/dist/fns/aggregate-transfers/aggregate-transfers.enums.d.ts +52 -52
  20. package/dist/fns/aggregate-transfers/aggregate-transfers.guards.d.ts +4 -4
  21. package/dist/fns/create-access-token/create-access-token.d.ts +8 -0
  22. package/dist/fns/create-access-token/create-access-token.enums.d.ts +21 -0
  23. package/dist/fns/create-access-token/create-access-token.guards.d.ts +4 -0
  24. package/dist/fns/create-contract/create-contract.d.ts +8 -8
  25. package/dist/fns/create-contract/create-contract.enums.d.ts +63 -63
  26. package/dist/fns/create-contract/create-contract.guards.d.ts +4 -4
  27. package/dist/fns/create-deposit/create-deposit.d.ts +9 -9
  28. package/dist/fns/create-deposit/create-deposit.enums.d.ts +63 -63
  29. package/dist/fns/create-deposit/create-deposit.guards.d.ts +4 -4
  30. package/dist/fns/create-exchange/create-exchange.d.ts +10 -10
  31. package/dist/fns/create-exchange/create-exchange.enums.d.ts +133 -133
  32. package/dist/fns/create-exchange/create-exchange.guards.d.ts +4 -4
  33. package/dist/fns/create-token/create-token.d.ts +9 -9
  34. package/dist/fns/create-token/create-token.enums.d.ts +46 -46
  35. package/dist/fns/create-token/create-token.guards.d.ts +4 -4
  36. package/dist/fns/create-transfer/create-transfer.d.ts +11 -11
  37. package/dist/fns/create-transfer/create-transfer.enums.d.ts +145 -145
  38. package/dist/fns/create-transfer/create-transfer.guards.d.ts +4 -4
  39. package/dist/fns/create-transfer-group/create-transfer-group.d.ts +12 -12
  40. package/dist/fns/create-transfer-group/create-transfer-group.enums.d.ts +142 -142
  41. package/dist/fns/create-transfer-group/create-transfer-group.guards.d.ts +4 -4
  42. package/dist/fns/create-transfers/create-transfers.d.ts +10 -10
  43. package/dist/fns/create-transfers/create-transfers.enums.d.ts +19 -19
  44. package/dist/fns/create-transfers/create-transfers.guards.d.ts +4 -4
  45. package/dist/fns/create-wallet/create-wallet.d.ts +9 -9
  46. package/dist/fns/create-wallet/create-wallet.enums.d.ts +41 -41
  47. package/dist/fns/create-wallet/create-wallet.guards.d.ts +4 -4
  48. package/dist/fns/create-withdrawal/create-withdrawal.d.ts +10 -10
  49. package/dist/fns/create-withdrawal/create-withdrawal.enums.d.ts +63 -63
  50. package/dist/fns/create-withdrawal/create-withdrawal.guards.d.ts +4 -4
  51. package/dist/fns/find-balances/find-balances.d.ts +17 -17
  52. package/dist/fns/find-balances/find-balances.enums.d.ts +30 -30
  53. package/dist/fns/find-balances/find-balances.guards.d.ts +4 -4
  54. package/dist/fns/find-tokens/find-tokens.d.ts +18 -18
  55. package/dist/fns/find-tokens/find-tokens.enums.d.ts +39 -39
  56. package/dist/fns/find-tokens/find-tokens.guards.d.ts +4 -4
  57. package/dist/fns/find-transfer-groups/find-transfer-groups.d.ts +17 -17
  58. package/dist/fns/find-transfer-groups/find-transfer-groups.enums.d.ts +52 -52
  59. package/dist/fns/find-transfer-groups/find-transfer-groups.guards.d.ts +4 -4
  60. package/dist/fns/find-transfers/find-transfers.d.ts +18 -18
  61. package/dist/fns/find-transfers/find-transfers.enums.d.ts +72 -72
  62. package/dist/fns/find-transfers/find-transfers.guards.d.ts +4 -4
  63. package/dist/fns/find-wallets/find-wallets.d.ts +18 -18
  64. package/dist/fns/find-wallets/find-wallets.enums.d.ts +48 -48
  65. package/dist/fns/find-wallets/find-wallets.guards.d.ts +4 -4
  66. package/dist/fns/fn-consts.enums.d.ts +14 -14
  67. package/dist/fns/get-balance/get-balance.d.ts +9 -9
  68. package/dist/fns/get-balance/get-balance.enums.d.ts +30 -30
  69. package/dist/fns/get-balance/get-balance.guards.d.ts +4 -4
  70. package/dist/fns/get-balance-history/get-balance-history.d.ts +9 -9
  71. package/dist/fns/get-balance-history/get-balance-history.enums.d.ts +29 -29
  72. package/dist/fns/get-balance-history/get-balance-history.guards.d.ts +4 -4
  73. package/dist/fns/get-flags/get-flags.d.ts +9 -9
  74. package/dist/fns/get-flags/get-flags.enums.d.ts +17 -17
  75. package/dist/fns/get-flags/get-flags.guards.d.ts +4 -4
  76. package/dist/fns/get-statistics/get-statistics.d.ts +9 -9
  77. package/dist/fns/get-statistics/get-statistics.enums.d.ts +24 -24
  78. package/dist/fns/get-statistics/get-statistics.guards.d.ts +4 -4
  79. package/dist/fns/get-token/get-token.d.ts +9 -9
  80. package/dist/fns/get-token/get-token.enums.d.ts +21 -21
  81. package/dist/fns/get-token/get-token.guards.d.ts +4 -4
  82. package/dist/fns/get-transfer/get-transfer.d.ts +9 -9
  83. package/dist/fns/get-transfer/get-transfer.enums.d.ts +25 -25
  84. package/dist/fns/get-transfer/get-transfer.guards.d.ts +4 -4
  85. package/dist/fns/get-transfer-group/get-transfer-group.d.ts +9 -9
  86. package/dist/fns/get-transfer-group/get-transfer-group.enums.d.ts +25 -25
  87. package/dist/fns/get-transfer-group/get-transfer-group.guards.d.ts +4 -4
  88. package/dist/fns/get-wallet/get-wallet.d.ts +9 -9
  89. package/dist/fns/get-wallet/get-wallet.enums.d.ts +25 -25
  90. package/dist/fns/get-wallet/get-wallet.guards.d.ts +4 -4
  91. package/dist/fns/import-data/import-data.d.ts +11 -11
  92. package/dist/fns/import-data/import-data.enums.d.ts +230 -230
  93. package/dist/fns/import-data/import-data.guards.d.ts +8 -8
  94. package/dist/fns/import-data/import-data.node.d.ts +11 -11
  95. package/dist/fns/index.d.ts +280 -273
  96. package/dist/fns/reverse-transfer/reverse-transfer.d.ts +10 -10
  97. package/dist/fns/reverse-transfer/reverse-transfer.enums.d.ts +48 -48
  98. package/dist/fns/reverse-transfer/reverse-transfer.guards.d.ts +4 -4
  99. package/dist/fns/reverse-transfer-group/reverse-transfer-group.d.ts +10 -10
  100. package/dist/fns/reverse-transfer-group/reverse-transfer-group.enums.d.ts +64 -64
  101. package/dist/fns/reverse-transfer-group/reverse-transfer-group.guards.d.ts +4 -4
  102. package/dist/fns/reverse-transfers/reverse-transfers.d.ts +16 -16
  103. package/dist/fns/reverse-transfers/reverse-transfers.enums.d.ts +55 -55
  104. package/dist/fns/reverse-transfers/reverse-transfers.guards.d.ts +4 -4
  105. package/dist/fns/set-flags/set-flags.d.ts +10 -10
  106. package/dist/fns/set-flags/set-flags.enums.d.ts +21 -21
  107. package/dist/fns/set-flags/set-flags.guards.d.ts +4 -4
  108. package/dist/fns/update-token/update-token.d.ts +8 -8
  109. package/dist/fns/update-token/update-token.enums.d.ts +43 -43
  110. package/dist/fns/update-token/update-token.guards.d.ts +4 -4
  111. package/dist/fns/update-transfer/update-transfer.d.ts +9 -9
  112. package/dist/fns/update-transfer/update-transfer.enums.d.ts +32 -32
  113. package/dist/fns/update-transfer/update-transfer.guards.d.ts +4 -4
  114. package/dist/fns/update-transfer-group/update-transfer-group.d.ts +9 -9
  115. package/dist/fns/update-transfer-group/update-transfer-group.enums.d.ts +46 -46
  116. package/dist/fns/update-transfer-group/update-transfer-group.guards.d.ts +4 -4
  117. package/dist/fns/update-transfer-groups/update-transfer-groups.d.ts +15 -15
  118. package/dist/fns/update-transfer-groups/update-transfer-groups.enums.d.ts +44 -44
  119. package/dist/fns/update-transfer-groups/update-transfer-groups.guards.d.ts +4 -4
  120. package/dist/fns/update-transfers/update-transfers.d.ts +15 -15
  121. package/dist/fns/update-transfers/update-transfers.enums.d.ts +52 -52
  122. package/dist/fns/update-transfers/update-transfers.guards.d.ts +4 -4
  123. package/dist/fns/update-wallet/update-wallet.d.ts +8 -8
  124. package/dist/fns/update-wallet/update-wallet.enums.d.ts +43 -43
  125. package/dist/fns/update-wallet/update-wallet.guards.d.ts +4 -4
  126. package/dist/index.d.ts +80 -73
  127. package/dist/lib/debug.d.ts +1 -1
  128. package/dist/lib/errors.d.ts +317 -310
  129. package/dist/lib/isomorphic/node/get-random-hex.d.ts +1 -1
  130. package/dist/lib/isomorphic/node/streams.d.ts +28 -29
  131. package/dist/lib/isomorphic/node/ws.d.ts +2 -2
  132. package/dist/lib/query-builder.d.ts +252 -252
  133. package/dist/lib/stream-promise-input.d.ts +33 -33
  134. package/dist/lib/stream-promise.d.ts +40 -40
  135. package/dist/lib/utils.d.ts +48 -48
  136. package/dist/lib/validator.d.ts +259 -253
  137. package/dist/txs/aggregate-transfer-many/aggregate-transfer-many.enums.d.ts +64 -64
  138. package/dist/txs/aggregate-transfer-many/aggregate-transfer-many.guards.d.ts +4 -4
  139. package/dist/txs/authentication-check/authentication-check.enums.d.ts +22 -0
  140. package/dist/txs/authentication-check/authentication-check.guards.d.ts +4 -0
  141. package/dist/txs/create-access-token/create-access-token.enums.d.ts +51 -0
  142. package/dist/txs/create-access-token/create-access-token.guards.d.ts +4 -0
  143. package/dist/txs/create-contract/create-contract.enums.d.ts +79 -79
  144. package/dist/txs/create-contract/create-contract.guards.d.ts +4 -4
  145. package/dist/txs/create-deposit/create-deposit.enums.d.ts +19 -19
  146. package/dist/txs/create-deposit/create-deposit.guards.d.ts +4 -4
  147. package/dist/txs/create-distribution/create-distribution.enums.d.ts +107 -104
  148. package/dist/txs/create-distribution/create-distribution.guards.d.ts +4 -4
  149. package/dist/txs/create-token/create-token.enums.d.ts +54 -54
  150. package/dist/txs/create-token/create-token.guards.d.ts +4 -4
  151. package/dist/txs/create-transfer/create-transfer.enums.d.ts +209 -209
  152. package/dist/txs/create-transfer/create-transfer.guards.d.ts +4 -4
  153. package/dist/txs/create-transfer-group/create-transfer-group.enums.d.ts +200 -200
  154. package/dist/txs/create-transfer-group/create-transfer-group.guards.d.ts +4 -4
  155. package/dist/txs/create-transfer-many/create-transfer-many.enums.d.ts +53 -53
  156. package/dist/txs/create-transfer-many/create-transfer-many.guards.d.ts +4 -4
  157. package/dist/txs/create-wallet/create-wallet.enums.d.ts +20 -20
  158. package/dist/txs/create-wallet/create-wallet.guards.d.ts +4 -4
  159. package/dist/txs/create-withdrawal/create-withdrawal.enums.d.ts +19 -19
  160. package/dist/txs/create-withdrawal/create-withdrawal.guards.d.ts +4 -4
  161. package/dist/txs/find-balance-many/find-balance-many.enums.d.ts +97 -97
  162. package/dist/txs/find-balance-many/find-balance-many.guards.d.ts +4 -4
  163. package/dist/txs/find-token-many/find-token-many.enums.d.ts +81 -81
  164. package/dist/txs/find-token-many/find-token-many.guards.d.ts +4 -4
  165. package/dist/txs/find-transfer-group-many/find-transfer-group-many.enums.d.ts +90 -90
  166. package/dist/txs/find-transfer-group-many/find-transfer-group-many.guards.d.ts +4 -4
  167. package/dist/txs/find-transfer-many/find-transfer-many.enums.d.ts +93 -93
  168. package/dist/txs/find-transfer-many/find-transfer-many.guards.d.ts +4 -4
  169. package/dist/txs/find-wallet-many/find-wallet-many.enums.d.ts +181 -179
  170. package/dist/txs/find-wallet-many/find-wallet-many.guards.d.ts +4 -4
  171. package/dist/txs/finish-transaction/finish-transaction.enums.d.ts +33 -29
  172. package/dist/txs/finish-transaction/finish-transaction.guards.d.ts +4 -4
  173. package/dist/txs/get-balance/get-balance.enums.d.ts +107 -107
  174. package/dist/txs/get-balance/get-balance.guards.d.ts +4 -4
  175. package/dist/txs/get-balance-history/get-balance-history.enums.d.ts +188 -188
  176. package/dist/txs/get-balance-history/get-balance-history.guards.d.ts +4 -4
  177. package/dist/txs/get-flags/get-flags.enums.d.ts +19 -19
  178. package/dist/txs/get-flags/get-flags.guards.d.ts +4 -4
  179. package/dist/txs/get-statistics/get-statistics.enums.d.ts +58 -58
  180. package/dist/txs/get-statistics/get-statistics.guards.d.ts +4 -4
  181. package/dist/txs/get-token/get-token.enums.d.ts +114 -114
  182. package/dist/txs/get-token/get-token.guards.d.ts +4 -4
  183. package/dist/txs/get-token-many/get-token-many.enums.d.ts +36 -36
  184. package/dist/txs/get-token-many/get-token-many.guards.d.ts +4 -4
  185. package/dist/txs/get-transfer/get-transfer.enums.d.ts +283 -283
  186. package/dist/txs/get-transfer/get-transfer.guards.d.ts +4 -4
  187. package/dist/txs/get-transfer-group/get-transfer-group.enums.d.ts +121 -121
  188. package/dist/txs/get-transfer-group/get-transfer-group.guards.d.ts +4 -4
  189. package/dist/txs/get-wallet/get-wallet.enums.d.ts +67 -67
  190. package/dist/txs/get-wallet/get-wallet.guards.d.ts +4 -4
  191. package/dist/txs/get-wallet-many/get-wallet-many.enums.d.ts +36 -36
  192. package/dist/txs/get-wallet-many/get-wallet-many.guards.d.ts +4 -4
  193. package/dist/txs/import-actions/import-actions.enums.d.ts +179 -206
  194. package/dist/txs/import-actions/import-actions.guards.d.ts +8 -8
  195. package/dist/txs/index.d.ts +271 -259
  196. package/dist/txs/query/query.enums.d.ts +30 -30
  197. package/dist/txs/query/query.guards.d.ts +4 -4
  198. package/dist/txs/query-logs/query-logs.enums.d.ts +54 -50
  199. package/dist/txs/query-logs/query-logs.guards.d.ts +4 -4
  200. package/dist/txs/reset-database/reset-database.enums.d.ts +34 -34
  201. package/dist/txs/reset-database/reset-database.guards.d.ts +4 -4
  202. package/dist/txs/reverse-transfer/reverse-transfer.enums.d.ts +72 -72
  203. package/dist/txs/reverse-transfer/reverse-transfer.guards.d.ts +4 -4
  204. package/dist/txs/reverse-transfer-group/reverse-transfer-group.enums.d.ts +95 -95
  205. package/dist/txs/reverse-transfer-group/reverse-transfer-group.guards.d.ts +4 -4
  206. package/dist/txs/reverse-transfer-group-many/reverse-transfer-group-many.enums.d.ts +77 -77
  207. package/dist/txs/reverse-transfer-group-many/reverse-transfer-group-many.guards.d.ts +4 -4
  208. package/dist/txs/reverse-transfer-many/reverse-transfer-many.enums.d.ts +58 -58
  209. package/dist/txs/reverse-transfer-many/reverse-transfer-many.guards.d.ts +4 -4
  210. package/dist/txs/set-flags/set-flags.enums.d.ts +24 -24
  211. package/dist/txs/set-flags/set-flags.guards.d.ts +4 -4
  212. package/dist/txs/start-transaction/start-transaction.enums.d.ts +18 -18
  213. package/dist/txs/start-transaction/start-transaction.guards.d.ts +4 -4
  214. package/dist/txs/tx-consts.enums.d.ts +236 -236
  215. package/dist/txs/update-token/update-token.enums.d.ts +51 -51
  216. package/dist/txs/update-token/update-token.guards.d.ts +4 -4
  217. package/dist/txs/update-transfer/update-transfer.enums.d.ts +78 -78
  218. package/dist/txs/update-transfer/update-transfer.guards.d.ts +4 -4
  219. package/dist/txs/update-transfer-group/update-transfer-group.enums.d.ts +91 -91
  220. package/dist/txs/update-transfer-group/update-transfer-group.guards.d.ts +4 -4
  221. package/dist/txs/update-transfer-group-many/update-transfer-group-many.enums.d.ts +40 -40
  222. package/dist/txs/update-transfer-group-many/update-transfer-group-many.guards.d.ts +4 -4
  223. package/dist/txs/update-transfer-many/update-transfer-many.enums.d.ts +36 -36
  224. package/dist/txs/update-transfer-many/update-transfer-many.guards.d.ts +4 -4
  225. package/dist/txs/update-wallet/update-wallet.enums.d.ts +54 -54
  226. package/dist/txs/update-wallet/update-wallet.guards.d.ts +4 -4
  227. package/dist/wapi-client.cjs.development.js +30183 -21451
  228. package/dist/wapi-client.cjs.js +17 -7
  229. package/package.json +9 -5
  230. package/dist/fns/import-data/import-data.web.d.ts +0 -11
  231. package/dist/lib/isomorphic/web/get-random-hex.d.ts +0 -1
  232. package/dist/lib/isomorphic/web/streams.d.ts +0 -26
  233. package/dist/lib/isomorphic/web/ws.d.ts +0 -18
  234. package/dist/wapi-client.cjs.development.js.map +0 -1
  235. package/dist/wapi-client.cjs.production.js +0 -2
  236. package/dist/wapi-client.cjs.production.js.map +0 -1
  237. package/dist/wapi-client.esm.js +0 -21329
  238. package/dist/wapi-client.esm.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"wapi-client.esm.js","sources":["../src/lib/isomorphic/node/ws.ts","../src/lib/debug.ts","../src/lib/errors.ts","../src/lib/isomorphic/node/get-random-hex.ts","../src/lib/utils.ts","../src/api/jsonrpc/jsonrpc.enums.ts","../src/lib/isomorphic/node/streams.ts","../src/lib/stream-promise.ts","../src/lib/stream-promise-input.ts","../src/lib/validator.ts","../src/txs/tx-consts.enums.ts","../src/txs/index.ts","../src/txs/import-actions/import-actions.guards.ts","../src/api/base-client.ts","../src/api/connection/connection.enums.ts","../src/api/ws-client.ts","../src/lib/query-builder.ts","../src/fns/aggregate-transfers/aggregate-transfers.ts","../src/fns/create-contract/create-contract.ts","../src/fns/create-deposit/create-deposit.ts","../src/fns/create-exchange/create-exchange.ts","../src/fns/create-token/create-token.ts","../src/fns/create-transfer/create-transfer.ts","../src/fns/create-transfer-group/create-transfer-group.ts","../src/fns/create-transfers/create-transfers.ts","../src/fns/create-wallet/create-wallet.ts","../src/fns/create-withdrawal/create-withdrawal.ts","../src/fns/find-balances/find-balances.ts","../src/fns/find-tokens/find-tokens.ts","../src/fns/find-transfer-groups/find-transfer-groups.ts","../src/fns/find-transfers/find-transfers.ts","../src/fns/find-wallets/find-wallets.ts","../src/fns/get-balance/get-balance.ts","../src/fns/get-balance-history/get-balance-history.ts","../src/fns/get-flags/get-flags.ts","../src/fns/get-statistics/get-statistics.ts","../src/fns/get-token/get-token.ts","../src/fns/get-transfer/get-transfer.ts","../src/fns/get-transfer-group/get-transfer-group.ts","../src/fns/get-wallet/get-wallet.ts","../src/fns/import-data/import-data.guards.ts","../src/fns/import-data/import-data.ts","../src/fns/reverse-transfer/reverse-transfer.ts","../src/fns/reverse-transfer-group/reverse-transfer-group.ts","../src/fns/reverse-transfers/reverse-transfers.ts","../src/db/consts.enums.ts","../src/fns/set-flags/set-flags.ts","../src/fns/update-token/update-token.ts","../src/fns/update-transfer/update-transfer.ts","../src/fns/update-transfer-group/update-transfer-group.ts","../src/fns/update-transfer-groups/update-transfer-groups.ts","../src/fns/update-transfers/update-transfers.ts","../src/fns/update-wallet/update-wallet.ts","../src/fns/index.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["export { CloseEvent, ErrorEvent, MessageEvent } from 'ws';\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nexport const WebSocket = require('ws');\n","export function debugLog(...args: unknown[]): void {\n if (process.env.WAPI_DEBUG) {\n console.log(...args);\n }\n}\n","// COMMON\n/*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\n\nexport interface CoreErrorObject {\n message: string;\n description?: string;\n data?: unknown;\n code?: string | number;\n}\n\nexport class CoreError extends Error {\n public message: string;\n public code?: string | number;\n public description?: string;\n public data?: unknown;\n\n constructor({ code, message, data, description }: CoreErrorObject) {\n super(message);\n this.code = code;\n this.message = message;\n this.data = data;\n this.description =\n description ?? ErrorDescriptions[message as ERROR_MESSAGES] ?? '';\n }\n\n toJSON(): CoreErrorObject {\n return {\n code: this.code,\n message: this.message,\n description: this.description,\n data: this.data,\n };\n }\n}\n\nexport interface ErrorInput extends CoreErrorObject {\n code?: ERROR_TYPES;\n}\n\nexport class DatabaseError extends CoreError {\n constructor({ message, data, code }: ErrorInput) {\n super({\n message,\n data,\n code: code || (ERROR_TYPES.DatabaseError as string),\n });\n }\n}\n\nexport class ValidationError extends CoreError {\n constructor({ message, data, code }: ErrorInput) {\n super({\n message,\n data,\n code: code || (ERROR_TYPES.SchemaValidationError as string),\n });\n }\n}\n\nexport class InputError extends CoreError {\n constructor({ message, data, code }: ErrorInput) {\n super({\n message,\n data,\n code: code || (ERROR_TYPES.InputError as string),\n });\n }\n}\n\nexport class ConstraintError extends CoreError {\n constructor({ message, data, code }: ErrorInput) {\n super({\n message,\n data,\n code: code || (ERROR_TYPES.ConstraintError as string),\n });\n }\n}\n\nexport class UnknownError extends CoreError {\n constructor({ message, data, code }: ErrorInput) {\n super({\n message,\n data,\n code: code || (ERROR_TYPES.UnknownError as string),\n });\n }\n}\n\nexport class ConnectionError extends CoreError {\n constructor({ message, data, code }: ErrorInput) {\n super({\n message,\n data,\n code: code || (ERROR_TYPES.ConnectionError as string),\n });\n }\n}\n\nexport class StreamError extends CoreError {\n constructor({ message, data, code }: ErrorInput) {\n super({\n message,\n data,\n code: code || (ERROR_TYPES.StreamError as string),\n });\n }\n}\n\nexport class AuthenticationError extends CoreError {\n constructor({ message, data, code }: ErrorInput) {\n super({\n message,\n data,\n code: code || (ERROR_TYPES.AuthenticationError as string),\n });\n }\n}\n\nexport type WAPIError =\n | DatabaseError\n | InputError\n | ValidationError\n | UnknownError\n | ConnectionError\n | ConstraintError\n | StreamError\n | AuthenticationError;\n\nexport function getError({ message, data, code }: ErrorInput): WAPIError {\n switch (code) {\n case ERROR_TYPES.SchemaValidationError:\n return new ValidationError({ message, data, code });\n case ERROR_TYPES.DatabaseError:\n return new DatabaseError({ message, data, code });\n case ERROR_TYPES.InputError:\n return new InputError({ message, data, code });\n case ERROR_TYPES.ConstraintError:\n return new ConstraintError({ message, data, code });\n case ERROR_TYPES.ConnectionError:\n return new ConnectionError({ message, data, code });\n case ERROR_TYPES.StreamError:\n return new StreamError({ message, data, code });\n case ERROR_TYPES.AuthenticationError:\n return new AuthenticationError({ message, data, code });\n default:\n return new UnknownError({ message, data, code });\n }\n}\n\nexport enum ERROR_TYPES {\n /**\n * Error validating input/output against JSON Schema\n */\n SchemaValidationError = 'SchemaValidationError',\n /**\n * Provided input results in error in the Database layer\n */\n DatabaseError = 'DatabaseError',\n /**\n * Provided input is invalid\n */\n InputError = 'InputError',\n /**\n * General Error when no other class applies\n */\n UnknownError = 'UnknownError',\n /**\n * Conflict with logical constraints in the system\n */\n ConstraintError = 'ConstraintError',\n /**\n * Error with the connection to WAPI Server instance\n */\n ConnectionError = 'ConnectionError',\n /**\n * Error with streaming results to Client\n */\n StreamError = 'StreamError',\n /**\n * Error validating provided credentials\n */\n AuthenticationError = 'AuthenticationError',\n}\n\nexport enum ERROR_MESSAGES {\n // ERRORMESSAGES\n /*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\n\n /**\n * Provided credentials are invalid\n */\n AUTHENTICATION_FAILED = 'AUTHENTICATION_FAILED',\n /**\n * Balance datetime can't be in the future\n */\n BAL_FUTURE_DATETIME = 'BAL_FUTURE_DATETIME',\n /**\n * return_running_balance and return_running_balance_for can't be specified together\n */\n CONFLICTING_OPTIONS = 'CONFLICTING_OPTIONS',\n /**\n * Unable to find Wallet specified as Contract token owner\n */\n CONTRACT_OWNER_NOT_FOUND = 'CONTRACT_OWNER_NOT_FOUND',\n /**\n * Something went wrong in the DB layer\n */\n DATABASE_ERROR = 'DATABASE_ERROR',\n /**\n * Unable to resolve all targets (Wallets, Tokens) for distribution request\n */\n DISTRIBUTION_MISSING_TARGETS = 'DISTRIBUTION_MISSING_TARGETS',\n /**\n * Unable to resolve all targets (Wallets, Token) for exchange request\n */\n EXCHANGE_MISSING_TARGETS = 'EXCHANGE_MISSING_TARGETS',\n /**\n * The import contract specifies Token that does not exist\n */\n IMPORT_MISSING_CONTRACT_TOKEN = 'IMPORT_MISSING_CONTRACT_TOKEN',\n /**\n * The import results in invalid Token without valid Wallet\n */\n IMPORT_MISSING_TOKEN_WALLET = 'IMPORT_MISSING_TOKEN_WALLET',\n /**\n * The import includes create directives for same object multiple times\n */\n IMPORT_OBJECT_DUPLICATE = 'IMPORT_OBJECT_DUPLICATE',\n /**\n * The import includes create directives for already existing objects\n */\n IMPORT_OBJECT_EXISTS = 'IMPORT_OBJECT_EXISTS',\n /**\n * The oldest Transfer in the import file is older than already existing Transfers in the WAPI instance\n */\n IMPORT_PREDATED_TRANSFER = 'IMPORT_PREDATED_TRANSFER',\n /**\n * The import includes create directive for object that is used in Transfer before create dateTime\n */\n IMPORT_USE_BEFORE_CREATE = 'IMPORT_USE_BEFORE_CREATE',\n /**\n * Missing identifier - automatically calculated identifiers conflict on identical input for 30s To make an identical transfer during that window you need to provide a unique identifier\n */\n INPUT_NEEDS_IDENTIFIER = 'INPUT_NEEDS_IDENTIFIER',\n /**\n * token must be specified on input or in client config\n */\n INPUT_NEEDS_TOKEN = 'INPUT_NEEDS_TOKEN',\n /**\n * Input stream emitted an error\n */\n INPUT_STREAM_ERROR = 'INPUT_STREAM_ERROR',\n /**\n * No data provided to input stream in 30s\n */\n INPUT_STREAM_TIMEOUT = 'INPUT_STREAM_TIMEOUT',\n /**\n * Invalid input stream identifier provided\n */\n INPUT_STREAM_INVALID = 'INPUT_STREAM_INVALID',\n /**\n * Method does not support input stream\n */\n INPUT_STREAM_NOT_ALLOWED = 'INPUT_STREAM_NOT_ALLOWED',\n /**\n * Invalid input on stream\n */\n INPUT_INVALID = 'INPUT_INVALID',\n /**\n * The provided complex filter does not pass validation\n */\n INVALID_COMPLEX_FILTER = 'INVALID_COMPLEX_FILTER',\n /**\n * Provided aggregation field was not found on Model\n */\n INVALID_FIELD_AGR_COMB = 'INVALID_FIELD_AGR_COMB',\n /**\n * Provided groupBy field was not found on Model\n */\n INVALID_FIELD_FOR_MODEL = 'INVALID_FIELD_FOR_MODEL',\n /**\n * Provided latest_control_hash does not match the latest outgoing Transfer from Wallet\n */\n INVALID_LATEST_HASH = 'INVALID_LATEST_HASH',\n /**\n * Provided Model name is invalid\n */\n INVALID_MODEL = 'INVALID_MODEL',\n /**\n * Can't use metadata field for grouping as current Model does not have metadata\n */\n NO_METADATA_ON_MODEL = 'NO_METADATA_ON_MODEL',\n /**\n * return_running_balance option requires Wallet filter to be specified\n */\n RUNNING_BALANCE_WITHOUT_WALLET = 'RUNNING_BALANCE_WITHOUT_WALLET',\n /**\n * return_signed_balance option requires Wallet filter to be specified\n */\n SIGNED_AMOUNT_WITHOUT_WALLET = 'SIGNED_AMOUNT_WITHOUT_WALLET',\n /**\n * Invalid belongs_to wallet provided\n */\n TOKEN_INVALID_WALLET = 'TOKEN_INVALID_WALLET',\n /**\n * Unable to issue more tokens as Token.limit has been reached\n */\n TOKEN_LIMIT_REACHED = 'TOKEN_LIMIT_REACHED',\n /**\n * Transfer amount is not divisible by specified Token.divisor\n */\n TR_AMOUNT_NOT_DIVISIBLE = 'TR_AMOUNT_NOT_DIVISIBLE',\n /**\n * Cancelled Transfer can not be reversed\n */\n TR_CANCELLED_CANT_RV = 'TR_CANCELLED_CANT_RV',\n /**\n * Transfer status can only move from 'pending'->'finished'/'cancelled\n */\n TR_CANT_UPDATE_TO_PENDING = 'TR_CANT_UPDATE_TO_PENDING',\n /**\n * Deposits are expected connection points with outside systems, thus extra validation is required. Reversing a Transfer.type = 'deposit' requires reverse_deposit option to be true.\n */\n TR_DEPOSIT_CANT_RV_WITHOUT_FLAG = 'TR_DEPOSIT_CANT_RV_WITHOUT_FLAG',\n /**\n * From wallet can't be specified when doing a deposit\n */\n TR_FROM_WALLET_DEPOSIT = 'TR_FROM_WALLET_DEPOSIT',\n /**\n * From wallet.status doesn't allow this type of transfers\n */\n TR_FROM_WALLET_STATUS_CONSTRAINT = 'TR_FROM_WALLET_STATUS_CONSTRAINT',\n /**\n * Transfer results in invalid balance for a Wallet\n */\n TR_INVALID_BALANCE = 'TR_INVALID_BALANCE',\n /**\n * Cant create cancelled transfer\n */\n TR_INVALID_CANCELLED = 'TR_INVALID_CANCELLED',\n /**\n * Transfer.created_at must be the latest\n */\n TR_TIMESTAMP_IN_PAST = 'TR_TIMESTAMP_IN_PAST',\n /**\n * To wallet.status doesn't allow this type of transfers\n */\n TR_TO_WALLET_STATUS_CONSTRAINT = 'TR_TO_WALLET_STATUS_CONSTRAINT',\n /**\n * To wallet can't be specified when doing a withdrawal\n */\n TR_TO_WALLET_WITHDRAWAL = 'TR_TO_WALLET_WITHDRAWAL',\n /**\n * Token status is set to 'disabled' - no new transfers allowed\n */\n TR_TOKEN_DISABLED = 'TR_TOKEN_DISABLED',\n /**\n * Token status is set to 'dw-only' - only deposits or withdrawals allowed\n */\n TR_TOKEN_DWONLY = 'TR_TOKEN_DWONLY',\n /**\n * Cant add Transfer to group. TransferGroup is closed\n */\n TR_TRG_CLOSED = 'TR_TRG_CLOSED',\n /**\n * Transfers in transfer_group must match transfer_group.transfer_status\n */\n TR_TRG_STATUS_MISMATCH = 'TR_TRG_STATUS_MISMATCH',\n /**\n * Withdrawals are expected connection points with outside systems, thus extra validation is required. Reversing a Transfer.type = 'withdrawal' requires reverse_withdrawal option to be true.\n */\n TR_WITHDRAWAL_CANT_RV_WITHOUT_FLAG = 'TR_WITHDRAWAL_CANT_RV_WITHOUT_FLAG',\n /**\n * No open DB transaction with provided was found\n */\n TRANSACTION_NOT_FOUND = 'TRANSACTION_NOT_FOUND',\n /**\n * Transaction timed out\n */\n TRANSACTION_TIMEOUT = 'TRANSACTION_TIMEOUT',\n /**\n * For integrity reasons running balance validations are required if TransferGroup.transfer_status_lock = false\n */\n TRG_BALANCE_CHECK_REQUIRED_WITHOUT_STATUS_LOCK = 'TRG_BALANCE_CHECK_REQUIRED_WITHOUT_STATUS_LOCK',\n /**\n * Cancelled TransferGroup can not be reversed\n */\n TRG_CANCELLED_CANT_RV = 'TRG_CANCELLED_CANT_RV',\n /**\n * TransferGroup includes Transfer.type = 'deposit', thus for extra validation the reverse_deposit option must be set true\n */\n TRG_DEPOSIT_CANT_RV_WITHOUT_FLAG = 'TRG_DEPOSIT_CANT_RV_WITHOUT_FLAG',\n /**\n * Transfer is part of TransferGroup and can not be reversed separately\n */\n TRG_SINGLE_PENDING_TR_CANT_RV = 'TRG_SINGLE_PENDING_TR_CANT_RV',\n /**\n * TransferGroup includes Transfer.type = 'withdrawal', thus for extra validation the reverse_withdrawal option must be set true\n */\n TRG_WITHDRAWAL_CANT_RV_WITHOUT_FLAG = 'TRG_WITHDRAWAL_CANT_RV_WITHOUT_FLAG',\n /**\n * Invalid aggregator function provided\n */\n UNCLEAR_AGGREGATOR = 'UNCLEAR_AGGREGATOR',\n /**\n * Transactions can't reversed or updated without valid filter\n */\n TR_MISSING_FILTER = 'TR_MISSING_FILTER',\n /**\n * Transaction groups can't reversed or updated without valid filter\n */\n TRG_MISSING_FILTER = 'TRG_MISSING_FILTER',\n /**\n * Method is disabled\n */\n METHOD_DISABLED = 'METHOD_DISABLED',\n // ERRORMESSAGES\n}\n\nexport const ErrorDescriptions: {\n [key in keyof typeof ERROR_MESSAGES]: string;\n} = {\n AUTHENTICATION_FAILED: `Provided credentials are invalid`,\n BAL_FUTURE_DATETIME: `Balance datetime can't be in the future`,\n CONFLICTING_OPTIONS: `return_running_balance and return_running_balance_for can't be specified together`,\n CONTRACT_OWNER_NOT_FOUND: `Unable to find Wallet specified as Contract token owner`,\n DATABASE_ERROR: `Something went wrong in the DB layer`,\n DISTRIBUTION_MISSING_TARGETS: `Unable to resolve all targets (Wallets, Tokens) for distribution request`,\n EXCHANGE_MISSING_TARGETS: `Unable to resolve all targets (Wallets, Token) for exchange request`,\n IMPORT_MISSING_CONTRACT_TOKEN: `The import contract specifies Token that does not exist`,\n IMPORT_MISSING_TOKEN_WALLET: `The import results in invalid Token without valid Wallet`,\n IMPORT_OBJECT_DUPLICATE: `The import includes create directives for same object multiple times`,\n IMPORT_OBJECT_EXISTS: `The import includes create directives for already existing objects`,\n IMPORT_PREDATED_TRANSFER: `The oldest Transfer in the import file is older than already existing Transfers in the WAPI instance`,\n IMPORT_USE_BEFORE_CREATE: `The import includes create directive for object that is used in Transfer before create dateTime`,\n INPUT_NEEDS_IDENTIFIER: `Missing identifier - automatically calculated identifiers conflict on identical input for 30s To make an identical transfer during that window you need to provide a unique identifier`,\n INPUT_NEEDS_TOKEN: `token must be specified on input or in client config`,\n INPUT_STREAM_ERROR: `Input stream emitted an error`,\n INPUT_STREAM_TIMEOUT: `No data provided to input stream in 30s`,\n INPUT_STREAM_INVALID: `Invalid input stream identifier provided`,\n INPUT_STREAM_NOT_ALLOWED: `Method does not support input stream`,\n INPUT_INVALID: `Invalid input on stream`,\n INVALID_COMPLEX_FILTER: `The provided complex filter does not pass validation`,\n INVALID_FIELD_AGR_COMB: `Provided aggregation field was not found on Model`,\n INVALID_FIELD_FOR_MODEL: `Provided groupBy field was not found on Model`,\n INVALID_LATEST_HASH: `Provided latest_control_hash does not match the latest outgoing Transfer from Wallet`,\n INVALID_MODEL: `Provided Model name is invalid`,\n NO_METADATA_ON_MODEL: `Can't use metadata field for grouping as current Model does not have metadata`,\n RUNNING_BALANCE_WITHOUT_WALLET: `return_running_balance option requires Wallet filter to be specified`,\n SIGNED_AMOUNT_WITHOUT_WALLET: `return_signed_balance option requires Wallet filter to be specified`,\n TOKEN_INVALID_WALLET: `Invalid belongs_to wallet provided`,\n TOKEN_LIMIT_REACHED: `Unable to issue more tokens as Token.limit has been reached`,\n TR_AMOUNT_NOT_DIVISIBLE: `Transfer amount is not divisible by specified Token.divisor`,\n TR_CANCELLED_CANT_RV: `Cancelled Transfer can not be reversed`,\n TR_CANT_UPDATE_TO_PENDING: `Transfer status can only move from 'pending'->'finished'/'cancelled`,\n TR_DEPOSIT_CANT_RV_WITHOUT_FLAG: `Deposits are expected connection points with outside systems, thus extra validation is required. Reversing a Transfer.type = 'deposit' requires reverse_deposit option to be true.`,\n TR_FROM_WALLET_DEPOSIT: `From wallet can't be specified when doing a deposit`,\n TR_FROM_WALLET_STATUS_CONSTRAINT: `From wallet.status doesn't allow this type of transfers`,\n TR_INVALID_BALANCE: `Transfer results in invalid balance for a Wallet`,\n TR_INVALID_CANCELLED: `Cant create cancelled transfer`,\n TR_TIMESTAMP_IN_PAST: `Transfer.created_at must be the latest`,\n TR_TO_WALLET_STATUS_CONSTRAINT: `To wallet.status doesn't allow this type of transfers`,\n TR_TO_WALLET_WITHDRAWAL: `To wallet can't be specified when doing a withdrawal`,\n TR_TOKEN_DISABLED: `Token status is set to 'disabled' - no new transfers allowed`,\n TR_TOKEN_DWONLY: `Token status is set to 'dw-only' - only deposits or withdrawals allowed`,\n TR_TRG_CLOSED: `Cant add Transfer to group. TransferGroup is closed`,\n TR_TRG_STATUS_MISMATCH: `Transfers in transfer_group must match transfer_group.transfer_status`,\n TR_WITHDRAWAL_CANT_RV_WITHOUT_FLAG: `Withdrawals are expected connection points with outside systems, thus extra validation is required. Reversing a Transfer.type = 'withdrawal' requires reverse_withdrawal option to be true.`,\n TRANSACTION_NOT_FOUND: `No open DB transaction with provided was found`,\n TRANSACTION_TIMEOUT: `Transaction timed out`,\n TRG_BALANCE_CHECK_REQUIRED_WITHOUT_STATUS_LOCK: `For integrity reasons running balance validations are required if TransferGroup.transfer_status_lock = false`,\n TRG_CANCELLED_CANT_RV: `Cancelled TransferGroup can not be reversed`,\n TRG_DEPOSIT_CANT_RV_WITHOUT_FLAG: `TransferGroup includes Transfer.type = 'deposit', thus for extra validation the reverse_deposit option must be set true`,\n TRG_SINGLE_PENDING_TR_CANT_RV: `Transfer is part of TransferGroup and can not be reversed separately`,\n TRG_WITHDRAWAL_CANT_RV_WITHOUT_FLAG: `TransferGroup includes Transfer.type = 'withdrawal', thus for extra validation the reverse_withdrawal option must be set true`,\n UNCLEAR_AGGREGATOR: `Invalid aggregator function provided`,\n TR_MISSING_FILTER: `Transactions can't reversed or updated without valid filter`,\n TRG_MISSING_FILTER: `Transaction groups can't reversed or updated without valid filter`,\n METHOD_DISABLED: `Method is disabled`,\n};\n\n// COMMON\n","import { randomBytes } from 'crypto';\nexport function getRandomHex(length = 8): string {\n return randomBytes(length).toString('hex');\n}\n","import { EWapiConnectionOptions } from '../api/ws-client';\nimport { ErrorMessage } from '../index';\nimport { ITxOrderingInput } from '../txs';\nimport { InputError, ValidationError } from './errors';\nimport { v4 } from 'uuid';\nimport { ValidationFunction, ValidationResult } from './validator';\ntype Timeout = ReturnType<typeof setTimeout>;\n\nexport { getRandomHex } from './isomorphic/node/get-random-hex';\ninterface InternalMap {\n timeouts: {\n [key: string]: Timeout;\n };\n values: {\n [key: string]: string;\n };\n set(key: string, value: string): void;\n get(key: string): string;\n getKey(o: { [k: string]: unknown }): string;\n clear(key: string): void;\n clearAll(): void;\n}\nconst internalMap: InternalMap = {\n timeouts: {},\n values: {},\n set(key: string, value: string): void {\n this.timeouts[key] = setTimeout(() => this.clear(key), 30000);\n this.values[key] = value;\n },\n get(key: string): string {\n return this.values[key];\n },\n getKey(object: { [key: string]: unknown }): string {\n const copy = JSON.parse(JSON.stringify(object));\n let toHash = '';\n Object.keys(copy)\n .sort()\n .forEach((key) => {\n let value = '';\n if (\n copy[key] &&\n typeof copy[key] === 'object' &&\n !Array.isArray(copy[key])\n ) {\n value = this.getKey(copy[key]);\n } else {\n value = JSON.stringify(copy[key]);\n }\n toHash += key + ':' + value;\n });\n return toHash;\n },\n clear(key: string): void {\n if (this.timeouts[key]) {\n clearTimeout(this.timeouts[key]);\n }\n delete this.timeouts[key];\n delete this.values[key];\n },\n clearAll(): void {\n Object.keys(this.timeouts).forEach((key) => {\n clearTimeout(this.timeouts[key]);\n });\n this.timeouts = {};\n this.values = {};\n },\n};\n\nexport function getTxIdSync(object?: { [key: string]: unknown }): string {\n if (!object) {\n return v4();\n }\n const key = internalMap.getKey(object);\n if (internalMap.get(key)) {\n throw new InputError({\n message: ErrorMessage.INPUT_NEEDS_IDENTIFIER,\n data: object,\n });\n }\n const value = v4();\n internalMap.set(key, value);\n return value;\n}\n\nexport function wait(time: number): Promise<void> {\n return new Promise((r) => setTimeout(r, time));\n}\n\n/**\n * Generate UUID v4 to use as identifier\n */\nexport function getIdentifier(): string {\n return getTxIdSync();\n}\n\nexport function copyObject<T>(input: T): T {\n return JSON.parse(JSON.stringify(input));\n}\n\nexport function checkCopyObject<T>(\n input: T,\n property: string,\n value: unknown,\n): T {\n if (property in input) {\n if (\n ((input as unknown) as { [k: string]: unknown })[property] === undefined\n ) {\n throw new ValidationError({\n message: `undefined provided for ${property}`,\n data: input,\n });\n }\n return input;\n }\n if (!value) {\n throw new ValidationError({\n message: `${property} is required if no default set`,\n data: input,\n });\n }\n const copy = copyObject(input);\n ((copy as unknown) as { [k: string]: unknown })[property] = value;\n return copy;\n}\n\nexport function omit<InputObject, OmitKey extends string>(\n input: InputObject,\n omitKey: OmitKey,\n): Omit<InputObject, OmitKey> {\n const copy = copyObject(input);\n delete ((copy as unknown) as { [k: string]: unknown })[omitKey];\n return copy;\n}\n\ntype ForeignType = { foreign: string };\nexport function getForeign(value: undefined): undefined;\nexport function getForeign(value: number | string): ForeignType;\nexport function getForeign(\n value: number | string | undefined,\n): ForeignType | undefined;\nexport function getForeign(\n value: number | string | undefined,\n): ForeignType | undefined {\n const stringValue = inputToString(value);\n if (stringValue === undefined || stringValue === null) {\n return undefined;\n }\n return {\n foreign: stringValue,\n };\n}\n\ntype IdentifierType = { identifier: string };\n\nexport function getIdentifierFilter(value: undefined): undefined;\nexport function getIdentifierFilter(value: number | string): IdentifierType;\nexport function getIdentifierFilter(\n value: number | string | undefined,\n): IdentifierType | undefined;\nexport function getIdentifierFilter(\n value: number | string | undefined,\n): IdentifierType | undefined {\n const stringValue = inputToString(value);\n if (stringValue === undefined || stringValue === null) {\n return undefined;\n }\n return {\n identifier: stringValue,\n };\n}\n\nexport function validateClientFnInput<T>({\n input,\n options,\n validate,\n}: {\n input: T;\n options: unknown;\n validate: ValidationFunction;\n}): ValidationResult<T> {\n const copy = copyObject(input);\n ((copy as unknown) as { [k: string]: unknown }).options ??= options ?? {};\n return validate(copy);\n}\n\nexport function inputToString(\n value: undefined | null | string | number,\n): undefined | string {\n if (value === undefined || value === null) {\n return value as undefined;\n }\n return value + '';\n}\n\nexport function toQueryString(obj: {\n [key: string]: string | undefined;\n}): string {\n return Object.keys(obj)\n .filter((key) => obj[key] !== undefined)\n .map(\n (key) =>\n `${encodeURIComponent(key)}=${encodeURIComponent(obj[key] as string)}`,\n )\n .join('&');\n}\n\nexport function getConnectionUrl(config: EWapiConnectionOptions): string {\n let url = config.host;\n if (typeof window !== 'undefined') {\n url = config.host.replace(/^https:/, 'wss:');\n }\n return (\n url +\n '?' +\n toQueryString({\n apikey: config.apikey,\n apisecret: config.apisecret,\n db: config.database,\n clientVersion: config.clientVersion,\n })\n );\n}\n\nexport function getConnectionParams(\n config: EWapiConnectionOptions,\n): [string, { rejectUnauthorized: boolean }?] {\n if (typeof window === 'undefined') {\n return [\n getConnectionUrl(config),\n {\n rejectUnauthorized: config.rejectUnauthorized,\n },\n ];\n }\n return [getConnectionUrl(config)];\n}\n\nexport function modifyObject<R>(\n original: { [k: string]: unknown },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n modifications: { [k: string]: string | ((i: any) => any) },\n): R {\n const copy: { [k: string]: unknown } = {};\n Object.keys(original).forEach((prop: string) => {\n if (!modifications[prop]) {\n copy[prop] = original[prop];\n } else if (typeof modifications[prop] === 'string') {\n copy[modifications[prop] as string] = original[prop];\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n copy[prop] = (modifications[prop] as (i: any) => any)(original[prop]);\n }\n });\n return (copy as unknown) as R;\n}\n\nexport function orderByToOrder(orderBy: string): ITxOrderingInput[] {\n return orderBy\n .split(',')\n .map((str: string) => str.split(' '))\n .map((split) => {\n const [field, direction] = split;\n return {\n field,\n direction: direction === 'desc' ? 'desc' : 'asc',\n };\n }) as ITxOrderingInput[];\n}\n\nexport function isFutureDate(dateString: string): boolean {\n return (\n new Date(dateString).setHours(0, 0, 0, 0) > new Date().setHours(0, 0, 0, 0)\n );\n}\n\nfunction isLeapYear(year: number): boolean {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isDate(str: string): boolean {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches: string[] | null = DATE.exec(str);\n if (!matches) return false;\n const year: number = +matches[1];\n const month: number = +matches[2];\n const day: number = +matches[3];\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n );\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d(?::?\\d\\d)?)?$/i;\n\nfunction time(str: string, withTimeZone?: boolean): boolean {\n const matches: string[] | null = TIME.exec(str);\n if (!matches) return false;\n\n const hour: number = +matches[1];\n const minute: number = +matches[2];\n const second: number = +matches[3];\n const timeZone: string = matches[5];\n return (\n ((hour <= 23 && minute <= 59 && second <= 59) ||\n (hour === 23 && minute === 59 && second === 60)) &&\n (!withTimeZone || timeZone !== '')\n );\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i;\n\nexport function isDateTime(str: string): boolean {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n const dateTime: string[] = str.split(DATE_TIME_SEPARATOR);\n if (dateTime.length === 1) {\n return isDate(dateTime[0]);\n }\n return dateTime.length === 2 && isDate(dateTime[0]) && time(dateTime[1]);\n}\n","export interface JSONRPCRequest {\n jsonrpc: '2.0';\n method: string;\n params?: any;\n id: string | number | null;\n}\n\nexport interface JSONRPCError {\n code: number;\n message: string;\n}\n\nexport interface JSONRPCResponse {\n jsonrpc: '2.0';\n result?: any;\n error?: JSONRPCError;\n id: string | number | null;\n}\n\nexport enum JSONRPC {\n version = '2.0',\n acknowledgement = 'ack',\n ping = 'ping',\n pong = 'pong',\n streamChunk = 'streamChunk',\n streamPause = 'streamPause',\n streamResume = 'streamResume',\n}\n","import {\n DuplexOptions,\n PassThrough,\n Transform,\n TransformOptions,\n Writable,\n} from 'stream';\nimport { Readable, ReadableOptions } from 'stream';\n\n/**\n * @internal\n */\nexport class ReadStream extends Readable {\n constructor(options?: ReadableOptions) {\n super(options);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function\n _read(size: number): void {}\n}\n\nexport class WriteStream extends Writable {\n constructor(options?: DuplexOptions) {\n super(options);\n }\n}\n\nexport class ReadWriteStream<InputType> extends PassThrough {\n constructor() {\n super({\n objectMode: true,\n });\n }\n write(\n chunk: InputType,\n encoding?: BufferEncoding | ((error: Error | null | undefined) => void),\n cb?: (error: Error | null | undefined) => void,\n ): boolean {\n if (cb) {\n throw new TypeError('Stream in objectMode, no encoding supported');\n }\n return super.write(\n chunk,\n encoding as (error: Error | null | undefined) => void,\n );\n }\n\n end(\n chunk?: InputType | (() => void),\n encoding?: BufferEncoding | (() => void),\n cb?: () => void,\n ): void {\n if (cb) {\n throw new TypeError('Stream in objectMode, no encoding supported');\n }\n return super.end(chunk, encoding as () => void);\n }\n}\n\ntype DataTransformCallback<Output> = (\n error?: Error | null,\n data?: Output,\n) => void;\ninterface DataTransformOptions<Input, Output> extends TransformOptions {\n dataTransform: (input?: Input) => Promise<Output>;\n}\n\nexport class TransformStream<Input, Output> extends Transform {\n private dataTransform: (input?: Input) => Promise<Output>;\n constructor(options: DataTransformOptions<Input, Output>) {\n super({\n ...options,\n writableObjectMode: true,\n readableObjectMode: true,\n });\n this.dataTransform = options.dataTransform;\n }\n _transform(\n chunk: Input,\n encoding: BufferEncoding,\n callback: DataTransformCallback<Output>,\n ): void {\n this.dataTransform(chunk)\n .then((output) => {\n if (output) {\n callback(null, output);\n } else {\n callback();\n }\n })\n .catch(callback);\n }\n _flush(callback: DataTransformCallback<Output>): void {\n this.dataTransform()\n .then((output) => {\n if (output) {\n callback(null, output);\n } else {\n callback();\n }\n })\n .catch(callback);\n }\n}\n","import { JSONRPC } from '../api/jsonrpc/jsonrpc.enums';\nimport { ERROR_TYPES, ErrorInput, getError, StreamError } from './errors';\nimport { ReadStream } from './isomorphic/node/streams';\n\n/**\n * A Promise with the added interface of .stream to access Readable stream.\n * Can be used as promise or stream, but not both\n *\n * ```javascript\n * const streamPromise = wapi.getFlags();\n *\n * // Can be used as promise\n * const result = await streamPromise;\n *\n * // Or as stream\n * streamPromise.stream()\n * .on('data', chunk => {\n * console.log('chunk');\n * })\n * .on('error', error => {\n * console.error(error);\n * })\n * .on('end', () => {\n * console.log('end');\n * });\n *\n * ```\n */\nexport class StreamPromise<M> {\n private resolve?: (value: M | PromiseLike<M>) => void;\n private reject?: (reason: Error) => void;\n private makeRequest?: (stream: ReadStream) => Promise<void | boolean>;\n private streamObject = new ReadStream({\n objectMode: true,\n });\n private outStreamObject = new ReadStream({\n objectMode: true,\n });\n private mode?: StreamMode;\n private started = false;\n private promise?: Promise<M>;\n\n constructor(makeRequest?: (stream: ReadStream) => Promise<void>) {\n this.makeRequest = makeRequest;\n }\n\n private start(asMode: StreamMode) {\n if (this.mode && this.mode !== asMode) {\n throw new Error('Already in use as ' + this.mode);\n }\n if (this.started) {\n return;\n }\n this.promise = new Promise<M>((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n this.started = true;\n this.mode = asMode;\n\n if (this.makeRequest === undefined) {\n this.streamObject.push(null);\n this.resolve(undefined);\n return;\n }\n\n this.makeRequest(this.streamObject).catch(this.reject);\n\n const internalArr: {\n result: { [k: string]: unknown };\n [k: string]: unknown;\n }[] = [];\n\n if (this.mode === 'stream') {\n this.streamObject\n .on(\n 'data',\n (chunk: {\n error?: ErrorInput;\n prop?: string;\n data?: unknown;\n dataArr?: unknown[];\n result: { [k: string]: unknown };\n }) => {\n if (!chunk) {\n this.outStreamObject.push(chunk);\n }\n if (chunk.error) {\n const error = getError(chunk.error as ErrorInput);\n this.outStreamObject.destroy(error);\n return this.streamObject.destroy(error);\n }\n if (!chunk.prop) {\n internalArr.push(chunk);\n return;\n }\n if (chunk.dataArr) {\n const base = {\n ...chunk,\n };\n delete base.dataArr;\n\n chunk.dataArr.forEach((data: unknown) => {\n this.outStreamObject.push({\n ...base,\n data,\n });\n });\n return;\n }\n this.outStreamObject.push(chunk);\n },\n )\n .on('end', () => {\n const lastMessage = internalArr.pop();\n if (!lastMessage) {\n return;\n }\n const result = lastMessage.result;\n Object.keys(result).forEach((prop: string) => {\n if (!Array.isArray(result[prop])) {\n return;\n }\n (result[prop] as unknown[]).forEach((data) => {\n this.outStreamObject.push({\n type: JSONRPC.streamChunk,\n prop,\n data,\n });\n });\n result[prop] = [];\n });\n this.outStreamObject.push(lastMessage);\n this.outStreamObject.push(null);\n })\n .on('error', (err) => {\n this.outStreamObject.destroy(err);\n });\n return;\n }\n\n if (this.mode === 'promise') {\n const internalMap: Map<string, unknown[]> = new Map();\n\n this.streamObject\n .on(\n 'data',\n (chunk: {\n error?: ErrorInput;\n prop?: string;\n data?: unknown;\n dataArr?: unknown[];\n result: { [k: string]: unknown };\n }) => {\n if (chunk === undefined) {\n return;\n }\n // If we have error property then we assume it is an\n // error response\n if (chunk.error) {\n const error = getError(chunk.error as ErrorInput);\n return this.streamObject.destroy(error);\n }\n if (!chunk.prop) {\n internalArr.push(chunk);\n return;\n }\n const arr = internalMap.get(chunk.prop) ?? [];\n if (chunk.dataArr) {\n arr.push(...chunk.dataArr);\n } else {\n arr.push(chunk.data);\n }\n internalMap.set(chunk.prop, arr);\n },\n )\n .on('end', () => {\n const lastMessage = internalArr.pop();\n if (!lastMessage) {\n return;\n }\n const result = lastMessage.result;\n\n // If there are no chunks then return lastMessage\n if (!internalMap.size) {\n return (this.resolve as (value: M | PromiseLike<M>) => void)(\n (result as unknown) as M,\n );\n }\n\n let err = false;\n // Assemble result from chunks\n internalMap.forEach((value: unknown[], key: string) => {\n if (Array.isArray(result[key])) {\n value.push(...(result[key] as unknown[]));\n result[key] = value;\n } else if (value.length === 1) {\n result[key] = value;\n } else {\n // This is an error, because the last message has\n // the property as object, but we have received\n // multiple chunks for it\n // We could just show the latest, but it might\n // produce other errors\n this.streamObject.destroy(\n new StreamError({\n message:\n 'Received multiple chunks for non-array property ' + key,\n code: ERROR_TYPES.StreamError,\n data: value,\n }),\n );\n err = true;\n }\n });\n if (!err) {\n (this.resolve as (value: M | PromiseLike<M>) => void)(\n (result as unknown) as M,\n );\n }\n })\n .on('error', this.reject as (reason: Error) => void);\n }\n }\n\n then<TResult1 = M, TResult2 = never>(\n onfulfilled?: (value: M) => TResult1 | PromiseLike<TResult1>,\n onrejected?: (reason: Error) => TResult2 | PromiseLike<TResult2>,\n ): Promise<TResult1 | TResult2> {\n this.start('promise');\n return (this.promise as Promise<M>).then(onfulfilled, onrejected);\n }\n\n catch<TResult2 = never>(\n onerror: (reason: Error) => TResult2 | PromiseLike<TResult2>,\n ): Promise<M | TResult2> {\n this.start('promise');\n return (this.promise as Promise<M>).catch(onerror);\n }\n\n stream(): ReadStream {\n this.start('stream');\n return this.outStreamObject;\n }\n}\n\ntype StreamMode = 'promise' | 'stream';\n","import { ReadStream, ReadWriteStream } from './isomorphic/node/streams';\nimport { StreamPromise } from './stream-promise';\n\n/**\n * A Promise with the added interface of .stream to access Readable stream.\n * Can be used as promise or stream, but not both\n *\n * ```javascript\n * const streamPromise = wapi.getFlags();\n *\n * // Can be used as promise\n * const result = await streamPromise;\n *\n * // Or as stream\n * streamPromise.stream\n * .on('data', chunk => {\n * console.log('chunk');\n * })\n * .on('error', error => {\n * console.error(error);\n * })\n * .on('end', () => {\n * console.log('end');\n * });\n *\n * ```\n */\nexport class StreamPromiseInput<\n Output,\n InputChunk\n> extends StreamPromise<Output> {\n private inputStream: ReadWriteStream<InputChunk>;\n constructor(\n makeRequest?: (stream: ReadStream) => Promise<void>,\n inputStream?: ReadWriteStream<InputChunk>,\n ) {\n super(makeRequest);\n this.inputStream = inputStream;\n }\n\n input(): ReadWriteStream<InputChunk>;\n input(\n inputStreamHandler: (inputStream: ReadWriteStream<InputChunk>) => unknown,\n ): this;\n input(inputStream: ReadStream): this;\n input(\n input?: ReadStream | ((inputStream: ReadWriteStream<InputChunk>) => void),\n ): this | ReadWriteStream<InputChunk> {\n if (!input) {\n return this.inputStream;\n }\n if (typeof input === 'function') {\n input(this.inputStream);\n return this;\n }\n console.warn('currently disabled');\n // input.pipe(this.inputStream);\n return this;\n }\n\n // input(filePath: string): this;\n // input(\n // inputIteratorFactory: () => () => InputChunk\n // ): this;\n // input(\n // input?: string | (() => () => InputChunk),\n // ): this {\n // if (typeof input === 'string') {\n // // its a filePath - read it line by line\n //\n // } else {\n // // its a generator\n // const nextLineFn = input();\n //\n // }\n //\n // return this;\n // }\n}\n","import { copyObject, isDateTime } from './utils';\nimport Ajv, { AnySchema, ValidateFunction } from 'ajv';\nimport { ValidationError } from './errors';\n\nconst ajv = new Ajv({\n removeAdditional: true,\n useDefaults: true,\n coerceTypes: true, // Client side allows looser input, API will not\n formats: {\n validkey: /^[A-Za-z_][A-Za-z0-9_-]+?$/,\n },\n strict: false,\n});\najv.addFormat('date-time', {\n validate: isDateTime,\n});\n\nexport interface ValidationFunction {\n <T>(json: T): ValidationResult<T>;\n}\n\nexport interface ValidationResult<M> {\n isValid: boolean;\n inputCopy: M;\n error?: ValidationError;\n}\n\n// Turn AJV errors to validationErrors\nfunction getValidationError(errors: unknown, errorsText: string | undefined) {\n if (errorsText === undefined) {\n return;\n }\n return new ValidationError({\n message: errorsText,\n data: errors,\n });\n}\n\nfunction wrapValidator(\n validate: ValidateFunction | undefined,\n): ValidationFunction {\n return function <T>(input: T): ValidationResult<T> {\n if (validate === undefined) {\n return {\n isValid: false,\n inputCopy: input,\n error: getValidationError(\n [new Error('Undefined validator')],\n 'Undefined validator',\n ),\n };\n }\n // We will mutate the input, so instead make a copy\n try {\n const inputCopy = copyObject(input) as T;\n const isValid = validate(inputCopy) as boolean;\n\n const errors = isValid ? undefined : validate.errors;\n const errorsText = isValid ? undefined : ajv.errorsText(errors);\n const error = getValidationError(errors, errorsText);\n\n return {\n isValid,\n inputCopy,\n error,\n };\n } catch (err) {\n return {\n isValid: false,\n inputCopy: input,\n error: getValidationError([err], err.message),\n };\n }\n };\n}\n\n// This is to replace relative $refs in definitions with absolute refs\n// based on the key for schema\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction fixSelfRefs(def: any, schemaKey: string) {\n const copy = JSON.parse(JSON.stringify(def));\n return fixObjRefs(copy, schemaKey);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction fixObjRefs(def: any, schemaKey: string) {\n if (typeof def !== 'object') {\n return def;\n }\n Object.keys(def).forEach((innerKey) => {\n if (innerKey === '$ref' && def.$ref.startsWith('#')) {\n def.$ref = schemaKey + def.$ref;\n } else {\n def[innerKey] = fixObjRefs(def[innerKey], schemaKey);\n }\n });\n return def;\n}\n\nfunction getOptionsSchema(def: AnySchema, schemaKey: string) {\n const fixed = fixSelfRefs(def, schemaKey);\n const options = fixed.properties.options;\n return {\n $id: fixed.$id.replace('Input', 'Options'),\n definitions: fixed.definitions,\n ...options,\n };\n}\n\nfunction getChunkSchema(def: AnySchema, schemaKey: string) {\n const fixed = fixSelfRefs(def, schemaKey);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const prop = fixed.definitions[(def as any).$allowStreamInput];\n return {\n $id: fixed.$id.replace('Input', 'StreamChunk'),\n definitions: fixed.definitions,\n ...prop,\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst Schemas: Record<any, any> = {};\n\n// SCHEMAS\n/*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\nexport type SchemaName =\n | 'JSONRPCRequest'\n | 'JSONRPCResponse'\n | 'ClientOptions'\n | 'Consts'\n | 'TokenTableInput'\n | 'TokenTable'\n | 'TokenTableOptional'\n | 'TransferTableInput'\n | 'TransferTable'\n | 'TransferTableOptional'\n | 'TransferGroupTableInput'\n | 'TransferGroupTable'\n | 'TransferGroupTableOptional'\n | 'TransferLogTableInput'\n | 'TransferLogTable'\n | 'TransferLogTableOptional'\n | 'WalletTableInput'\n | 'WalletTable'\n | 'WalletTableOptional'\n | 'WalletTokenSettingTableInput'\n | 'WalletTokenSettingTable'\n | 'WalletTokenSettingTableOptional'\n | 'WapiSettingTableInput'\n | 'WapiSettingTable'\n | 'WapiSettingTableOptional'\n | 'AggregateTransfersFnInput'\n | 'AggregateTransfersFnOutput'\n | 'CreateContractFnInput'\n | 'CreateContractFnOutput'\n | 'CreateDepositFnInput'\n | 'CreateDepositFnOutput'\n | 'CreateExchangeFnInput'\n | 'CreateExchangeFnOutput'\n | 'CreateTokenFnInput'\n | 'CreateTokenFnOutput'\n | 'CreateTransferFnInput'\n | 'CreateTransferFnOutput'\n | 'CreateTransferGroupFnInput'\n | 'CreateTransferGroupFnOutput'\n | 'CreateTransfersFnInput'\n | 'CreateTransfersFnOutput'\n | 'CreateWalletFnInput'\n | 'CreateWalletFnOutput'\n | 'CreateWithdrawalFnInput'\n | 'CreateWithdrawalFnOutput'\n | 'FindBalancesFnInput'\n | 'FindBalancesFnOutput'\n | 'FindTokensFnInput'\n | 'FindTokensFnOutput'\n | 'FindTransferGroupsFnInput'\n | 'FindTransferGroupsFnOutput'\n | 'FindTransfersFnInput'\n | 'FindTransfersFnOutput'\n | 'FindWalletsFnInput'\n | 'FindWalletsFnOutput'\n | 'FnConsts'\n | 'GetBalanceFnInput'\n | 'GetBalanceFnOutput'\n | 'GetBalanceHistoryFnInput'\n | 'GetBalanceHistoryFnOutput'\n | 'GetFlagsFnInput'\n | 'GetFlagsFnOutput'\n | 'GetStatisticsFnInput'\n | 'GetStatisticsFnOutput'\n | 'GetTokenFnInput'\n | 'GetTokenFnOutput'\n | 'GetTransferFnInput'\n | 'GetTransferFnOutput'\n | 'GetTransferGroupFnInput'\n | 'GetTransferGroupFnOutput'\n | 'GetWalletFnInput'\n | 'GetWalletFnOutput'\n | 'ImportDataFnInput'\n | 'ImportDataFnOptions'\n | 'ImportDataFnStreamChunk'\n | 'ImportDataFnOutput'\n | 'ReverseTransferFnInput'\n | 'ReverseTransferFnOutput'\n | 'ReverseTransferGroupFnInput'\n | 'ReverseTransferGroupFnOutput'\n | 'ReverseTransfersFnInput'\n | 'ReverseTransfersFnOutput'\n | 'SetFlagsFnInput'\n | 'SetFlagsFnOutput'\n | 'UpdateTokenFnInput'\n | 'UpdateTokenFnOutput'\n | 'UpdateTransferFnInput'\n | 'UpdateTransferFnOutput'\n | 'UpdateTransferGroupFnInput'\n | 'UpdateTransferGroupFnOutput'\n | 'UpdateTransferGroupsFnInput'\n | 'UpdateTransferGroupsFnOutput'\n | 'UpdateTransfersFnInput'\n | 'UpdateTransfersFnOutput'\n | 'UpdateWalletFnInput'\n | 'UpdateWalletFnOutput'\n | 'AggregateTransferManyTxInput'\n | 'AggregateTransferManyTxOutput'\n | 'CreateContractTxInput'\n | 'CreateContractTxOutput'\n | 'CreateDepositTxInput'\n | 'CreateDepositTxOutput'\n | 'CreateDistributionTxInput'\n | 'CreateDistributionTxOutput'\n | 'CreateTokenTxInput'\n | 'CreateTokenTxOutput'\n | 'CreateTransferTxInput'\n | 'CreateTransferTxOutput'\n | 'CreateTransferGroupTxInput'\n | 'CreateTransferGroupTxOutput'\n | 'CreateTransferManyTxInput'\n | 'CreateTransferManyTxOutput'\n | 'CreateWalletTxInput'\n | 'CreateWalletTxOutput'\n | 'CreateWithdrawalTxInput'\n | 'CreateWithdrawalTxOutput'\n | 'FindBalanceManyTxInput'\n | 'FindBalanceManyTxOutput'\n | 'FindTokenManyTxInput'\n | 'FindTokenManyTxOutput'\n | 'FindTransferGroupManyTxInput'\n | 'FindTransferGroupManyTxOutput'\n | 'FindTransferManyTxInput'\n | 'FindTransferManyTxOutput'\n | 'FindWalletManyTxInput'\n | 'FindWalletManyTxOutput'\n | 'FinishTransactionTxInput'\n | 'FinishTransactionTxOutput'\n | 'GetBalanceTxInput'\n | 'GetBalanceTxOutput'\n | 'GetBalanceHistoryTxInput'\n | 'GetBalanceHistoryTxOutput'\n | 'GetFlagsTxInput'\n | 'GetFlagsTxOutput'\n | 'GetStatisticsTxInput'\n | 'GetStatisticsTxOutput'\n | 'GetTokenTxInput'\n | 'GetTokenTxOutput'\n | 'GetTokenManyTxInput'\n | 'GetTokenManyTxOutput'\n | 'GetTransferTxInput'\n | 'GetTransferTxOutput'\n | 'GetTransferGroupTxInput'\n | 'GetTransferGroupTxOutput'\n | 'GetWalletTxInput'\n | 'GetWalletTxOutput'\n | 'GetWalletManyTxInput'\n | 'GetWalletManyTxOutput'\n | 'ImportActionsTxInput'\n | 'ImportActionsTxOptions'\n | 'ImportActionsTxStreamChunk'\n | 'ImportActionsTxOutput'\n | 'QueryTxInput'\n | 'QueryTxOutput'\n | 'QueryLogsTxInput'\n | 'QueryLogsTxOutput'\n | 'ResetDatabaseTxInput'\n | 'ResetDatabaseTxOutput'\n | 'ReverseTransferTxInput'\n | 'ReverseTransferTxOutput'\n | 'ReverseTransferGroupTxInput'\n | 'ReverseTransferGroupTxOutput'\n | 'ReverseTransferGroupManyTxInput'\n | 'ReverseTransferGroupManyTxOutput'\n | 'ReverseTransferManyTxInput'\n | 'ReverseTransferManyTxOutput'\n | 'SetFlagsTxInput'\n | 'SetFlagsTxOutput'\n | 'StartTransactionTxInput'\n | 'StartTransactionTxOutput'\n | 'TxConsts'\n | 'UpdateTokenTxInput'\n | 'UpdateTokenTxOutput'\n | 'UpdateTransferTxInput'\n | 'UpdateTransferTxOutput'\n | 'UpdateTransferGroupTxInput'\n | 'UpdateTransferGroupTxOutput'\n | 'UpdateTransferGroupManyTxInput'\n | 'UpdateTransferGroupManyTxOutput'\n | 'UpdateTransferManyTxInput'\n | 'UpdateTransferManyTxOutput'\n | 'UpdateWalletTxInput'\n | 'UpdateWalletTxOutput';\n\nimport JSONRPCRequestSchema from '../api/jsonrpc/jsonrpc.request.schema.json';\najv.addSchema(\n fixSelfRefs(JSONRPCRequestSchema, '/api/jsonrpc/jsonrpc.request.schema.json'),\n '/api/jsonrpc/jsonrpc.request.schema.json',\n);\nSchemas.JSONRPCRequest = JSONRPCRequestSchema;\nimport JSONRPCResponseSchema from '../api/jsonrpc/jsonrpc.response.schema.json';\najv.addSchema(\n fixSelfRefs(\n JSONRPCResponseSchema,\n '/api/jsonrpc/jsonrpc.response.schema.json',\n ),\n '/api/jsonrpc/jsonrpc.response.schema.json',\n);\nSchemas.JSONRPCResponse = JSONRPCResponseSchema;\nimport ClientOptionsSchema from '../client-options.schema.json';\najv.addSchema(\n fixSelfRefs(ClientOptionsSchema, '/client-options.schema.json'),\n '/client-options.schema.json',\n);\nSchemas.ClientOptions = ClientOptionsSchema;\nimport ConstsSchema from '../db/consts.schema.json';\najv.addSchema(\n fixSelfRefs(ConstsSchema, '/db/consts.schema.json'),\n '/db/consts.schema.json',\n);\nSchemas.Consts = ConstsSchema;\nimport TokenTableInputSchema from '../db/token/token.schema.input.json';\najv.addSchema(\n fixSelfRefs(TokenTableInputSchema, '/db/token/token.schema.input.json'),\n '/db/token/token.schema.input.json',\n);\nSchemas.TokenTableInput = TokenTableInputSchema;\nimport TokenTableSchema from '../db/token/token.schema.json';\najv.addSchema(\n fixSelfRefs(TokenTableSchema, '/db/token/token.schema.json'),\n '/db/token/token.schema.json',\n);\nSchemas.TokenTable = TokenTableSchema;\nimport TokenTableOptionalSchema from '../db/token/token.schema.optional.json';\najv.addSchema(\n fixSelfRefs(TokenTableOptionalSchema, '/db/token/token.schema.optional.json'),\n '/db/token/token.schema.optional.json',\n);\nSchemas.TokenTableOptional = TokenTableOptionalSchema;\nimport TransferTableInputSchema from '../db/transfer/transfer.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n TransferTableInputSchema,\n '/db/transfer/transfer.schema.input.json',\n ),\n '/db/transfer/transfer.schema.input.json',\n);\nSchemas.TransferTableInput = TransferTableInputSchema;\nimport TransferTableSchema from '../db/transfer/transfer.schema.json';\najv.addSchema(\n fixSelfRefs(TransferTableSchema, '/db/transfer/transfer.schema.json'),\n '/db/transfer/transfer.schema.json',\n);\nSchemas.TransferTable = TransferTableSchema;\nimport TransferTableOptionalSchema from '../db/transfer/transfer.schema.optional.json';\najv.addSchema(\n fixSelfRefs(\n TransferTableOptionalSchema,\n '/db/transfer/transfer.schema.optional.json',\n ),\n '/db/transfer/transfer.schema.optional.json',\n);\nSchemas.TransferTableOptional = TransferTableOptionalSchema;\nimport TransferGroupTableInputSchema from '../db/transfer-group/transfer-group.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n TransferGroupTableInputSchema,\n '/db/transfer-group/transfer-group.schema.input.json',\n ),\n '/db/transfer-group/transfer-group.schema.input.json',\n);\nSchemas.TransferGroupTableInput = TransferGroupTableInputSchema;\nimport TransferGroupTableSchema from '../db/transfer-group/transfer-group.schema.json';\najv.addSchema(\n fixSelfRefs(\n TransferGroupTableSchema,\n '/db/transfer-group/transfer-group.schema.json',\n ),\n '/db/transfer-group/transfer-group.schema.json',\n);\nSchemas.TransferGroupTable = TransferGroupTableSchema;\nimport TransferGroupTableOptionalSchema from '../db/transfer-group/transfer-group.schema.optional.json';\najv.addSchema(\n fixSelfRefs(\n TransferGroupTableOptionalSchema,\n '/db/transfer-group/transfer-group.schema.optional.json',\n ),\n '/db/transfer-group/transfer-group.schema.optional.json',\n);\nSchemas.TransferGroupTableOptional = TransferGroupTableOptionalSchema;\nimport TransferLogTableInputSchema from '../db/transfer-log/transfer-log.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n TransferLogTableInputSchema,\n '/db/transfer-log/transfer-log.schema.input.json',\n ),\n '/db/transfer-log/transfer-log.schema.input.json',\n);\nSchemas.TransferLogTableInput = TransferLogTableInputSchema;\nimport TransferLogTableSchema from '../db/transfer-log/transfer-log.schema.json';\najv.addSchema(\n fixSelfRefs(\n TransferLogTableSchema,\n '/db/transfer-log/transfer-log.schema.json',\n ),\n '/db/transfer-log/transfer-log.schema.json',\n);\nSchemas.TransferLogTable = TransferLogTableSchema;\nimport TransferLogTableOptionalSchema from '../db/transfer-log/transfer-log.schema.optional.json';\najv.addSchema(\n fixSelfRefs(\n TransferLogTableOptionalSchema,\n '/db/transfer-log/transfer-log.schema.optional.json',\n ),\n '/db/transfer-log/transfer-log.schema.optional.json',\n);\nSchemas.TransferLogTableOptional = TransferLogTableOptionalSchema;\nimport WalletTableInputSchema from '../db/wallet/wallet.schema.input.json';\najv.addSchema(\n fixSelfRefs(WalletTableInputSchema, '/db/wallet/wallet.schema.input.json'),\n '/db/wallet/wallet.schema.input.json',\n);\nSchemas.WalletTableInput = WalletTableInputSchema;\nimport WalletTableSchema from '../db/wallet/wallet.schema.json';\najv.addSchema(\n fixSelfRefs(WalletTableSchema, '/db/wallet/wallet.schema.json'),\n '/db/wallet/wallet.schema.json',\n);\nSchemas.WalletTable = WalletTableSchema;\nimport WalletTableOptionalSchema from '../db/wallet/wallet.schema.optional.json';\najv.addSchema(\n fixSelfRefs(\n WalletTableOptionalSchema,\n '/db/wallet/wallet.schema.optional.json',\n ),\n '/db/wallet/wallet.schema.optional.json',\n);\nSchemas.WalletTableOptional = WalletTableOptionalSchema;\nimport WalletTokenSettingTableInputSchema from '../db/wallet-token-setting/wallet-token-setting.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n WalletTokenSettingTableInputSchema,\n '/db/wallet-token-setting/wallet-token-setting.schema.input.json',\n ),\n '/db/wallet-token-setting/wallet-token-setting.schema.input.json',\n);\nSchemas.WalletTokenSettingTableInput = WalletTokenSettingTableInputSchema;\nimport WalletTokenSettingTableSchema from '../db/wallet-token-setting/wallet-token-setting.schema.json';\najv.addSchema(\n fixSelfRefs(\n WalletTokenSettingTableSchema,\n '/db/wallet-token-setting/wallet-token-setting.schema.json',\n ),\n '/db/wallet-token-setting/wallet-token-setting.schema.json',\n);\nSchemas.WalletTokenSettingTable = WalletTokenSettingTableSchema;\nimport WalletTokenSettingTableOptionalSchema from '../db/wallet-token-setting/wallet-token-setting.schema.optional.json';\najv.addSchema(\n fixSelfRefs(\n WalletTokenSettingTableOptionalSchema,\n '/db/wallet-token-setting/wallet-token-setting.schema.optional.json',\n ),\n '/db/wallet-token-setting/wallet-token-setting.schema.optional.json',\n);\nSchemas.WalletTokenSettingTableOptional = WalletTokenSettingTableOptionalSchema;\nimport WapiSettingTableInputSchema from '../db/wapi-setting/wapi-setting.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n WapiSettingTableInputSchema,\n '/db/wapi-setting/wapi-setting.schema.input.json',\n ),\n '/db/wapi-setting/wapi-setting.schema.input.json',\n);\nSchemas.WapiSettingTableInput = WapiSettingTableInputSchema;\nimport WapiSettingTableSchema from '../db/wapi-setting/wapi-setting.schema.json';\najv.addSchema(\n fixSelfRefs(\n WapiSettingTableSchema,\n '/db/wapi-setting/wapi-setting.schema.json',\n ),\n '/db/wapi-setting/wapi-setting.schema.json',\n);\nSchemas.WapiSettingTable = WapiSettingTableSchema;\nimport WapiSettingTableOptionalSchema from '../db/wapi-setting/wapi-setting.schema.optional.json';\najv.addSchema(\n fixSelfRefs(\n WapiSettingTableOptionalSchema,\n '/db/wapi-setting/wapi-setting.schema.optional.json',\n ),\n '/db/wapi-setting/wapi-setting.schema.optional.json',\n);\nSchemas.WapiSettingTableOptional = WapiSettingTableOptionalSchema;\nimport AggregateTransfersFnInputSchema from '../fns/aggregate-transfers/aggregate-transfers.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n AggregateTransfersFnInputSchema,\n '/fns/aggregate-transfers/aggregate-transfers.schema.input.json',\n ),\n '/fns/aggregate-transfers/aggregate-transfers.schema.input.json',\n);\nSchemas.AggregateTransfersFnInput = AggregateTransfersFnInputSchema;\nimport AggregateTransfersFnOutputSchema from '../fns/aggregate-transfers/aggregate-transfers.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n AggregateTransfersFnOutputSchema,\n '/fns/aggregate-transfers/aggregate-transfers.schema.output.json',\n ),\n '/fns/aggregate-transfers/aggregate-transfers.schema.output.json',\n);\nSchemas.AggregateTransfersFnOutput = AggregateTransfersFnOutputSchema;\nimport CreateContractFnInputSchema from '../fns/create-contract/create-contract.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateContractFnInputSchema,\n '/fns/create-contract/create-contract.schema.input.json',\n ),\n '/fns/create-contract/create-contract.schema.input.json',\n);\nSchemas.CreateContractFnInput = CreateContractFnInputSchema;\nimport CreateContractFnOutputSchema from '../fns/create-contract/create-contract.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateContractFnOutputSchema,\n '/fns/create-contract/create-contract.schema.output.json',\n ),\n '/fns/create-contract/create-contract.schema.output.json',\n);\nSchemas.CreateContractFnOutput = CreateContractFnOutputSchema;\nimport CreateDepositFnInputSchema from '../fns/create-deposit/create-deposit.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateDepositFnInputSchema,\n '/fns/create-deposit/create-deposit.schema.input.json',\n ),\n '/fns/create-deposit/create-deposit.schema.input.json',\n);\nSchemas.CreateDepositFnInput = CreateDepositFnInputSchema;\nimport CreateDepositFnOutputSchema from '../fns/create-deposit/create-deposit.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateDepositFnOutputSchema,\n '/fns/create-deposit/create-deposit.schema.output.json',\n ),\n '/fns/create-deposit/create-deposit.schema.output.json',\n);\nSchemas.CreateDepositFnOutput = CreateDepositFnOutputSchema;\nimport CreateExchangeFnInputSchema from '../fns/create-exchange/create-exchange.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateExchangeFnInputSchema,\n '/fns/create-exchange/create-exchange.schema.input.json',\n ),\n '/fns/create-exchange/create-exchange.schema.input.json',\n);\nSchemas.CreateExchangeFnInput = CreateExchangeFnInputSchema;\nimport CreateExchangeFnOutputSchema from '../fns/create-exchange/create-exchange.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateExchangeFnOutputSchema,\n '/fns/create-exchange/create-exchange.schema.output.json',\n ),\n '/fns/create-exchange/create-exchange.schema.output.json',\n);\nSchemas.CreateExchangeFnOutput = CreateExchangeFnOutputSchema;\nimport CreateTokenFnInputSchema from '../fns/create-token/create-token.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateTokenFnInputSchema,\n '/fns/create-token/create-token.schema.input.json',\n ),\n '/fns/create-token/create-token.schema.input.json',\n);\nSchemas.CreateTokenFnInput = CreateTokenFnInputSchema;\nimport CreateTokenFnOutputSchema from '../fns/create-token/create-token.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateTokenFnOutputSchema,\n '/fns/create-token/create-token.schema.output.json',\n ),\n '/fns/create-token/create-token.schema.output.json',\n);\nSchemas.CreateTokenFnOutput = CreateTokenFnOutputSchema;\nimport CreateTransferFnInputSchema from '../fns/create-transfer/create-transfer.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransferFnInputSchema,\n '/fns/create-transfer/create-transfer.schema.input.json',\n ),\n '/fns/create-transfer/create-transfer.schema.input.json',\n);\nSchemas.CreateTransferFnInput = CreateTransferFnInputSchema;\nimport CreateTransferFnOutputSchema from '../fns/create-transfer/create-transfer.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransferFnOutputSchema,\n '/fns/create-transfer/create-transfer.schema.output.json',\n ),\n '/fns/create-transfer/create-transfer.schema.output.json',\n);\nSchemas.CreateTransferFnOutput = CreateTransferFnOutputSchema;\nimport CreateTransferGroupFnInputSchema from '../fns/create-transfer-group/create-transfer-group.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransferGroupFnInputSchema,\n '/fns/create-transfer-group/create-transfer-group.schema.input.json',\n ),\n '/fns/create-transfer-group/create-transfer-group.schema.input.json',\n);\nSchemas.CreateTransferGroupFnInput = CreateTransferGroupFnInputSchema;\nimport CreateTransferGroupFnOutputSchema from '../fns/create-transfer-group/create-transfer-group.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransferGroupFnOutputSchema,\n '/fns/create-transfer-group/create-transfer-group.schema.output.json',\n ),\n '/fns/create-transfer-group/create-transfer-group.schema.output.json',\n);\nSchemas.CreateTransferGroupFnOutput = CreateTransferGroupFnOutputSchema;\nimport CreateTransfersFnInputSchema from '../fns/create-transfers/create-transfers.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransfersFnInputSchema,\n '/fns/create-transfers/create-transfers.schema.input.json',\n ),\n '/fns/create-transfers/create-transfers.schema.input.json',\n);\nSchemas.CreateTransfersFnInput = CreateTransfersFnInputSchema;\nimport CreateTransfersFnOutputSchema from '../fns/create-transfers/create-transfers.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransfersFnOutputSchema,\n '/fns/create-transfers/create-transfers.schema.output.json',\n ),\n '/fns/create-transfers/create-transfers.schema.output.json',\n);\nSchemas.CreateTransfersFnOutput = CreateTransfersFnOutputSchema;\nimport CreateWalletFnInputSchema from '../fns/create-wallet/create-wallet.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateWalletFnInputSchema,\n '/fns/create-wallet/create-wallet.schema.input.json',\n ),\n '/fns/create-wallet/create-wallet.schema.input.json',\n);\nSchemas.CreateWalletFnInput = CreateWalletFnInputSchema;\nimport CreateWalletFnOutputSchema from '../fns/create-wallet/create-wallet.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateWalletFnOutputSchema,\n '/fns/create-wallet/create-wallet.schema.output.json',\n ),\n '/fns/create-wallet/create-wallet.schema.output.json',\n);\nSchemas.CreateWalletFnOutput = CreateWalletFnOutputSchema;\nimport CreateWithdrawalFnInputSchema from '../fns/create-withdrawal/create-withdrawal.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateWithdrawalFnInputSchema,\n '/fns/create-withdrawal/create-withdrawal.schema.input.json',\n ),\n '/fns/create-withdrawal/create-withdrawal.schema.input.json',\n);\nSchemas.CreateWithdrawalFnInput = CreateWithdrawalFnInputSchema;\nimport CreateWithdrawalFnOutputSchema from '../fns/create-withdrawal/create-withdrawal.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateWithdrawalFnOutputSchema,\n '/fns/create-withdrawal/create-withdrawal.schema.output.json',\n ),\n '/fns/create-withdrawal/create-withdrawal.schema.output.json',\n);\nSchemas.CreateWithdrawalFnOutput = CreateWithdrawalFnOutputSchema;\nimport FindBalancesFnInputSchema from '../fns/find-balances/find-balances.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FindBalancesFnInputSchema,\n '/fns/find-balances/find-balances.schema.input.json',\n ),\n '/fns/find-balances/find-balances.schema.input.json',\n);\nSchemas.FindBalancesFnInput = FindBalancesFnInputSchema;\nimport FindBalancesFnOutputSchema from '../fns/find-balances/find-balances.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FindBalancesFnOutputSchema,\n '/fns/find-balances/find-balances.schema.output.json',\n ),\n '/fns/find-balances/find-balances.schema.output.json',\n);\nSchemas.FindBalancesFnOutput = FindBalancesFnOutputSchema;\nimport FindTokensFnInputSchema from '../fns/find-tokens/find-tokens.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FindTokensFnInputSchema,\n '/fns/find-tokens/find-tokens.schema.input.json',\n ),\n '/fns/find-tokens/find-tokens.schema.input.json',\n);\nSchemas.FindTokensFnInput = FindTokensFnInputSchema;\nimport FindTokensFnOutputSchema from '../fns/find-tokens/find-tokens.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FindTokensFnOutputSchema,\n '/fns/find-tokens/find-tokens.schema.output.json',\n ),\n '/fns/find-tokens/find-tokens.schema.output.json',\n);\nSchemas.FindTokensFnOutput = FindTokensFnOutputSchema;\nimport FindTransferGroupsFnInputSchema from '../fns/find-transfer-groups/find-transfer-groups.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FindTransferGroupsFnInputSchema,\n '/fns/find-transfer-groups/find-transfer-groups.schema.input.json',\n ),\n '/fns/find-transfer-groups/find-transfer-groups.schema.input.json',\n);\nSchemas.FindTransferGroupsFnInput = FindTransferGroupsFnInputSchema;\nimport FindTransferGroupsFnOutputSchema from '../fns/find-transfer-groups/find-transfer-groups.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FindTransferGroupsFnOutputSchema,\n '/fns/find-transfer-groups/find-transfer-groups.schema.output.json',\n ),\n '/fns/find-transfer-groups/find-transfer-groups.schema.output.json',\n);\nSchemas.FindTransferGroupsFnOutput = FindTransferGroupsFnOutputSchema;\nimport FindTransfersFnInputSchema from '../fns/find-transfers/find-transfers.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FindTransfersFnInputSchema,\n '/fns/find-transfers/find-transfers.schema.input.json',\n ),\n '/fns/find-transfers/find-transfers.schema.input.json',\n);\nSchemas.FindTransfersFnInput = FindTransfersFnInputSchema;\nimport FindTransfersFnOutputSchema from '../fns/find-transfers/find-transfers.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FindTransfersFnOutputSchema,\n '/fns/find-transfers/find-transfers.schema.output.json',\n ),\n '/fns/find-transfers/find-transfers.schema.output.json',\n);\nSchemas.FindTransfersFnOutput = FindTransfersFnOutputSchema;\nimport FindWalletsFnInputSchema from '../fns/find-wallets/find-wallets.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FindWalletsFnInputSchema,\n '/fns/find-wallets/find-wallets.schema.input.json',\n ),\n '/fns/find-wallets/find-wallets.schema.input.json',\n);\nSchemas.FindWalletsFnInput = FindWalletsFnInputSchema;\nimport FindWalletsFnOutputSchema from '../fns/find-wallets/find-wallets.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FindWalletsFnOutputSchema,\n '/fns/find-wallets/find-wallets.schema.output.json',\n ),\n '/fns/find-wallets/find-wallets.schema.output.json',\n);\nSchemas.FindWalletsFnOutput = FindWalletsFnOutputSchema;\nimport FnConstsSchema from '../fns/fn-consts.schema.json';\najv.addSchema(\n fixSelfRefs(FnConstsSchema, '/fns/fn-consts.schema.json'),\n '/fns/fn-consts.schema.json',\n);\nSchemas.FnConsts = FnConstsSchema;\nimport GetBalanceFnInputSchema from '../fns/get-balance/get-balance.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetBalanceFnInputSchema,\n '/fns/get-balance/get-balance.schema.input.json',\n ),\n '/fns/get-balance/get-balance.schema.input.json',\n);\nSchemas.GetBalanceFnInput = GetBalanceFnInputSchema;\nimport GetBalanceFnOutputSchema from '../fns/get-balance/get-balance.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetBalanceFnOutputSchema,\n '/fns/get-balance/get-balance.schema.output.json',\n ),\n '/fns/get-balance/get-balance.schema.output.json',\n);\nSchemas.GetBalanceFnOutput = GetBalanceFnOutputSchema;\nimport GetBalanceHistoryFnInputSchema from '../fns/get-balance-history/get-balance-history.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetBalanceHistoryFnInputSchema,\n '/fns/get-balance-history/get-balance-history.schema.input.json',\n ),\n '/fns/get-balance-history/get-balance-history.schema.input.json',\n);\nSchemas.GetBalanceHistoryFnInput = GetBalanceHistoryFnInputSchema;\nimport GetBalanceHistoryFnOutputSchema from '../fns/get-balance-history/get-balance-history.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetBalanceHistoryFnOutputSchema,\n '/fns/get-balance-history/get-balance-history.schema.output.json',\n ),\n '/fns/get-balance-history/get-balance-history.schema.output.json',\n);\nSchemas.GetBalanceHistoryFnOutput = GetBalanceHistoryFnOutputSchema;\nimport GetFlagsFnInputSchema from '../fns/get-flags/get-flags.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetFlagsFnInputSchema,\n '/fns/get-flags/get-flags.schema.input.json',\n ),\n '/fns/get-flags/get-flags.schema.input.json',\n);\nSchemas.GetFlagsFnInput = GetFlagsFnInputSchema;\nimport GetFlagsFnOutputSchema from '../fns/get-flags/get-flags.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetFlagsFnOutputSchema,\n '/fns/get-flags/get-flags.schema.output.json',\n ),\n '/fns/get-flags/get-flags.schema.output.json',\n);\nSchemas.GetFlagsFnOutput = GetFlagsFnOutputSchema;\nimport GetStatisticsFnInputSchema from '../fns/get-statistics/get-statistics.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetStatisticsFnInputSchema,\n '/fns/get-statistics/get-statistics.schema.input.json',\n ),\n '/fns/get-statistics/get-statistics.schema.input.json',\n);\nSchemas.GetStatisticsFnInput = GetStatisticsFnInputSchema;\nimport GetStatisticsFnOutputSchema from '../fns/get-statistics/get-statistics.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetStatisticsFnOutputSchema,\n '/fns/get-statistics/get-statistics.schema.output.json',\n ),\n '/fns/get-statistics/get-statistics.schema.output.json',\n);\nSchemas.GetStatisticsFnOutput = GetStatisticsFnOutputSchema;\nimport GetTokenFnInputSchema from '../fns/get-token/get-token.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetTokenFnInputSchema,\n '/fns/get-token/get-token.schema.input.json',\n ),\n '/fns/get-token/get-token.schema.input.json',\n);\nSchemas.GetTokenFnInput = GetTokenFnInputSchema;\nimport GetTokenFnOutputSchema from '../fns/get-token/get-token.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetTokenFnOutputSchema,\n '/fns/get-token/get-token.schema.output.json',\n ),\n '/fns/get-token/get-token.schema.output.json',\n);\nSchemas.GetTokenFnOutput = GetTokenFnOutputSchema;\nimport GetTransferFnInputSchema from '../fns/get-transfer/get-transfer.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetTransferFnInputSchema,\n '/fns/get-transfer/get-transfer.schema.input.json',\n ),\n '/fns/get-transfer/get-transfer.schema.input.json',\n);\nSchemas.GetTransferFnInput = GetTransferFnInputSchema;\nimport GetTransferFnOutputSchema from '../fns/get-transfer/get-transfer.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetTransferFnOutputSchema,\n '/fns/get-transfer/get-transfer.schema.output.json',\n ),\n '/fns/get-transfer/get-transfer.schema.output.json',\n);\nSchemas.GetTransferFnOutput = GetTransferFnOutputSchema;\nimport GetTransferGroupFnInputSchema from '../fns/get-transfer-group/get-transfer-group.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetTransferGroupFnInputSchema,\n '/fns/get-transfer-group/get-transfer-group.schema.input.json',\n ),\n '/fns/get-transfer-group/get-transfer-group.schema.input.json',\n);\nSchemas.GetTransferGroupFnInput = GetTransferGroupFnInputSchema;\nimport GetTransferGroupFnOutputSchema from '../fns/get-transfer-group/get-transfer-group.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetTransferGroupFnOutputSchema,\n '/fns/get-transfer-group/get-transfer-group.schema.output.json',\n ),\n '/fns/get-transfer-group/get-transfer-group.schema.output.json',\n);\nSchemas.GetTransferGroupFnOutput = GetTransferGroupFnOutputSchema;\nimport GetWalletFnInputSchema from '../fns/get-wallet/get-wallet.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetWalletFnInputSchema,\n '/fns/get-wallet/get-wallet.schema.input.json',\n ),\n '/fns/get-wallet/get-wallet.schema.input.json',\n);\nSchemas.GetWalletFnInput = GetWalletFnInputSchema;\nimport GetWalletFnOutputSchema from '../fns/get-wallet/get-wallet.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetWalletFnOutputSchema,\n '/fns/get-wallet/get-wallet.schema.output.json',\n ),\n '/fns/get-wallet/get-wallet.schema.output.json',\n);\nSchemas.GetWalletFnOutput = GetWalletFnOutputSchema;\nimport ImportDataFnInputSchema from '../fns/import-data/import-data.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n ImportDataFnInputSchema,\n '/fns/import-data/import-data.schema.input.json',\n ),\n '/fns/import-data/import-data.schema.input.json',\n);\nSchemas.ImportDataFnInput = ImportDataFnInputSchema;\nconst ImportDataFnOptions = getOptionsSchema(\n ImportDataFnInputSchema,\n '/fns/import-data/import-data.schema.input.json',\n);\najv.addSchema(\n ImportDataFnOptions,\n '/fns/import-data/import-data.schema.options.json',\n);\nSchemas.ImportDataFnOptions = ImportDataFnOptions;\nconst ImportDataFnStreamChunk = getChunkSchema(\n ImportDataFnInputSchema,\n '/fns/import-data/import-data.schema.input.json',\n);\najv.addSchema(\n ImportDataFnStreamChunk,\n '/fns/import-data/import-data.schema.chunk.json',\n);\nSchemas.ImportDataFnStreamChunk = ImportDataFnStreamChunk;\nimport ImportDataFnOutputSchema from '../fns/import-data/import-data.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n ImportDataFnOutputSchema,\n '/fns/import-data/import-data.schema.output.json',\n ),\n '/fns/import-data/import-data.schema.output.json',\n);\nSchemas.ImportDataFnOutput = ImportDataFnOutputSchema;\nimport ReverseTransferFnInputSchema from '../fns/reverse-transfer/reverse-transfer.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferFnInputSchema,\n '/fns/reverse-transfer/reverse-transfer.schema.input.json',\n ),\n '/fns/reverse-transfer/reverse-transfer.schema.input.json',\n);\nSchemas.ReverseTransferFnInput = ReverseTransferFnInputSchema;\nimport ReverseTransferFnOutputSchema from '../fns/reverse-transfer/reverse-transfer.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferFnOutputSchema,\n '/fns/reverse-transfer/reverse-transfer.schema.output.json',\n ),\n '/fns/reverse-transfer/reverse-transfer.schema.output.json',\n);\nSchemas.ReverseTransferFnOutput = ReverseTransferFnOutputSchema;\nimport ReverseTransferGroupFnInputSchema from '../fns/reverse-transfer-group/reverse-transfer-group.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferGroupFnInputSchema,\n '/fns/reverse-transfer-group/reverse-transfer-group.schema.input.json',\n ),\n '/fns/reverse-transfer-group/reverse-transfer-group.schema.input.json',\n);\nSchemas.ReverseTransferGroupFnInput = ReverseTransferGroupFnInputSchema;\nimport ReverseTransferGroupFnOutputSchema from '../fns/reverse-transfer-group/reverse-transfer-group.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferGroupFnOutputSchema,\n '/fns/reverse-transfer-group/reverse-transfer-group.schema.output.json',\n ),\n '/fns/reverse-transfer-group/reverse-transfer-group.schema.output.json',\n);\nSchemas.ReverseTransferGroupFnOutput = ReverseTransferGroupFnOutputSchema;\nimport ReverseTransfersFnInputSchema from '../fns/reverse-transfers/reverse-transfers.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransfersFnInputSchema,\n '/fns/reverse-transfers/reverse-transfers.schema.input.json',\n ),\n '/fns/reverse-transfers/reverse-transfers.schema.input.json',\n);\nSchemas.ReverseTransfersFnInput = ReverseTransfersFnInputSchema;\nimport ReverseTransfersFnOutputSchema from '../fns/reverse-transfers/reverse-transfers.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransfersFnOutputSchema,\n '/fns/reverse-transfers/reverse-transfers.schema.output.json',\n ),\n '/fns/reverse-transfers/reverse-transfers.schema.output.json',\n);\nSchemas.ReverseTransfersFnOutput = ReverseTransfersFnOutputSchema;\nimport SetFlagsFnInputSchema from '../fns/set-flags/set-flags.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n SetFlagsFnInputSchema,\n '/fns/set-flags/set-flags.schema.input.json',\n ),\n '/fns/set-flags/set-flags.schema.input.json',\n);\nSchemas.SetFlagsFnInput = SetFlagsFnInputSchema;\nimport SetFlagsFnOutputSchema from '../fns/set-flags/set-flags.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n SetFlagsFnOutputSchema,\n '/fns/set-flags/set-flags.schema.output.json',\n ),\n '/fns/set-flags/set-flags.schema.output.json',\n);\nSchemas.SetFlagsFnOutput = SetFlagsFnOutputSchema;\nimport UpdateTokenFnInputSchema from '../fns/update-token/update-token.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTokenFnInputSchema,\n '/fns/update-token/update-token.schema.input.json',\n ),\n '/fns/update-token/update-token.schema.input.json',\n);\nSchemas.UpdateTokenFnInput = UpdateTokenFnInputSchema;\nimport UpdateTokenFnOutputSchema from '../fns/update-token/update-token.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTokenFnOutputSchema,\n '/fns/update-token/update-token.schema.output.json',\n ),\n '/fns/update-token/update-token.schema.output.json',\n);\nSchemas.UpdateTokenFnOutput = UpdateTokenFnOutputSchema;\nimport UpdateTransferFnInputSchema from '../fns/update-transfer/update-transfer.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferFnInputSchema,\n '/fns/update-transfer/update-transfer.schema.input.json',\n ),\n '/fns/update-transfer/update-transfer.schema.input.json',\n);\nSchemas.UpdateTransferFnInput = UpdateTransferFnInputSchema;\nimport UpdateTransferFnOutputSchema from '../fns/update-transfer/update-transfer.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferFnOutputSchema,\n '/fns/update-transfer/update-transfer.schema.output.json',\n ),\n '/fns/update-transfer/update-transfer.schema.output.json',\n);\nSchemas.UpdateTransferFnOutput = UpdateTransferFnOutputSchema;\nimport UpdateTransferGroupFnInputSchema from '../fns/update-transfer-group/update-transfer-group.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferGroupFnInputSchema,\n '/fns/update-transfer-group/update-transfer-group.schema.input.json',\n ),\n '/fns/update-transfer-group/update-transfer-group.schema.input.json',\n);\nSchemas.UpdateTransferGroupFnInput = UpdateTransferGroupFnInputSchema;\nimport UpdateTransferGroupFnOutputSchema from '../fns/update-transfer-group/update-transfer-group.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferGroupFnOutputSchema,\n '/fns/update-transfer-group/update-transfer-group.schema.output.json',\n ),\n '/fns/update-transfer-group/update-transfer-group.schema.output.json',\n);\nSchemas.UpdateTransferGroupFnOutput = UpdateTransferGroupFnOutputSchema;\nimport UpdateTransferGroupsFnInputSchema from '../fns/update-transfer-groups/update-transfer-groups.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferGroupsFnInputSchema,\n '/fns/update-transfer-groups/update-transfer-groups.schema.input.json',\n ),\n '/fns/update-transfer-groups/update-transfer-groups.schema.input.json',\n);\nSchemas.UpdateTransferGroupsFnInput = UpdateTransferGroupsFnInputSchema;\nimport UpdateTransferGroupsFnOutputSchema from '../fns/update-transfer-groups/update-transfer-groups.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferGroupsFnOutputSchema,\n '/fns/update-transfer-groups/update-transfer-groups.schema.output.json',\n ),\n '/fns/update-transfer-groups/update-transfer-groups.schema.output.json',\n);\nSchemas.UpdateTransferGroupsFnOutput = UpdateTransferGroupsFnOutputSchema;\nimport UpdateTransfersFnInputSchema from '../fns/update-transfers/update-transfers.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransfersFnInputSchema,\n '/fns/update-transfers/update-transfers.schema.input.json',\n ),\n '/fns/update-transfers/update-transfers.schema.input.json',\n);\nSchemas.UpdateTransfersFnInput = UpdateTransfersFnInputSchema;\nimport UpdateTransfersFnOutputSchema from '../fns/update-transfers/update-transfers.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransfersFnOutputSchema,\n '/fns/update-transfers/update-transfers.schema.output.json',\n ),\n '/fns/update-transfers/update-transfers.schema.output.json',\n);\nSchemas.UpdateTransfersFnOutput = UpdateTransfersFnOutputSchema;\nimport UpdateWalletFnInputSchema from '../fns/update-wallet/update-wallet.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateWalletFnInputSchema,\n '/fns/update-wallet/update-wallet.schema.input.json',\n ),\n '/fns/update-wallet/update-wallet.schema.input.json',\n);\nSchemas.UpdateWalletFnInput = UpdateWalletFnInputSchema;\nimport UpdateWalletFnOutputSchema from '../fns/update-wallet/update-wallet.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateWalletFnOutputSchema,\n '/fns/update-wallet/update-wallet.schema.output.json',\n ),\n '/fns/update-wallet/update-wallet.schema.output.json',\n);\nSchemas.UpdateWalletFnOutput = UpdateWalletFnOutputSchema;\nimport AggregateTransferManyTxInputSchema from '../txs/aggregate-transfer-many/aggregate-transfer-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n AggregateTransferManyTxInputSchema,\n '/txs/aggregate-transfer-many/aggregate-transfer-many.schema.input.json',\n ),\n '/txs/aggregate-transfer-many/aggregate-transfer-many.schema.input.json',\n);\nSchemas.AggregateTransferManyTxInput = AggregateTransferManyTxInputSchema;\nimport AggregateTransferManyTxOutputSchema from '../txs/aggregate-transfer-many/aggregate-transfer-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n AggregateTransferManyTxOutputSchema,\n '/txs/aggregate-transfer-many/aggregate-transfer-many.schema.output.json',\n ),\n '/txs/aggregate-transfer-many/aggregate-transfer-many.schema.output.json',\n);\nSchemas.AggregateTransferManyTxOutput = AggregateTransferManyTxOutputSchema;\nimport CreateContractTxInputSchema from '../txs/create-contract/create-contract.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateContractTxInputSchema,\n '/txs/create-contract/create-contract.schema.input.json',\n ),\n '/txs/create-contract/create-contract.schema.input.json',\n);\nSchemas.CreateContractTxInput = CreateContractTxInputSchema;\nimport CreateContractTxOutputSchema from '../txs/create-contract/create-contract.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateContractTxOutputSchema,\n '/txs/create-contract/create-contract.schema.output.json',\n ),\n '/txs/create-contract/create-contract.schema.output.json',\n);\nSchemas.CreateContractTxOutput = CreateContractTxOutputSchema;\nimport CreateDepositTxInputSchema from '../txs/create-deposit/create-deposit.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateDepositTxInputSchema,\n '/txs/create-deposit/create-deposit.schema.input.json',\n ),\n '/txs/create-deposit/create-deposit.schema.input.json',\n);\nSchemas.CreateDepositTxInput = CreateDepositTxInputSchema;\nimport CreateDepositTxOutputSchema from '../txs/create-deposit/create-deposit.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateDepositTxOutputSchema,\n '/txs/create-deposit/create-deposit.schema.output.json',\n ),\n '/txs/create-deposit/create-deposit.schema.output.json',\n);\nSchemas.CreateDepositTxOutput = CreateDepositTxOutputSchema;\nimport CreateDistributionTxInputSchema from '../txs/create-distribution/create-distribution.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateDistributionTxInputSchema,\n '/txs/create-distribution/create-distribution.schema.input.json',\n ),\n '/txs/create-distribution/create-distribution.schema.input.json',\n);\nSchemas.CreateDistributionTxInput = CreateDistributionTxInputSchema;\nimport CreateDistributionTxOutputSchema from '../txs/create-distribution/create-distribution.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateDistributionTxOutputSchema,\n '/txs/create-distribution/create-distribution.schema.output.json',\n ),\n '/txs/create-distribution/create-distribution.schema.output.json',\n);\nSchemas.CreateDistributionTxOutput = CreateDistributionTxOutputSchema;\nimport CreateTokenTxInputSchema from '../txs/create-token/create-token.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateTokenTxInputSchema,\n '/txs/create-token/create-token.schema.input.json',\n ),\n '/txs/create-token/create-token.schema.input.json',\n);\nSchemas.CreateTokenTxInput = CreateTokenTxInputSchema;\nimport CreateTokenTxOutputSchema from '../txs/create-token/create-token.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateTokenTxOutputSchema,\n '/txs/create-token/create-token.schema.output.json',\n ),\n '/txs/create-token/create-token.schema.output.json',\n);\nSchemas.CreateTokenTxOutput = CreateTokenTxOutputSchema;\nimport CreateTransferTxInputSchema from '../txs/create-transfer/create-transfer.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransferTxInputSchema,\n '/txs/create-transfer/create-transfer.schema.input.json',\n ),\n '/txs/create-transfer/create-transfer.schema.input.json',\n);\nSchemas.CreateTransferTxInput = CreateTransferTxInputSchema;\nimport CreateTransferTxOutputSchema from '../txs/create-transfer/create-transfer.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransferTxOutputSchema,\n '/txs/create-transfer/create-transfer.schema.output.json',\n ),\n '/txs/create-transfer/create-transfer.schema.output.json',\n);\nSchemas.CreateTransferTxOutput = CreateTransferTxOutputSchema;\nimport CreateTransferGroupTxInputSchema from '../txs/create-transfer-group/create-transfer-group.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransferGroupTxInputSchema,\n '/txs/create-transfer-group/create-transfer-group.schema.input.json',\n ),\n '/txs/create-transfer-group/create-transfer-group.schema.input.json',\n);\nSchemas.CreateTransferGroupTxInput = CreateTransferGroupTxInputSchema;\nimport CreateTransferGroupTxOutputSchema from '../txs/create-transfer-group/create-transfer-group.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransferGroupTxOutputSchema,\n '/txs/create-transfer-group/create-transfer-group.schema.output.json',\n ),\n '/txs/create-transfer-group/create-transfer-group.schema.output.json',\n);\nSchemas.CreateTransferGroupTxOutput = CreateTransferGroupTxOutputSchema;\nimport CreateTransferManyTxInputSchema from '../txs/create-transfer-many/create-transfer-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransferManyTxInputSchema,\n '/txs/create-transfer-many/create-transfer-many.schema.input.json',\n ),\n '/txs/create-transfer-many/create-transfer-many.schema.input.json',\n);\nSchemas.CreateTransferManyTxInput = CreateTransferManyTxInputSchema;\nimport CreateTransferManyTxOutputSchema from '../txs/create-transfer-many/create-transfer-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateTransferManyTxOutputSchema,\n '/txs/create-transfer-many/create-transfer-many.schema.output.json',\n ),\n '/txs/create-transfer-many/create-transfer-many.schema.output.json',\n);\nSchemas.CreateTransferManyTxOutput = CreateTransferManyTxOutputSchema;\nimport CreateWalletTxInputSchema from '../txs/create-wallet/create-wallet.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateWalletTxInputSchema,\n '/txs/create-wallet/create-wallet.schema.input.json',\n ),\n '/txs/create-wallet/create-wallet.schema.input.json',\n);\nSchemas.CreateWalletTxInput = CreateWalletTxInputSchema;\nimport CreateWalletTxOutputSchema from '../txs/create-wallet/create-wallet.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateWalletTxOutputSchema,\n '/txs/create-wallet/create-wallet.schema.output.json',\n ),\n '/txs/create-wallet/create-wallet.schema.output.json',\n);\nSchemas.CreateWalletTxOutput = CreateWalletTxOutputSchema;\nimport CreateWithdrawalTxInputSchema from '../txs/create-withdrawal/create-withdrawal.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n CreateWithdrawalTxInputSchema,\n '/txs/create-withdrawal/create-withdrawal.schema.input.json',\n ),\n '/txs/create-withdrawal/create-withdrawal.schema.input.json',\n);\nSchemas.CreateWithdrawalTxInput = CreateWithdrawalTxInputSchema;\nimport CreateWithdrawalTxOutputSchema from '../txs/create-withdrawal/create-withdrawal.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n CreateWithdrawalTxOutputSchema,\n '/txs/create-withdrawal/create-withdrawal.schema.output.json',\n ),\n '/txs/create-withdrawal/create-withdrawal.schema.output.json',\n);\nSchemas.CreateWithdrawalTxOutput = CreateWithdrawalTxOutputSchema;\nimport FindBalanceManyTxInputSchema from '../txs/find-balance-many/find-balance-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FindBalanceManyTxInputSchema,\n '/txs/find-balance-many/find-balance-many.schema.input.json',\n ),\n '/txs/find-balance-many/find-balance-many.schema.input.json',\n);\nSchemas.FindBalanceManyTxInput = FindBalanceManyTxInputSchema;\nimport FindBalanceManyTxOutputSchema from '../txs/find-balance-many/find-balance-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FindBalanceManyTxOutputSchema,\n '/txs/find-balance-many/find-balance-many.schema.output.json',\n ),\n '/txs/find-balance-many/find-balance-many.schema.output.json',\n);\nSchemas.FindBalanceManyTxOutput = FindBalanceManyTxOutputSchema;\nimport FindTokenManyTxInputSchema from '../txs/find-token-many/find-token-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FindTokenManyTxInputSchema,\n '/txs/find-token-many/find-token-many.schema.input.json',\n ),\n '/txs/find-token-many/find-token-many.schema.input.json',\n);\nSchemas.FindTokenManyTxInput = FindTokenManyTxInputSchema;\nimport FindTokenManyTxOutputSchema from '../txs/find-token-many/find-token-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FindTokenManyTxOutputSchema,\n '/txs/find-token-many/find-token-many.schema.output.json',\n ),\n '/txs/find-token-many/find-token-many.schema.output.json',\n);\nSchemas.FindTokenManyTxOutput = FindTokenManyTxOutputSchema;\nimport FindTransferGroupManyTxInputSchema from '../txs/find-transfer-group-many/find-transfer-group-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FindTransferGroupManyTxInputSchema,\n '/txs/find-transfer-group-many/find-transfer-group-many.schema.input.json',\n ),\n '/txs/find-transfer-group-many/find-transfer-group-many.schema.input.json',\n);\nSchemas.FindTransferGroupManyTxInput = FindTransferGroupManyTxInputSchema;\nimport FindTransferGroupManyTxOutputSchema from '../txs/find-transfer-group-many/find-transfer-group-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FindTransferGroupManyTxOutputSchema,\n '/txs/find-transfer-group-many/find-transfer-group-many.schema.output.json',\n ),\n '/txs/find-transfer-group-many/find-transfer-group-many.schema.output.json',\n);\nSchemas.FindTransferGroupManyTxOutput = FindTransferGroupManyTxOutputSchema;\nimport FindTransferManyTxInputSchema from '../txs/find-transfer-many/find-transfer-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FindTransferManyTxInputSchema,\n '/txs/find-transfer-many/find-transfer-many.schema.input.json',\n ),\n '/txs/find-transfer-many/find-transfer-many.schema.input.json',\n);\nSchemas.FindTransferManyTxInput = FindTransferManyTxInputSchema;\nimport FindTransferManyTxOutputSchema from '../txs/find-transfer-many/find-transfer-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FindTransferManyTxOutputSchema,\n '/txs/find-transfer-many/find-transfer-many.schema.output.json',\n ),\n '/txs/find-transfer-many/find-transfer-many.schema.output.json',\n);\nSchemas.FindTransferManyTxOutput = FindTransferManyTxOutputSchema;\nimport FindWalletManyTxInputSchema from '../txs/find-wallet-many/find-wallet-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FindWalletManyTxInputSchema,\n '/txs/find-wallet-many/find-wallet-many.schema.input.json',\n ),\n '/txs/find-wallet-many/find-wallet-many.schema.input.json',\n);\nSchemas.FindWalletManyTxInput = FindWalletManyTxInputSchema;\nimport FindWalletManyTxOutputSchema from '../txs/find-wallet-many/find-wallet-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FindWalletManyTxOutputSchema,\n '/txs/find-wallet-many/find-wallet-many.schema.output.json',\n ),\n '/txs/find-wallet-many/find-wallet-many.schema.output.json',\n);\nSchemas.FindWalletManyTxOutput = FindWalletManyTxOutputSchema;\nimport FinishTransactionTxInputSchema from '../txs/finish-transaction/finish-transaction.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n FinishTransactionTxInputSchema,\n '/txs/finish-transaction/finish-transaction.schema.input.json',\n ),\n '/txs/finish-transaction/finish-transaction.schema.input.json',\n);\nSchemas.FinishTransactionTxInput = FinishTransactionTxInputSchema;\nimport FinishTransactionTxOutputSchema from '../txs/finish-transaction/finish-transaction.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n FinishTransactionTxOutputSchema,\n '/txs/finish-transaction/finish-transaction.schema.output.json',\n ),\n '/txs/finish-transaction/finish-transaction.schema.output.json',\n);\nSchemas.FinishTransactionTxOutput = FinishTransactionTxOutputSchema;\nimport GetBalanceTxInputSchema from '../txs/get-balance/get-balance.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetBalanceTxInputSchema,\n '/txs/get-balance/get-balance.schema.input.json',\n ),\n '/txs/get-balance/get-balance.schema.input.json',\n);\nSchemas.GetBalanceTxInput = GetBalanceTxInputSchema;\nimport GetBalanceTxOutputSchema from '../txs/get-balance/get-balance.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetBalanceTxOutputSchema,\n '/txs/get-balance/get-balance.schema.output.json',\n ),\n '/txs/get-balance/get-balance.schema.output.json',\n);\nSchemas.GetBalanceTxOutput = GetBalanceTxOutputSchema;\nimport GetBalanceHistoryTxInputSchema from '../txs/get-balance-history/get-balance-history.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetBalanceHistoryTxInputSchema,\n '/txs/get-balance-history/get-balance-history.schema.input.json',\n ),\n '/txs/get-balance-history/get-balance-history.schema.input.json',\n);\nSchemas.GetBalanceHistoryTxInput = GetBalanceHistoryTxInputSchema;\nimport GetBalanceHistoryTxOutputSchema from '../txs/get-balance-history/get-balance-history.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetBalanceHistoryTxOutputSchema,\n '/txs/get-balance-history/get-balance-history.schema.output.json',\n ),\n '/txs/get-balance-history/get-balance-history.schema.output.json',\n);\nSchemas.GetBalanceHistoryTxOutput = GetBalanceHistoryTxOutputSchema;\nimport GetFlagsTxInputSchema from '../txs/get-flags/get-flags.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetFlagsTxInputSchema,\n '/txs/get-flags/get-flags.schema.input.json',\n ),\n '/txs/get-flags/get-flags.schema.input.json',\n);\nSchemas.GetFlagsTxInput = GetFlagsTxInputSchema;\nimport GetFlagsTxOutputSchema from '../txs/get-flags/get-flags.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetFlagsTxOutputSchema,\n '/txs/get-flags/get-flags.schema.output.json',\n ),\n '/txs/get-flags/get-flags.schema.output.json',\n);\nSchemas.GetFlagsTxOutput = GetFlagsTxOutputSchema;\nimport GetStatisticsTxInputSchema from '../txs/get-statistics/get-statistics.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetStatisticsTxInputSchema,\n '/txs/get-statistics/get-statistics.schema.input.json',\n ),\n '/txs/get-statistics/get-statistics.schema.input.json',\n);\nSchemas.GetStatisticsTxInput = GetStatisticsTxInputSchema;\nimport GetStatisticsTxOutputSchema from '../txs/get-statistics/get-statistics.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetStatisticsTxOutputSchema,\n '/txs/get-statistics/get-statistics.schema.output.json',\n ),\n '/txs/get-statistics/get-statistics.schema.output.json',\n);\nSchemas.GetStatisticsTxOutput = GetStatisticsTxOutputSchema;\nimport GetTokenTxInputSchema from '../txs/get-token/get-token.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetTokenTxInputSchema,\n '/txs/get-token/get-token.schema.input.json',\n ),\n '/txs/get-token/get-token.schema.input.json',\n);\nSchemas.GetTokenTxInput = GetTokenTxInputSchema;\nimport GetTokenTxOutputSchema from '../txs/get-token/get-token.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetTokenTxOutputSchema,\n '/txs/get-token/get-token.schema.output.json',\n ),\n '/txs/get-token/get-token.schema.output.json',\n);\nSchemas.GetTokenTxOutput = GetTokenTxOutputSchema;\nimport GetTokenManyTxInputSchema from '../txs/get-token-many/get-token-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetTokenManyTxInputSchema,\n '/txs/get-token-many/get-token-many.schema.input.json',\n ),\n '/txs/get-token-many/get-token-many.schema.input.json',\n);\nSchemas.GetTokenManyTxInput = GetTokenManyTxInputSchema;\nimport GetTokenManyTxOutputSchema from '../txs/get-token-many/get-token-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetTokenManyTxOutputSchema,\n '/txs/get-token-many/get-token-many.schema.output.json',\n ),\n '/txs/get-token-many/get-token-many.schema.output.json',\n);\nSchemas.GetTokenManyTxOutput = GetTokenManyTxOutputSchema;\nimport GetTransferTxInputSchema from '../txs/get-transfer/get-transfer.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetTransferTxInputSchema,\n '/txs/get-transfer/get-transfer.schema.input.json',\n ),\n '/txs/get-transfer/get-transfer.schema.input.json',\n);\nSchemas.GetTransferTxInput = GetTransferTxInputSchema;\nimport GetTransferTxOutputSchema from '../txs/get-transfer/get-transfer.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetTransferTxOutputSchema,\n '/txs/get-transfer/get-transfer.schema.output.json',\n ),\n '/txs/get-transfer/get-transfer.schema.output.json',\n);\nSchemas.GetTransferTxOutput = GetTransferTxOutputSchema;\nimport GetTransferGroupTxInputSchema from '../txs/get-transfer-group/get-transfer-group.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetTransferGroupTxInputSchema,\n '/txs/get-transfer-group/get-transfer-group.schema.input.json',\n ),\n '/txs/get-transfer-group/get-transfer-group.schema.input.json',\n);\nSchemas.GetTransferGroupTxInput = GetTransferGroupTxInputSchema;\nimport GetTransferGroupTxOutputSchema from '../txs/get-transfer-group/get-transfer-group.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetTransferGroupTxOutputSchema,\n '/txs/get-transfer-group/get-transfer-group.schema.output.json',\n ),\n '/txs/get-transfer-group/get-transfer-group.schema.output.json',\n);\nSchemas.GetTransferGroupTxOutput = GetTransferGroupTxOutputSchema;\nimport GetWalletTxInputSchema from '../txs/get-wallet/get-wallet.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetWalletTxInputSchema,\n '/txs/get-wallet/get-wallet.schema.input.json',\n ),\n '/txs/get-wallet/get-wallet.schema.input.json',\n);\nSchemas.GetWalletTxInput = GetWalletTxInputSchema;\nimport GetWalletTxOutputSchema from '../txs/get-wallet/get-wallet.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetWalletTxOutputSchema,\n '/txs/get-wallet/get-wallet.schema.output.json',\n ),\n '/txs/get-wallet/get-wallet.schema.output.json',\n);\nSchemas.GetWalletTxOutput = GetWalletTxOutputSchema;\nimport GetWalletManyTxInputSchema from '../txs/get-wallet-many/get-wallet-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n GetWalletManyTxInputSchema,\n '/txs/get-wallet-many/get-wallet-many.schema.input.json',\n ),\n '/txs/get-wallet-many/get-wallet-many.schema.input.json',\n);\nSchemas.GetWalletManyTxInput = GetWalletManyTxInputSchema;\nimport GetWalletManyTxOutputSchema from '../txs/get-wallet-many/get-wallet-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n GetWalletManyTxOutputSchema,\n '/txs/get-wallet-many/get-wallet-many.schema.output.json',\n ),\n '/txs/get-wallet-many/get-wallet-many.schema.output.json',\n);\nSchemas.GetWalletManyTxOutput = GetWalletManyTxOutputSchema;\nimport ImportActionsTxInputSchema from '../txs/import-actions/import-actions.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n ImportActionsTxInputSchema,\n '/txs/import-actions/import-actions.schema.input.json',\n ),\n '/txs/import-actions/import-actions.schema.input.json',\n);\nSchemas.ImportActionsTxInput = ImportActionsTxInputSchema;\nconst ImportActionsTxOptions = getOptionsSchema(\n ImportActionsTxInputSchema,\n '/txs/import-actions/import-actions.schema.input.json',\n);\najv.addSchema(\n ImportActionsTxOptions,\n '/txs/import-actions/import-actions.schema.options.json',\n);\nSchemas.ImportActionsTxOptions = ImportActionsTxOptions;\nconst ImportActionsTxStreamChunk = getChunkSchema(\n ImportActionsTxInputSchema,\n '/txs/import-actions/import-actions.schema.input.json',\n);\najv.addSchema(\n ImportActionsTxStreamChunk,\n '/txs/import-actions/import-actions.schema.chunk.json',\n);\nSchemas.ImportActionsTxStreamChunk = ImportActionsTxStreamChunk;\nimport ImportActionsTxOutputSchema from '../txs/import-actions/import-actions.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n ImportActionsTxOutputSchema,\n '/txs/import-actions/import-actions.schema.output.json',\n ),\n '/txs/import-actions/import-actions.schema.output.json',\n);\nSchemas.ImportActionsTxOutput = ImportActionsTxOutputSchema;\nimport QueryTxInputSchema from '../txs/query/query.schema.input.json';\najv.addSchema(\n fixSelfRefs(QueryTxInputSchema, '/txs/query/query.schema.input.json'),\n '/txs/query/query.schema.input.json',\n);\nSchemas.QueryTxInput = QueryTxInputSchema;\nimport QueryTxOutputSchema from '../txs/query/query.schema.output.json';\najv.addSchema(\n fixSelfRefs(QueryTxOutputSchema, '/txs/query/query.schema.output.json'),\n '/txs/query/query.schema.output.json',\n);\nSchemas.QueryTxOutput = QueryTxOutputSchema;\nimport QueryLogsTxInputSchema from '../txs/query-logs/query-logs.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n QueryLogsTxInputSchema,\n '/txs/query-logs/query-logs.schema.input.json',\n ),\n '/txs/query-logs/query-logs.schema.input.json',\n);\nSchemas.QueryLogsTxInput = QueryLogsTxInputSchema;\nimport QueryLogsTxOutputSchema from '../txs/query-logs/query-logs.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n QueryLogsTxOutputSchema,\n '/txs/query-logs/query-logs.schema.output.json',\n ),\n '/txs/query-logs/query-logs.schema.output.json',\n);\nSchemas.QueryLogsTxOutput = QueryLogsTxOutputSchema;\nimport ResetDatabaseTxInputSchema from '../txs/reset-database/reset-database.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n ResetDatabaseTxInputSchema,\n '/txs/reset-database/reset-database.schema.input.json',\n ),\n '/txs/reset-database/reset-database.schema.input.json',\n);\nSchemas.ResetDatabaseTxInput = ResetDatabaseTxInputSchema;\nimport ResetDatabaseTxOutputSchema from '../txs/reset-database/reset-database.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n ResetDatabaseTxOutputSchema,\n '/txs/reset-database/reset-database.schema.output.json',\n ),\n '/txs/reset-database/reset-database.schema.output.json',\n);\nSchemas.ResetDatabaseTxOutput = ResetDatabaseTxOutputSchema;\nimport ReverseTransferTxInputSchema from '../txs/reverse-transfer/reverse-transfer.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferTxInputSchema,\n '/txs/reverse-transfer/reverse-transfer.schema.input.json',\n ),\n '/txs/reverse-transfer/reverse-transfer.schema.input.json',\n);\nSchemas.ReverseTransferTxInput = ReverseTransferTxInputSchema;\nimport ReverseTransferTxOutputSchema from '../txs/reverse-transfer/reverse-transfer.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferTxOutputSchema,\n '/txs/reverse-transfer/reverse-transfer.schema.output.json',\n ),\n '/txs/reverse-transfer/reverse-transfer.schema.output.json',\n);\nSchemas.ReverseTransferTxOutput = ReverseTransferTxOutputSchema;\nimport ReverseTransferGroupTxInputSchema from '../txs/reverse-transfer-group/reverse-transfer-group.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferGroupTxInputSchema,\n '/txs/reverse-transfer-group/reverse-transfer-group.schema.input.json',\n ),\n '/txs/reverse-transfer-group/reverse-transfer-group.schema.input.json',\n);\nSchemas.ReverseTransferGroupTxInput = ReverseTransferGroupTxInputSchema;\nimport ReverseTransferGroupTxOutputSchema from '../txs/reverse-transfer-group/reverse-transfer-group.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferGroupTxOutputSchema,\n '/txs/reverse-transfer-group/reverse-transfer-group.schema.output.json',\n ),\n '/txs/reverse-transfer-group/reverse-transfer-group.schema.output.json',\n);\nSchemas.ReverseTransferGroupTxOutput = ReverseTransferGroupTxOutputSchema;\nimport ReverseTransferGroupManyTxInputSchema from '../txs/reverse-transfer-group-many/reverse-transfer-group-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferGroupManyTxInputSchema,\n '/txs/reverse-transfer-group-many/reverse-transfer-group-many.schema.input.json',\n ),\n '/txs/reverse-transfer-group-many/reverse-transfer-group-many.schema.input.json',\n);\nSchemas.ReverseTransferGroupManyTxInput = ReverseTransferGroupManyTxInputSchema;\nimport ReverseTransferGroupManyTxOutputSchema from '../txs/reverse-transfer-group-many/reverse-transfer-group-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferGroupManyTxOutputSchema,\n '/txs/reverse-transfer-group-many/reverse-transfer-group-many.schema.output.json',\n ),\n '/txs/reverse-transfer-group-many/reverse-transfer-group-many.schema.output.json',\n);\nSchemas.ReverseTransferGroupManyTxOutput = ReverseTransferGroupManyTxOutputSchema;\nimport ReverseTransferManyTxInputSchema from '../txs/reverse-transfer-many/reverse-transfer-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferManyTxInputSchema,\n '/txs/reverse-transfer-many/reverse-transfer-many.schema.input.json',\n ),\n '/txs/reverse-transfer-many/reverse-transfer-many.schema.input.json',\n);\nSchemas.ReverseTransferManyTxInput = ReverseTransferManyTxInputSchema;\nimport ReverseTransferManyTxOutputSchema from '../txs/reverse-transfer-many/reverse-transfer-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n ReverseTransferManyTxOutputSchema,\n '/txs/reverse-transfer-many/reverse-transfer-many.schema.output.json',\n ),\n '/txs/reverse-transfer-many/reverse-transfer-many.schema.output.json',\n);\nSchemas.ReverseTransferManyTxOutput = ReverseTransferManyTxOutputSchema;\nimport SetFlagsTxInputSchema from '../txs/set-flags/set-flags.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n SetFlagsTxInputSchema,\n '/txs/set-flags/set-flags.schema.input.json',\n ),\n '/txs/set-flags/set-flags.schema.input.json',\n);\nSchemas.SetFlagsTxInput = SetFlagsTxInputSchema;\nimport SetFlagsTxOutputSchema from '../txs/set-flags/set-flags.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n SetFlagsTxOutputSchema,\n '/txs/set-flags/set-flags.schema.output.json',\n ),\n '/txs/set-flags/set-flags.schema.output.json',\n);\nSchemas.SetFlagsTxOutput = SetFlagsTxOutputSchema;\nimport StartTransactionTxInputSchema from '../txs/start-transaction/start-transaction.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n StartTransactionTxInputSchema,\n '/txs/start-transaction/start-transaction.schema.input.json',\n ),\n '/txs/start-transaction/start-transaction.schema.input.json',\n);\nSchemas.StartTransactionTxInput = StartTransactionTxInputSchema;\nimport StartTransactionTxOutputSchema from '../txs/start-transaction/start-transaction.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n StartTransactionTxOutputSchema,\n '/txs/start-transaction/start-transaction.schema.output.json',\n ),\n '/txs/start-transaction/start-transaction.schema.output.json',\n);\nSchemas.StartTransactionTxOutput = StartTransactionTxOutputSchema;\nimport TxConstsSchema from '../txs/tx-consts.schema.json';\najv.addSchema(\n fixSelfRefs(TxConstsSchema, '/txs/tx-consts.schema.json'),\n '/txs/tx-consts.schema.json',\n);\nSchemas.TxConsts = TxConstsSchema;\nimport UpdateTokenTxInputSchema from '../txs/update-token/update-token.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTokenTxInputSchema,\n '/txs/update-token/update-token.schema.input.json',\n ),\n '/txs/update-token/update-token.schema.input.json',\n);\nSchemas.UpdateTokenTxInput = UpdateTokenTxInputSchema;\nimport UpdateTokenTxOutputSchema from '../txs/update-token/update-token.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTokenTxOutputSchema,\n '/txs/update-token/update-token.schema.output.json',\n ),\n '/txs/update-token/update-token.schema.output.json',\n);\nSchemas.UpdateTokenTxOutput = UpdateTokenTxOutputSchema;\nimport UpdateTransferTxInputSchema from '../txs/update-transfer/update-transfer.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferTxInputSchema,\n '/txs/update-transfer/update-transfer.schema.input.json',\n ),\n '/txs/update-transfer/update-transfer.schema.input.json',\n);\nSchemas.UpdateTransferTxInput = UpdateTransferTxInputSchema;\nimport UpdateTransferTxOutputSchema from '../txs/update-transfer/update-transfer.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferTxOutputSchema,\n '/txs/update-transfer/update-transfer.schema.output.json',\n ),\n '/txs/update-transfer/update-transfer.schema.output.json',\n);\nSchemas.UpdateTransferTxOutput = UpdateTransferTxOutputSchema;\nimport UpdateTransferGroupTxInputSchema from '../txs/update-transfer-group/update-transfer-group.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferGroupTxInputSchema,\n '/txs/update-transfer-group/update-transfer-group.schema.input.json',\n ),\n '/txs/update-transfer-group/update-transfer-group.schema.input.json',\n);\nSchemas.UpdateTransferGroupTxInput = UpdateTransferGroupTxInputSchema;\nimport UpdateTransferGroupTxOutputSchema from '../txs/update-transfer-group/update-transfer-group.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferGroupTxOutputSchema,\n '/txs/update-transfer-group/update-transfer-group.schema.output.json',\n ),\n '/txs/update-transfer-group/update-transfer-group.schema.output.json',\n);\nSchemas.UpdateTransferGroupTxOutput = UpdateTransferGroupTxOutputSchema;\nimport UpdateTransferGroupManyTxInputSchema from '../txs/update-transfer-group-many/update-transfer-group-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferGroupManyTxInputSchema,\n '/txs/update-transfer-group-many/update-transfer-group-many.schema.input.json',\n ),\n '/txs/update-transfer-group-many/update-transfer-group-many.schema.input.json',\n);\nSchemas.UpdateTransferGroupManyTxInput = UpdateTransferGroupManyTxInputSchema;\nimport UpdateTransferGroupManyTxOutputSchema from '../txs/update-transfer-group-many/update-transfer-group-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferGroupManyTxOutputSchema,\n '/txs/update-transfer-group-many/update-transfer-group-many.schema.output.json',\n ),\n '/txs/update-transfer-group-many/update-transfer-group-many.schema.output.json',\n);\nSchemas.UpdateTransferGroupManyTxOutput = UpdateTransferGroupManyTxOutputSchema;\nimport UpdateTransferManyTxInputSchema from '../txs/update-transfer-many/update-transfer-many.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferManyTxInputSchema,\n '/txs/update-transfer-many/update-transfer-many.schema.input.json',\n ),\n '/txs/update-transfer-many/update-transfer-many.schema.input.json',\n);\nSchemas.UpdateTransferManyTxInput = UpdateTransferManyTxInputSchema;\nimport UpdateTransferManyTxOutputSchema from '../txs/update-transfer-many/update-transfer-many.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateTransferManyTxOutputSchema,\n '/txs/update-transfer-many/update-transfer-many.schema.output.json',\n ),\n '/txs/update-transfer-many/update-transfer-many.schema.output.json',\n);\nSchemas.UpdateTransferManyTxOutput = UpdateTransferManyTxOutputSchema;\nimport UpdateWalletTxInputSchema from '../txs/update-wallet/update-wallet.schema.input.json';\najv.addSchema(\n fixSelfRefs(\n UpdateWalletTxInputSchema,\n '/txs/update-wallet/update-wallet.schema.input.json',\n ),\n '/txs/update-wallet/update-wallet.schema.input.json',\n);\nSchemas.UpdateWalletTxInput = UpdateWalletTxInputSchema;\nimport UpdateWalletTxOutputSchema from '../txs/update-wallet/update-wallet.schema.output.json';\najv.addSchema(\n fixSelfRefs(\n UpdateWalletTxOutputSchema,\n '/txs/update-wallet/update-wallet.schema.output.json',\n ),\n '/txs/update-wallet/update-wallet.schema.output.json',\n);\nSchemas.UpdateWalletTxOutput = UpdateWalletTxOutputSchema;\n/**\n * @internal\n */\nexport enum SchemaNames {\n JSONRPCRequest = 'JSONRPCRequest',\n JSONRPCResponse = 'JSONRPCResponse',\n ClientOptions = 'ClientOptions',\n Consts = 'Consts',\n TokenTableInput = 'TokenTableInput',\n TokenTable = 'TokenTable',\n TokenTableOptional = 'TokenTableOptional',\n TransferTableInput = 'TransferTableInput',\n TransferTable = 'TransferTable',\n TransferTableOptional = 'TransferTableOptional',\n TransferGroupTableInput = 'TransferGroupTableInput',\n TransferGroupTable = 'TransferGroupTable',\n TransferGroupTableOptional = 'TransferGroupTableOptional',\n TransferLogTableInput = 'TransferLogTableInput',\n TransferLogTable = 'TransferLogTable',\n TransferLogTableOptional = 'TransferLogTableOptional',\n WalletTableInput = 'WalletTableInput',\n WalletTable = 'WalletTable',\n WalletTableOptional = 'WalletTableOptional',\n WalletTokenSettingTableInput = 'WalletTokenSettingTableInput',\n WalletTokenSettingTable = 'WalletTokenSettingTable',\n WalletTokenSettingTableOptional = 'WalletTokenSettingTableOptional',\n WapiSettingTableInput = 'WapiSettingTableInput',\n WapiSettingTable = 'WapiSettingTable',\n WapiSettingTableOptional = 'WapiSettingTableOptional',\n AggregateTransfersFnInput = 'AggregateTransfersFnInput',\n AggregateTransfersFnOutput = 'AggregateTransfersFnOutput',\n CreateContractFnInput = 'CreateContractFnInput',\n CreateContractFnOutput = 'CreateContractFnOutput',\n CreateDepositFnInput = 'CreateDepositFnInput',\n CreateDepositFnOutput = 'CreateDepositFnOutput',\n CreateExchangeFnInput = 'CreateExchangeFnInput',\n CreateExchangeFnOutput = 'CreateExchangeFnOutput',\n CreateTokenFnInput = 'CreateTokenFnInput',\n CreateTokenFnOutput = 'CreateTokenFnOutput',\n CreateTransferFnInput = 'CreateTransferFnInput',\n CreateTransferFnOutput = 'CreateTransferFnOutput',\n CreateTransferGroupFnInput = 'CreateTransferGroupFnInput',\n CreateTransferGroupFnOutput = 'CreateTransferGroupFnOutput',\n CreateTransfersFnInput = 'CreateTransfersFnInput',\n CreateTransfersFnOutput = 'CreateTransfersFnOutput',\n CreateWalletFnInput = 'CreateWalletFnInput',\n CreateWalletFnOutput = 'CreateWalletFnOutput',\n CreateWithdrawalFnInput = 'CreateWithdrawalFnInput',\n CreateWithdrawalFnOutput = 'CreateWithdrawalFnOutput',\n FindBalancesFnInput = 'FindBalancesFnInput',\n FindBalancesFnOutput = 'FindBalancesFnOutput',\n FindTokensFnInput = 'FindTokensFnInput',\n FindTokensFnOutput = 'FindTokensFnOutput',\n FindTransferGroupsFnInput = 'FindTransferGroupsFnInput',\n FindTransferGroupsFnOutput = 'FindTransferGroupsFnOutput',\n FindTransfersFnInput = 'FindTransfersFnInput',\n FindTransfersFnOutput = 'FindTransfersFnOutput',\n FindWalletsFnInput = 'FindWalletsFnInput',\n FindWalletsFnOutput = 'FindWalletsFnOutput',\n FnConsts = 'FnConsts',\n GetBalanceFnInput = 'GetBalanceFnInput',\n GetBalanceFnOutput = 'GetBalanceFnOutput',\n GetBalanceHistoryFnInput = 'GetBalanceHistoryFnInput',\n GetBalanceHistoryFnOutput = 'GetBalanceHistoryFnOutput',\n GetFlagsFnInput = 'GetFlagsFnInput',\n GetFlagsFnOutput = 'GetFlagsFnOutput',\n GetStatisticsFnInput = 'GetStatisticsFnInput',\n GetStatisticsFnOutput = 'GetStatisticsFnOutput',\n GetTokenFnInput = 'GetTokenFnInput',\n GetTokenFnOutput = 'GetTokenFnOutput',\n GetTransferFnInput = 'GetTransferFnInput',\n GetTransferFnOutput = 'GetTransferFnOutput',\n GetTransferGroupFnInput = 'GetTransferGroupFnInput',\n GetTransferGroupFnOutput = 'GetTransferGroupFnOutput',\n GetWalletFnInput = 'GetWalletFnInput',\n GetWalletFnOutput = 'GetWalletFnOutput',\n ImportDataFnInput = 'ImportDataFnInput',\n ImportDataFnOptions = 'ImportDataFnOptions',\n ImportDataFnStreamChunk = 'ImportDataFnStreamChunk',\n ImportDataFnOutput = 'ImportDataFnOutput',\n ReverseTransferFnInput = 'ReverseTransferFnInput',\n ReverseTransferFnOutput = 'ReverseTransferFnOutput',\n ReverseTransferGroupFnInput = 'ReverseTransferGroupFnInput',\n ReverseTransferGroupFnOutput = 'ReverseTransferGroupFnOutput',\n ReverseTransfersFnInput = 'ReverseTransfersFnInput',\n ReverseTransfersFnOutput = 'ReverseTransfersFnOutput',\n SetFlagsFnInput = 'SetFlagsFnInput',\n SetFlagsFnOutput = 'SetFlagsFnOutput',\n UpdateTokenFnInput = 'UpdateTokenFnInput',\n UpdateTokenFnOutput = 'UpdateTokenFnOutput',\n UpdateTransferFnInput = 'UpdateTransferFnInput',\n UpdateTransferFnOutput = 'UpdateTransferFnOutput',\n UpdateTransferGroupFnInput = 'UpdateTransferGroupFnInput',\n UpdateTransferGroupFnOutput = 'UpdateTransferGroupFnOutput',\n UpdateTransferGroupsFnInput = 'UpdateTransferGroupsFnInput',\n UpdateTransferGroupsFnOutput = 'UpdateTransferGroupsFnOutput',\n UpdateTransfersFnInput = 'UpdateTransfersFnInput',\n UpdateTransfersFnOutput = 'UpdateTransfersFnOutput',\n UpdateWalletFnInput = 'UpdateWalletFnInput',\n UpdateWalletFnOutput = 'UpdateWalletFnOutput',\n AggregateTransferManyTxInput = 'AggregateTransferManyTxInput',\n AggregateTransferManyTxOutput = 'AggregateTransferManyTxOutput',\n CreateContractTxInput = 'CreateContractTxInput',\n CreateContractTxOutput = 'CreateContractTxOutput',\n CreateDepositTxInput = 'CreateDepositTxInput',\n CreateDepositTxOutput = 'CreateDepositTxOutput',\n CreateDistributionTxInput = 'CreateDistributionTxInput',\n CreateDistributionTxOutput = 'CreateDistributionTxOutput',\n CreateTokenTxInput = 'CreateTokenTxInput',\n CreateTokenTxOutput = 'CreateTokenTxOutput',\n CreateTransferTxInput = 'CreateTransferTxInput',\n CreateTransferTxOutput = 'CreateTransferTxOutput',\n CreateTransferGroupTxInput = 'CreateTransferGroupTxInput',\n CreateTransferGroupTxOutput = 'CreateTransferGroupTxOutput',\n CreateTransferManyTxInput = 'CreateTransferManyTxInput',\n CreateTransferManyTxOutput = 'CreateTransferManyTxOutput',\n CreateWalletTxInput = 'CreateWalletTxInput',\n CreateWalletTxOutput = 'CreateWalletTxOutput',\n CreateWithdrawalTxInput = 'CreateWithdrawalTxInput',\n CreateWithdrawalTxOutput = 'CreateWithdrawalTxOutput',\n FindBalanceManyTxInput = 'FindBalanceManyTxInput',\n FindBalanceManyTxOutput = 'FindBalanceManyTxOutput',\n FindTokenManyTxInput = 'FindTokenManyTxInput',\n FindTokenManyTxOutput = 'FindTokenManyTxOutput',\n FindTransferGroupManyTxInput = 'FindTransferGroupManyTxInput',\n FindTransferGroupManyTxOutput = 'FindTransferGroupManyTxOutput',\n FindTransferManyTxInput = 'FindTransferManyTxInput',\n FindTransferManyTxOutput = 'FindTransferManyTxOutput',\n FindWalletManyTxInput = 'FindWalletManyTxInput',\n FindWalletManyTxOutput = 'FindWalletManyTxOutput',\n FinishTransactionTxInput = 'FinishTransactionTxInput',\n FinishTransactionTxOutput = 'FinishTransactionTxOutput',\n GetBalanceTxInput = 'GetBalanceTxInput',\n GetBalanceTxOutput = 'GetBalanceTxOutput',\n GetBalanceHistoryTxInput = 'GetBalanceHistoryTxInput',\n GetBalanceHistoryTxOutput = 'GetBalanceHistoryTxOutput',\n GetFlagsTxInput = 'GetFlagsTxInput',\n GetFlagsTxOutput = 'GetFlagsTxOutput',\n GetStatisticsTxInput = 'GetStatisticsTxInput',\n GetStatisticsTxOutput = 'GetStatisticsTxOutput',\n GetTokenTxInput = 'GetTokenTxInput',\n GetTokenTxOutput = 'GetTokenTxOutput',\n GetTokenManyTxInput = 'GetTokenManyTxInput',\n GetTokenManyTxOutput = 'GetTokenManyTxOutput',\n GetTransferTxInput = 'GetTransferTxInput',\n GetTransferTxOutput = 'GetTransferTxOutput',\n GetTransferGroupTxInput = 'GetTransferGroupTxInput',\n GetTransferGroupTxOutput = 'GetTransferGroupTxOutput',\n GetWalletTxInput = 'GetWalletTxInput',\n GetWalletTxOutput = 'GetWalletTxOutput',\n GetWalletManyTxInput = 'GetWalletManyTxInput',\n GetWalletManyTxOutput = 'GetWalletManyTxOutput',\n ImportActionsTxInput = 'ImportActionsTxInput',\n ImportActionsTxOptions = 'ImportActionsTxOptions',\n ImportActionsTxStreamChunk = 'ImportActionsTxStreamChunk',\n ImportActionsTxOutput = 'ImportActionsTxOutput',\n QueryTxInput = 'QueryTxInput',\n QueryTxOutput = 'QueryTxOutput',\n QueryLogsTxInput = 'QueryLogsTxInput',\n QueryLogsTxOutput = 'QueryLogsTxOutput',\n ResetDatabaseTxInput = 'ResetDatabaseTxInput',\n ResetDatabaseTxOutput = 'ResetDatabaseTxOutput',\n ReverseTransferTxInput = 'ReverseTransferTxInput',\n ReverseTransferTxOutput = 'ReverseTransferTxOutput',\n ReverseTransferGroupTxInput = 'ReverseTransferGroupTxInput',\n ReverseTransferGroupTxOutput = 'ReverseTransferGroupTxOutput',\n ReverseTransferGroupManyTxInput = 'ReverseTransferGroupManyTxInput',\n ReverseTransferGroupManyTxOutput = 'ReverseTransferGroupManyTxOutput',\n ReverseTransferManyTxInput = 'ReverseTransferManyTxInput',\n ReverseTransferManyTxOutput = 'ReverseTransferManyTxOutput',\n SetFlagsTxInput = 'SetFlagsTxInput',\n SetFlagsTxOutput = 'SetFlagsTxOutput',\n StartTransactionTxInput = 'StartTransactionTxInput',\n StartTransactionTxOutput = 'StartTransactionTxOutput',\n TxConsts = 'TxConsts',\n UpdateTokenTxInput = 'UpdateTokenTxInput',\n UpdateTokenTxOutput = 'UpdateTokenTxOutput',\n UpdateTransferTxInput = 'UpdateTransferTxInput',\n UpdateTransferTxOutput = 'UpdateTransferTxOutput',\n UpdateTransferGroupTxInput = 'UpdateTransferGroupTxInput',\n UpdateTransferGroupTxOutput = 'UpdateTransferGroupTxOutput',\n UpdateTransferGroupManyTxInput = 'UpdateTransferGroupManyTxInput',\n UpdateTransferGroupManyTxOutput = 'UpdateTransferGroupManyTxOutput',\n UpdateTransferManyTxInput = 'UpdateTransferManyTxInput',\n UpdateTransferManyTxOutput = 'UpdateTransferManyTxOutput',\n UpdateWalletTxInput = 'UpdateWalletTxInput',\n UpdateWalletTxOutput = 'UpdateWalletTxOutput',\n}\n// SCHEMAS\n\nexport interface Schema {\n $schema: string;\n $id: string;\n description: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties?: Record<string, any>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n definitions?: Record<string, any>;\n $ref?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\nexport interface Validator {\n ajv: Ajv;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createValidator(json: any): ValidationFunction;\n\n getValidator(name: SchemaName): ValidationFunction;\n\n getSchema(name: SchemaName): Schema;\n\n Schemas: Record<SchemaName, Schema>;\n SchemaNames: typeof SchemaNames;\n}\n\n/**\n * Validator object to allow JSON Schema validation to be run by user\n */\nexport const Validator = {\n /**\n * The AJV instance in use by WAPI Client\n */\n ajv,\n /**\n * Create a ValidationFunction from the json Schema. Uses internal routing logic\n * @param json\n * @returns {ValidationFunction}\n */\n createValidator(json: AnySchema): ValidationFunction {\n const validate = ajv.compile(json);\n return wrapValidator(validate);\n },\n /**\n * Get a ValidationFunction by name\n * @param name\n * @returns {ValidationFunction | undefined}\n */\n getValidator(name: SchemaName): ValidationFunction {\n const validate = ajv.getSchema(name);\n return wrapValidator(validate);\n },\n /**\n * Get a Schema by name\n * @param name\n * @returns {any}\n */\n getSchema(name: SchemaName): Schema {\n return Schemas[name];\n },\n /**\n * Object containing references to all JSON Schemas in use by WAPI Client\n */\n Schemas: Schemas as Record<SchemaName, Schema>,\n /**\n * Enum of all Schema names\n */\n SchemaNames,\n};\nexport const createValidator = Validator.createValidator;\nexport const getValidator = Validator.getValidator;\n","/* Generic flags for input */\n\n/**\n * Generic flags for input\n */\nexport interface ITxGeneralOptionsWithoutTx {\n /**\n * User provided id added to logs for debugging\n */\n tracking_id?: string;\n}\n/* Generic flags for input */\n\n/**\n * Generic flags for input\n */\nexport interface ITxGeneralOptions {\n /**\n * Id of the transaction context to run the query in\n */\n transaction_id?: string;\n /**\n * User provided id added to logs for debugging\n */\n tracking_id?: string;\n}\n/* Metadata flags for input */\n\n/**\n * Metadata flags for input\n */\nexport interface ITxMetadataOptions {\n /**\n * Return the total rows count in metadata\n */\n return_metadata_total?: boolean;\n}\n/* Optional flags for input limiting */\n\n/**\n * Optional flags for input limiting\n */\nexport interface ITxLimitingOptions {\n /**\n * Number of records to return\n */\n limit?: number;\n /**\n * Number of records to omit from the beginning\n */\n offset?: number;\n}\n/* Optional flags for input ordering */\n\n/**\n * Optional flags for input ordering\n */\nexport interface ITxOrderingOptions {\n /**\n * Ordering options\n */\n order?: ITxOrderingInput[];\n}\n/* Optional flags to limit search result */\n\n/**\n * Optional flags to limit search result\n */\nexport interface ITxSelectOptions {\n /**\n * Select options\n */\n select?: string[];\n}\n/* Optional flag to remove field from select */\n\n/**\n * Optional flag to remove field from select\n */\nexport interface ITxDeselectOptions {\n /**\n * Deselect options\n */\n deselect?: string[];\n}\n/* Optional flags to aggregate data */\n\n/**\n * Optional flags to aggregate data\n */\nexport interface ITxAggregatingOptions {\n aggregator?: ITxAggregator;\n aggregators?: ITxAggregator[];\n groups?: ITxGroups;\n}\n/* Metadata about the search */\n\n/**\n * Metadata about the search\n */\nexport interface ITxFindMetadata {\n /**\n * Total number of records matching the query\n */\n total?: number;\n /**\n * Current query offset\n */\n offset: number;\n /**\n * Current query limit\n */\n limit: number;\n /**\n * Boolean showing if there would be more rows to return with a higher offset/limit\n */\n more_rows: boolean;\n /**\n * Ordering options\n */\n order?: ITxOrderingInput[];\n}\n/* Metadata about the aggregation */\n\n/**\n * Metadata about the aggregation\n */\nexport interface ITxAggregatingMetadata {\n aggregators: ITxAggregator[];\n groups?: ITxGroups;\n}\n/* Input for orderBy */\n\n/**\n * Input for orderBy\n */\nexport interface ITxOrderingInput {\n /**\n * Field to order by\n */\n field: string;\n /**\n * Direction to order\n */\n direction?: 'asc' | 'desc';\n /**\n * Should nulls be first or last\n */\n nulls?: 'first' | 'last';\n}\n/* i_tx_groups */\n\nexport type ITxGroup = ITxGroupPeriod | ITxGroupField | ITxGroupMetadataField;\nexport type ITxGroups = ITxGroup[];\n/* i_tx_group */\n\n/* i_tx_group_period */\n\nexport interface ITxGroupPeriod {\n type: 'period';\n field: ITxPeriod;\n alias?: string;\n}\n/* i_tx_group_field */\n\nexport interface ITxGroupField {\n type: 'field';\n field: string;\n alias?: string;\n}\n/* i_tx_group_metadata_field */\n\nexport interface ITxGroupMetadataField {\n type: 'metadata_field';\n field: string;\n alias?: string;\n}\n/* i_tx_period */\n\nexport type ITxPeriod = ITxPeriodSimple | ITxPeriodTimezone;\n/**\n * Time period rows should be grouped by\n */\nexport type ITxPeriodSimple =\n | 'year'\n | 'month'\n | 'week'\n | 'day'\n | 'hour'\n | 'minute';\n/* Time period rows should be grouped by */\n\n/**\n * Time period rows should be grouped by\n */\n/* i_tx_period_timezone */\n\nexport interface ITxPeriodTimezone {\n period: ITxPeriodSimple;\n timezone: string;\n}\n/* i_tx_time_filter */\n\nexport interface ITxTimeFilter {\n start_time?: string;\n end_time?: string;\n}\n/* Aggregator description */\n\n/**\n * Aggregator description\n */\nexport type ITxAggregator = ITxAggregatorSimple | ITxAggregatorComplex;\n/**\n * Function to use for grouping\n */\nexport type ITxAggregatorSimple =\n | 'count'\n | 'countDistinct'\n | 'sum'\n | 'average'\n | 'min'\n | 'max';\n/* Function to use for grouping */\n\n/**\n * Function to use for grouping\n */\n/* Function and field to group */\n\n/**\n * Function and field to group\n */\nexport interface ITxAggregatorComplex {\n function?: ITxAggregatorSimple;\n /**\n * Field to group by\n */\n field?: string;\n /**\n * Alias to group under\n */\n alias?: string;\n}\n/* i_tx_aggregate_results */\n\nexport type ITxAggregateResults = ITxAggregateResult[];\n/* i_tx_aggregate_result */\n\nexport interface ITxAggregateResult {\n [k: string]: string | number;\n}\n/* Rule for distribution grouping */\n\n/**\n * Rule for distribution grouping\n */\nexport type ITxDistributorLeftoverRule =\n | 'keep'\n | 'random'\n | 'largest'\n | 'target';\n/* Whether to replace or extend current metadata with new value */\n\n/**\n * Whether to replace or extend current metadata with new value\n */\nexport type ITxMetadataAction = 'replace' | 'extend';\n/* Whether to replace or extend current metadata with new value */\n\n/**\n * Whether to replace or extend current metadata with new value\n */\nexport type ITxMetadataActionForReverse =\n | 'replace'\n | 'replace_create_only'\n | 'replace_cancel_only'\n | 'extend'\n | 'extend_create_only'\n | 'extend_cancel_only';\n/* undefined */\n\nexport enum ITxPeriodSimpleEnum {\n year = 'year',\n month = 'month',\n week = 'week',\n day = 'day',\n hour = 'hour',\n minute = 'minute',\n}\n\nexport enum ITxAggregatorSimpleEnum {\n count = 'count',\n countDistinct = 'countDistinct',\n sum = 'sum',\n average = 'average',\n min = 'min',\n max = 'max',\n}\n\nexport enum ITxDistributorLeftoverRuleEnum {\n keep = 'keep',\n random = 'random',\n largest = 'largest',\n target = 'target',\n}\n\nexport enum ITxMetadataActionEnum {\n replace = 'replace',\n extend = 'extend',\n}\n\nexport enum ITxMetadataActionForReverseEnum {\n replace = 'replace',\n replace_create_only = 'replace_create_only',\n replace_cancel_only = 'replace_cancel_only',\n extend = 'extend',\n extend_create_only = 'extend_create_only',\n extend_cancel_only = 'extend_cancel_only',\n}\n","import { getValidator, SchemaNames } from '../lib/validator';\n// Consts\nexport * from './tx-consts.enums';\nimport TxConstsSchema from './tx-consts.schema.json';\nexport { TxConstsSchema };\n\n// aggregateTransferMany\nexport * from './aggregate-transfer-many/aggregate-transfer-many.enums';\n\nimport AggregateTransferManyTxInputSchema from './aggregate-transfer-many/aggregate-transfer-many.schema.input.json';\nimport AggregateTransferManyTxOutputSchema from './aggregate-transfer-many/aggregate-transfer-many.schema.output.json';\nexport {\n AggregateTransferManyTxInputSchema,\n AggregateTransferManyTxOutputSchema,\n};\n\nconst aggregateTransferManyValidator = getValidator(\n SchemaNames.AggregateTransferManyTxInput,\n);\n\n// createContract\nexport * from './create-contract/create-contract.enums';\n\nimport CreateContractTxInputSchema from './create-contract/create-contract.schema.input.json';\nimport CreateContractTxOutputSchema from './create-contract/create-contract.schema.output.json';\nexport { CreateContractTxInputSchema, CreateContractTxOutputSchema };\n\nconst createContractValidator = getValidator(SchemaNames.CreateContractTxInput);\n\n// createDeposit\nexport * from './create-deposit/create-deposit.enums';\n\nimport CreateDepositTxInputSchema from './create-deposit/create-deposit.schema.input.json';\nimport CreateDepositTxOutputSchema from './create-deposit/create-deposit.schema.output.json';\nexport { CreateDepositTxInputSchema, CreateDepositTxOutputSchema };\n\nconst createDepositValidator = getValidator(SchemaNames.CreateDepositTxInput);\n\n// createDistribution\nexport * from './create-distribution/create-distribution.enums';\n\nimport CreateDistributionTxInputSchema from './create-distribution/create-distribution.schema.input.json';\nimport CreateDistributionTxOutputSchema from './create-distribution/create-distribution.schema.output.json';\nexport { CreateDistributionTxInputSchema, CreateDistributionTxOutputSchema };\n\nconst createDistributionValidator = getValidator(\n SchemaNames.CreateDistributionTxInput,\n);\n\n// createToken\nexport * from './create-token/create-token.enums';\n\nimport CreateTokenTxInputSchema from './create-token/create-token.schema.input.json';\nimport CreateTokenTxOutputSchema from './create-token/create-token.schema.output.json';\nexport { CreateTokenTxInputSchema, CreateTokenTxOutputSchema };\n\nconst createTokenValidator = getValidator(SchemaNames.CreateTokenTxInput);\n\n// createTransfer\nexport * from './create-transfer/create-transfer.enums';\n\nimport CreateTransferTxInputSchema from './create-transfer/create-transfer.schema.input.json';\nimport CreateTransferTxOutputSchema from './create-transfer/create-transfer.schema.output.json';\nexport { CreateTransferTxInputSchema, CreateTransferTxOutputSchema };\n\nconst createTransferValidator = getValidator(SchemaNames.CreateTransferTxInput);\n\n// createTransferGroup\nexport * from './create-transfer-group/create-transfer-group.enums';\n\nimport CreateTransferGroupTxInputSchema from './create-transfer-group/create-transfer-group.schema.input.json';\nimport CreateTransferGroupTxOutputSchema from './create-transfer-group/create-transfer-group.schema.output.json';\nexport { CreateTransferGroupTxInputSchema, CreateTransferGroupTxOutputSchema };\n\nconst createTransferGroupValidator = getValidator(\n SchemaNames.CreateTransferGroupTxInput,\n);\n\n// createTransferMany\nexport * from './create-transfer-many/create-transfer-many.enums';\n\nimport CreateTransferManyTxInputSchema from './create-transfer-many/create-transfer-many.schema.input.json';\nimport CreateTransferManyTxOutputSchema from './create-transfer-many/create-transfer-many.schema.output.json';\nexport { CreateTransferManyTxInputSchema, CreateTransferManyTxOutputSchema };\n\nconst createTransferManyValidator = getValidator(\n SchemaNames.CreateTransferManyTxInput,\n);\n\n// createWallet\nexport * from './create-wallet/create-wallet.enums';\n\nimport CreateWalletTxInputSchema from './create-wallet/create-wallet.schema.input.json';\nimport CreateWalletTxOutputSchema from './create-wallet/create-wallet.schema.output.json';\nexport { CreateWalletTxInputSchema, CreateWalletTxOutputSchema };\n\nconst createWalletValidator = getValidator(SchemaNames.CreateWalletTxInput);\n\n// createWithdrawal\nexport * from './create-withdrawal/create-withdrawal.enums';\n\nimport CreateWithdrawalTxInputSchema from './create-withdrawal/create-withdrawal.schema.input.json';\nimport CreateWithdrawalTxOutputSchema from './create-withdrawal/create-withdrawal.schema.output.json';\nexport { CreateWithdrawalTxInputSchema, CreateWithdrawalTxOutputSchema };\n\nconst createWithdrawalValidator = getValidator(\n SchemaNames.CreateWithdrawalTxInput,\n);\n\n// findBalanceMany\nexport * from './find-balance-many/find-balance-many.enums';\n\nimport FindBalanceManyTxInputSchema from './find-balance-many/find-balance-many.schema.input.json';\nimport FindBalanceManyTxOutputSchema from './find-balance-many/find-balance-many.schema.output.json';\nexport { FindBalanceManyTxInputSchema, FindBalanceManyTxOutputSchema };\n\nconst findBalanceManyValidator = getValidator(\n SchemaNames.FindBalanceManyTxInput,\n);\n\n// findTokenMany\nexport * from './find-token-many/find-token-many.enums';\n\nimport FindTokenManyTxInputSchema from './find-token-many/find-token-many.schema.input.json';\nimport FindTokenManyTxOutputSchema from './find-token-many/find-token-many.schema.output.json';\nexport { FindTokenManyTxInputSchema, FindTokenManyTxOutputSchema };\n\nconst findTokenManyValidator = getValidator(SchemaNames.FindTokenManyTxInput);\n\n// findTransferGroupMany\nexport * from './find-transfer-group-many/find-transfer-group-many.enums';\n\nimport FindTransferGroupManyTxInputSchema from './find-transfer-group-many/find-transfer-group-many.schema.input.json';\nimport FindTransferGroupManyTxOutputSchema from './find-transfer-group-many/find-transfer-group-many.schema.output.json';\nexport {\n FindTransferGroupManyTxInputSchema,\n FindTransferGroupManyTxOutputSchema,\n};\n\nconst findTransferGroupManyValidator = getValidator(\n SchemaNames.FindTransferGroupManyTxInput,\n);\n\n// findTransferMany\nexport * from './find-transfer-many/find-transfer-many.enums';\n\nimport FindTransferManyTxInputSchema from './find-transfer-many/find-transfer-many.schema.input.json';\nimport FindTransferManyTxOutputSchema from './find-transfer-many/find-transfer-many.schema.output.json';\nexport { FindTransferManyTxInputSchema, FindTransferManyTxOutputSchema };\n\nconst findTransferManyValidator = getValidator(\n SchemaNames.FindTransferManyTxInput,\n);\n\n// findWalletMany\nexport * from './find-wallet-many/find-wallet-many.enums';\n\nimport FindWalletManyTxInputSchema from './find-wallet-many/find-wallet-many.schema.input.json';\nimport FindWalletManyTxOutputSchema from './find-wallet-many/find-wallet-many.schema.output.json';\nexport { FindWalletManyTxInputSchema, FindWalletManyTxOutputSchema };\n\nconst findWalletManyValidator = getValidator(SchemaNames.FindWalletManyTxInput);\n\n// finishTransaction\nexport * from './finish-transaction/finish-transaction.enums';\n\nimport FinishTransactionTxInputSchema from './finish-transaction/finish-transaction.schema.input.json';\nimport FinishTransactionTxOutputSchema from './finish-transaction/finish-transaction.schema.output.json';\nexport { FinishTransactionTxInputSchema, FinishTransactionTxOutputSchema };\n\nconst finishTransactionValidator = getValidator(\n SchemaNames.FinishTransactionTxInput,\n);\n\n// getBalance\nexport * from './get-balance/get-balance.enums';\n\nimport GetBalanceTxInputSchema from './get-balance/get-balance.schema.input.json';\nimport GetBalanceTxOutputSchema from './get-balance/get-balance.schema.output.json';\nexport { GetBalanceTxInputSchema, GetBalanceTxOutputSchema };\n\nconst getBalanceValidator = getValidator(SchemaNames.GetBalanceTxInput);\n\n// getBalanceHistory\nexport * from './get-balance-history/get-balance-history.enums';\n\nimport GetBalanceHistoryTxInputSchema from './get-balance-history/get-balance-history.schema.input.json';\nimport GetBalanceHistoryTxOutputSchema from './get-balance-history/get-balance-history.schema.output.json';\nexport { GetBalanceHistoryTxInputSchema, GetBalanceHistoryTxOutputSchema };\n\nconst getBalanceHistoryValidator = getValidator(\n SchemaNames.GetBalanceHistoryTxInput,\n);\n\n// getFlags\nexport * from './get-flags/get-flags.enums';\n\nimport GetFlagsTxInputSchema from './get-flags/get-flags.schema.input.json';\nimport GetFlagsTxOutputSchema from './get-flags/get-flags.schema.output.json';\nexport { GetFlagsTxInputSchema, GetFlagsTxOutputSchema };\n\nconst getFlagsValidator = getValidator(SchemaNames.GetFlagsTxInput);\n\n// getStatistics\nexport * from './get-statistics/get-statistics.enums';\n\nimport GetStatisticsTxInputSchema from './get-statistics/get-statistics.schema.input.json';\nimport GetStatisticsTxOutputSchema from './get-statistics/get-statistics.schema.output.json';\nexport { GetStatisticsTxInputSchema, GetStatisticsTxOutputSchema };\n\nconst getStatisticsValidator = getValidator(SchemaNames.GetStatisticsTxInput);\n\n// getToken\nexport * from './get-token/get-token.enums';\n\nimport GetTokenTxInputSchema from './get-token/get-token.schema.input.json';\nimport GetTokenTxOutputSchema from './get-token/get-token.schema.output.json';\nexport { GetTokenTxInputSchema, GetTokenTxOutputSchema };\n\nconst getTokenValidator = getValidator(SchemaNames.GetTokenTxInput);\n\n// getTokenMany\nexport * from './get-token-many/get-token-many.enums';\n\nimport GetTokenManyTxInputSchema from './get-token-many/get-token-many.schema.input.json';\nimport GetTokenManyTxOutputSchema from './get-token-many/get-token-many.schema.output.json';\nexport { GetTokenManyTxInputSchema, GetTokenManyTxOutputSchema };\n\nconst getTokenManyValidator = getValidator(SchemaNames.GetTokenManyTxInput);\n\n// getTransfer\nexport * from './get-transfer/get-transfer.enums';\n\nimport GetTransferTxInputSchema from './get-transfer/get-transfer.schema.input.json';\nimport GetTransferTxOutputSchema from './get-transfer/get-transfer.schema.output.json';\nexport { GetTransferTxInputSchema, GetTransferTxOutputSchema };\n\nconst getTransferValidator = getValidator(SchemaNames.GetTransferTxInput);\n\n// getTransferGroup\nexport * from './get-transfer-group/get-transfer-group.enums';\n\nimport GetTransferGroupTxInputSchema from './get-transfer-group/get-transfer-group.schema.input.json';\nimport GetTransferGroupTxOutputSchema from './get-transfer-group/get-transfer-group.schema.output.json';\nexport { GetTransferGroupTxInputSchema, GetTransferGroupTxOutputSchema };\n\nconst getTransferGroupValidator = getValidator(\n SchemaNames.GetTransferGroupTxInput,\n);\n\n// getWallet\nexport * from './get-wallet/get-wallet.enums';\n\nimport GetWalletTxInputSchema from './get-wallet/get-wallet.schema.input.json';\nimport GetWalletTxOutputSchema from './get-wallet/get-wallet.schema.output.json';\nexport { GetWalletTxInputSchema, GetWalletTxOutputSchema };\n\nconst getWalletValidator = getValidator(SchemaNames.GetWalletTxInput);\n\n// getWalletMany\nexport * from './get-wallet-many/get-wallet-many.enums';\n\nimport GetWalletManyTxInputSchema from './get-wallet-many/get-wallet-many.schema.input.json';\nimport GetWalletManyTxOutputSchema from './get-wallet-many/get-wallet-many.schema.output.json';\nexport { GetWalletManyTxInputSchema, GetWalletManyTxOutputSchema };\n\nconst getWalletManyValidator = getValidator(SchemaNames.GetWalletManyTxInput);\n\n// importActions\nexport * from './import-actions/import-actions.enums';\n\nimport ImportActionsTxInputSchema from './import-actions/import-actions.schema.input.json';\nimport ImportActionsTxOutputSchema from './import-actions/import-actions.schema.output.json';\nexport { ImportActionsTxInputSchema, ImportActionsTxOutputSchema };\n\nconst importActionsValidator = getValidator(SchemaNames.ImportActionsTxInput);\n\n// query\nexport * from './query/query.enums';\n\nimport QueryTxInputSchema from './query/query.schema.input.json';\nimport QueryTxOutputSchema from './query/query.schema.output.json';\nexport { QueryTxInputSchema, QueryTxOutputSchema };\n\nconst queryValidator = getValidator(SchemaNames.QueryTxInput);\n\n// queryLogs\nexport * from './query-logs/query-logs.enums';\n\nimport QueryLogsTxInputSchema from './query-logs/query-logs.schema.input.json';\nimport QueryLogsTxOutputSchema from './query-logs/query-logs.schema.output.json';\nexport { QueryLogsTxInputSchema, QueryLogsTxOutputSchema };\n\nconst queryLogsValidator = getValidator(SchemaNames.QueryLogsTxInput);\n\n// resetDatabase\nexport * from './reset-database/reset-database.enums';\n\nimport ResetDatabaseTxInputSchema from './reset-database/reset-database.schema.input.json';\nimport ResetDatabaseTxOutputSchema from './reset-database/reset-database.schema.output.json';\nexport { ResetDatabaseTxInputSchema, ResetDatabaseTxOutputSchema };\n\nconst resetDatabaseValidator = getValidator(SchemaNames.ResetDatabaseTxInput);\n\n// reverseTransfer\nexport * from './reverse-transfer/reverse-transfer.enums';\n\nimport ReverseTransferTxInputSchema from './reverse-transfer/reverse-transfer.schema.input.json';\nimport ReverseTransferTxOutputSchema from './reverse-transfer/reverse-transfer.schema.output.json';\nexport { ReverseTransferTxInputSchema, ReverseTransferTxOutputSchema };\n\nconst reverseTransferValidator = getValidator(\n SchemaNames.ReverseTransferTxInput,\n);\n\n// reverseTransferGroup\nexport * from './reverse-transfer-group/reverse-transfer-group.enums';\n\nimport ReverseTransferGroupTxInputSchema from './reverse-transfer-group/reverse-transfer-group.schema.input.json';\nimport ReverseTransferGroupTxOutputSchema from './reverse-transfer-group/reverse-transfer-group.schema.output.json';\nexport {\n ReverseTransferGroupTxInputSchema,\n ReverseTransferGroupTxOutputSchema,\n};\n\nconst reverseTransferGroupValidator = getValidator(\n SchemaNames.ReverseTransferGroupTxInput,\n);\n\n// reverseTransferGroupMany\nexport * from './reverse-transfer-group-many/reverse-transfer-group-many.enums';\n\nimport ReverseTransferGroupManyTxInputSchema from './reverse-transfer-group-many/reverse-transfer-group-many.schema.input.json';\nimport ReverseTransferGroupManyTxOutputSchema from './reverse-transfer-group-many/reverse-transfer-group-many.schema.output.json';\nexport {\n ReverseTransferGroupManyTxInputSchema,\n ReverseTransferGroupManyTxOutputSchema,\n};\n\nconst reverseTransferGroupManyValidator = getValidator(\n SchemaNames.ReverseTransferGroupManyTxInput,\n);\n\n// reverseTransferMany\nexport * from './reverse-transfer-many/reverse-transfer-many.enums';\n\nimport ReverseTransferManyTxInputSchema from './reverse-transfer-many/reverse-transfer-many.schema.input.json';\nimport ReverseTransferManyTxOutputSchema from './reverse-transfer-many/reverse-transfer-many.schema.output.json';\nexport { ReverseTransferManyTxInputSchema, ReverseTransferManyTxOutputSchema };\n\nconst reverseTransferManyValidator = getValidator(\n SchemaNames.ReverseTransferManyTxInput,\n);\n\n// setFlags\nexport * from './set-flags/set-flags.enums';\n\nimport SetFlagsTxInputSchema from './set-flags/set-flags.schema.input.json';\nimport SetFlagsTxOutputSchema from './set-flags/set-flags.schema.output.json';\nexport { SetFlagsTxInputSchema, SetFlagsTxOutputSchema };\n\nconst setFlagsValidator = getValidator(SchemaNames.SetFlagsTxInput);\n\n// startTransaction\nexport * from './start-transaction/start-transaction.enums';\n\nimport StartTransactionTxInputSchema from './start-transaction/start-transaction.schema.input.json';\nimport StartTransactionTxOutputSchema from './start-transaction/start-transaction.schema.output.json';\nexport { StartTransactionTxInputSchema, StartTransactionTxOutputSchema };\n\nconst startTransactionValidator = getValidator(\n SchemaNames.StartTransactionTxInput,\n);\n\n// updateToken\nexport * from './update-token/update-token.enums';\n\nimport UpdateTokenTxInputSchema from './update-token/update-token.schema.input.json';\nimport UpdateTokenTxOutputSchema from './update-token/update-token.schema.output.json';\nexport { UpdateTokenTxInputSchema, UpdateTokenTxOutputSchema };\n\nconst updateTokenValidator = getValidator(SchemaNames.UpdateTokenTxInput);\n\n// updateTransfer\nexport * from './update-transfer/update-transfer.enums';\n\nimport UpdateTransferTxInputSchema from './update-transfer/update-transfer.schema.input.json';\nimport UpdateTransferTxOutputSchema from './update-transfer/update-transfer.schema.output.json';\nexport { UpdateTransferTxInputSchema, UpdateTransferTxOutputSchema };\n\nconst updateTransferValidator = getValidator(SchemaNames.UpdateTransferTxInput);\n\n// updateTransferGroup\nexport * from './update-transfer-group/update-transfer-group.enums';\n\nimport UpdateTransferGroupTxInputSchema from './update-transfer-group/update-transfer-group.schema.input.json';\nimport UpdateTransferGroupTxOutputSchema from './update-transfer-group/update-transfer-group.schema.output.json';\nexport { UpdateTransferGroupTxInputSchema, UpdateTransferGroupTxOutputSchema };\n\nconst updateTransferGroupValidator = getValidator(\n SchemaNames.UpdateTransferGroupTxInput,\n);\n\n// updateTransferGroupMany\nexport * from './update-transfer-group-many/update-transfer-group-many.enums';\n\nimport UpdateTransferGroupManyTxInputSchema from './update-transfer-group-many/update-transfer-group-many.schema.input.json';\nimport UpdateTransferGroupManyTxOutputSchema from './update-transfer-group-many/update-transfer-group-many.schema.output.json';\nexport {\n UpdateTransferGroupManyTxInputSchema,\n UpdateTransferGroupManyTxOutputSchema,\n};\n\nconst updateTransferGroupManyValidator = getValidator(\n SchemaNames.UpdateTransferGroupManyTxInput,\n);\n\n// updateTransferMany\nexport * from './update-transfer-many/update-transfer-many.enums';\n\nimport UpdateTransferManyTxInputSchema from './update-transfer-many/update-transfer-many.schema.input.json';\nimport UpdateTransferManyTxOutputSchema from './update-transfer-many/update-transfer-many.schema.output.json';\nexport { UpdateTransferManyTxInputSchema, UpdateTransferManyTxOutputSchema };\n\nconst updateTransferManyValidator = getValidator(\n SchemaNames.UpdateTransferManyTxInput,\n);\n\n// updateWallet\nexport * from './update-wallet/update-wallet.enums';\n\nimport UpdateWalletTxInputSchema from './update-wallet/update-wallet.schema.input.json';\nimport UpdateWalletTxOutputSchema from './update-wallet/update-wallet.schema.output.json';\nexport { UpdateWalletTxInputSchema, UpdateWalletTxOutputSchema };\n\nconst updateWalletValidator = getValidator(SchemaNames.UpdateWalletTxInput);\n\nexport const APIValidators = {\n aggregateTransferMany: aggregateTransferManyValidator,\n createContract: createContractValidator,\n createDeposit: createDepositValidator,\n createDistribution: createDistributionValidator,\n createToken: createTokenValidator,\n createTransfer: createTransferValidator,\n createTransferGroup: createTransferGroupValidator,\n createTransferMany: createTransferManyValidator,\n createWallet: createWalletValidator,\n createWithdrawal: createWithdrawalValidator,\n findBalanceMany: findBalanceManyValidator,\n findTokenMany: findTokenManyValidator,\n findTransferGroupMany: findTransferGroupManyValidator,\n findTransferMany: findTransferManyValidator,\n findWalletMany: findWalletManyValidator,\n finishTransaction: finishTransactionValidator,\n getBalance: getBalanceValidator,\n getBalanceHistory: getBalanceHistoryValidator,\n getFlags: getFlagsValidator,\n getStatistics: getStatisticsValidator,\n getToken: getTokenValidator,\n getTokenMany: getTokenManyValidator,\n getTransfer: getTransferValidator,\n getTransferGroup: getTransferGroupValidator,\n getWallet: getWalletValidator,\n getWalletMany: getWalletManyValidator,\n importActions: importActionsValidator,\n query: queryValidator,\n queryLogs: queryLogsValidator,\n resetDatabase: resetDatabaseValidator,\n reverseTransfer: reverseTransferValidator,\n reverseTransferGroup: reverseTransferGroupValidator,\n reverseTransferGroupMany: reverseTransferGroupManyValidator,\n reverseTransferMany: reverseTransferManyValidator,\n setFlags: setFlagsValidator,\n startTransaction: startTransactionValidator,\n updateToken: updateTokenValidator,\n updateTransfer: updateTransferValidator,\n updateTransferGroup: updateTransferGroupValidator,\n updateTransferGroupMany: updateTransferGroupManyValidator,\n updateTransferMany: updateTransferManyValidator,\n updateWallet: updateWalletValidator,\n};\nexport enum APIFunctions {\n aggregateTransferMany = 'aggregateTransferMany',\n createContract = 'createContract',\n createDeposit = 'createDeposit',\n createDistribution = 'createDistribution',\n createToken = 'createToken',\n createTransfer = 'createTransfer',\n createTransferGroup = 'createTransferGroup',\n createTransferMany = 'createTransferMany',\n createWallet = 'createWallet',\n createWithdrawal = 'createWithdrawal',\n findBalanceMany = 'findBalanceMany',\n findTokenMany = 'findTokenMany',\n findTransferGroupMany = 'findTransferGroupMany',\n findTransferMany = 'findTransferMany',\n findWalletMany = 'findWalletMany',\n finishTransaction = 'finishTransaction',\n getBalance = 'getBalance',\n getBalanceHistory = 'getBalanceHistory',\n getFlags = 'getFlags',\n getStatistics = 'getStatistics',\n getToken = 'getToken',\n getTokenMany = 'getTokenMany',\n getTransfer = 'getTransfer',\n getTransferGroup = 'getTransferGroup',\n getWallet = 'getWallet',\n getWalletMany = 'getWalletMany',\n importActions = 'importActions',\n query = 'query',\n queryLogs = 'queryLogs',\n resetDatabase = 'resetDatabase',\n reverseTransfer = 'reverseTransfer',\n reverseTransferGroup = 'reverseTransferGroup',\n reverseTransferGroupMany = 'reverseTransferGroupMany',\n reverseTransferMany = 'reverseTransferMany',\n setFlags = 'setFlags',\n startTransaction = 'startTransaction',\n updateToken = 'updateToken',\n updateTransfer = 'updateTransfer',\n updateTransferGroup = 'updateTransferGroup',\n updateTransferGroupMany = 'updateTransferGroupMany',\n updateTransferMany = 'updateTransferMany',\n updateWallet = 'updateWallet',\n}\n","import { getValidator, SchemaNames } from '../../lib/validator';\n// GUARDS\n/*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\nconst inputValidator = getValidator(SchemaNames.ImportActionsTxInput);\nimport { ImportActionsTxInput } from './import-actions.enums';\nexport function isImportActionsTxInput(\n input: unknown,\n): input is ImportActionsTxInput {\n const { error } = inputValidator(input);\n return error === undefined;\n}\nconst outputValidator = getValidator(SchemaNames.ImportActionsTxOutput);\nimport { ImportActionsTxOutput } from './import-actions.enums';\nexport function isImportActionsTxOutput(\n input: unknown,\n): input is ImportActionsTxOutput {\n const { error } = outputValidator(input);\n return error === undefined;\n}\nconst chunkValidator = getValidator(SchemaNames.ImportActionsTxStreamChunk);\nimport { ImportActionsTxStreamChunk } from './import-actions.enums';\nexport function isImportActionsTxStreamChunk(\n input: unknown,\n): input is ImportActionsTxStreamChunk {\n const { error } = chunkValidator(input);\n return error === undefined;\n}\nconst optionsValidator = getValidator(SchemaNames.ImportActionsTxOptions);\nimport { ImportActionsTxOptions } from './import-actions.enums';\nexport function isImportActionsTxOptions(\n input: unknown,\n): input is ImportActionsTxOptions {\n const { error } = optionsValidator(input);\n return error === undefined;\n}\n// GUARDS\n","import { debugLog } from '../lib/debug';\nimport {\n ConnectionError,\n ERROR_MESSAGES,\n InputError,\n ValidationError,\n} from '../lib/errors';\nimport { WebSocket } from '../lib/isomorphic/node/ws';\nimport { StreamPromise } from '../lib/stream-promise';\nimport { StreamPromiseInput } from '../lib/stream-promise-input';\nimport {\n ReadStream,\n ReadWriteStream,\n TransformStream,\n} from '../lib/isomorphic/node/streams';\nimport { getRandomHex } from '../lib/utils';\nimport {\n JSONRPC,\n JSONRPCError,\n JSONRPCRequest,\n JSONRPCResponse,\n} from './jsonrpc/jsonrpc.enums';\n// TXSIMPORT\n/*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\nimport {\n APIFunctions,\n APIValidators,\n AggregateTransferManyTxInput,\n AggregateTransferManyTxOutput,\n CreateContractTxInput,\n CreateContractTxOutput,\n CreateDepositTxInput,\n CreateDepositTxOutput,\n CreateDistributionTxInput,\n CreateDistributionTxOutput,\n CreateTokenTxInput,\n CreateTokenTxOutput,\n CreateTransferTxInput,\n CreateTransferTxOutput,\n CreateTransferGroupTxInput,\n CreateTransferGroupTxOutput,\n CreateTransferManyTxInput,\n CreateTransferManyTxOutput,\n CreateWalletTxInput,\n CreateWalletTxOutput,\n CreateWithdrawalTxInput,\n CreateWithdrawalTxOutput,\n FindBalanceManyTxInput,\n FindBalanceManyTxOutput,\n FindTokenManyTxInput,\n FindTokenManyTxOutput,\n FindTransferGroupManyTxInput,\n FindTransferGroupManyTxOutput,\n FindTransferManyTxInput,\n FindTransferManyTxOutput,\n FindWalletManyTxInput,\n FindWalletManyTxOutput,\n FinishTransactionTxInput,\n FinishTransactionTxOutput,\n GetBalanceTxInput,\n GetBalanceTxOutput,\n GetBalanceHistoryTxInput,\n GetBalanceHistoryTxOutput,\n GetFlagsTxInput,\n GetFlagsTxOutput,\n GetStatisticsTxInput,\n GetStatisticsTxOutput,\n GetTokenTxInput,\n GetTokenTxOutput,\n GetTokenManyTxInput,\n GetTokenManyTxOutput,\n GetTransferTxInput,\n GetTransferTxOutput,\n GetTransferGroupTxInput,\n GetTransferGroupTxOutput,\n GetWalletTxInput,\n GetWalletTxOutput,\n GetWalletManyTxInput,\n GetWalletManyTxOutput,\n ImportActionsTxInput,\n ImportActionsTxOutput,\n ImportActionsTxOptions,\n QueryTxInput,\n QueryTxOutput,\n QueryLogsTxInput,\n QueryLogsTxOutput,\n ResetDatabaseTxInput,\n ResetDatabaseTxOutput,\n ReverseTransferTxInput,\n ReverseTransferTxOutput,\n ReverseTransferGroupTxInput,\n ReverseTransferGroupTxOutput,\n ReverseTransferGroupManyTxInput,\n ReverseTransferGroupManyTxOutput,\n ReverseTransferManyTxInput,\n ReverseTransferManyTxOutput,\n SetFlagsTxInput,\n SetFlagsTxOutput,\n StartTransactionTxInput,\n StartTransactionTxOutput,\n UpdateTokenTxInput,\n UpdateTokenTxOutput,\n UpdateTransferTxInput,\n UpdateTransferTxOutput,\n UpdateTransferGroupTxInput,\n UpdateTransferGroupTxOutput,\n UpdateTransferGroupManyTxInput,\n UpdateTransferGroupManyTxOutput,\n UpdateTransferManyTxInput,\n UpdateTransferManyTxOutput,\n UpdateWalletTxInput,\n UpdateWalletTxOutput,\n} from '../txs';\nimport {\n isImportActionsTxOptions,\n isImportActionsTxInput,\n} from '../txs/import-actions/import-actions.guards';\n// TXSIMPORT\n\nexport interface ClientHooks {\n connected?: (socId: undefined | string) => void;\n disconnected?: () => void;\n reconnect?: () => void | boolean;\n preflight?: (msg: JSONRPCRequest) => void | boolean;\n message?: (msg: JSONRPCResponse) => void;\n}\n\nexport type ISocketId = string | undefined;\n\nexport class BaseClient {\n public _connection: WebSocket; // Currently only WebSocket\n public $connect: Promise<ISocketId>;\n public isConnected = false;\n public socId: undefined | string;\n public hooks: ClientHooks = new Proxy<ClientHooks>(\n {},\n {\n set(obj: ClientHooks, prop: keyof ClientHooks, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Hooks can only be functions');\n }\n obj[prop] = value;\n return true;\n },\n },\n );\n private _requests: Map<\n string | number,\n | {\n stream: ReadStream;\n start: number;\n }\n | {\n stream: ReadStream;\n start: number;\n handle?: (result: unknown) => void;\n error: (err: JSONRPCError) => void;\n pause: () => void;\n resume: () => void;\n }\n > = new Map();\n private _error: false | Error = false;\n protected _sending: Set<string | number> = new Set();\n\n constructor(connection: WebSocket, $connect: Promise<ISocketId>) {\n this._connection = connection;\n this.$connect = $connect;\n }\n\n protected _setConnected(value: boolean): void {\n this.isConnected = value;\n if (this.isConnected && this._error !== false) {\n this._error = false;\n }\n if (this.isConnected && this.hooks.connected) {\n this.hooks.connected(this.socId);\n }\n if (!this.isConnected && this.hooks.disconnected) {\n this.hooks.disconnected();\n }\n }\n\n protected _setErrored(err: Error): void {\n this._error = err;\n if (this.isConnected) {\n this._setConnected(false);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected _send(input: JSONRPCRequest | JSONRPCResponse): void {\n throw new Error('This method must be implemented by child class');\n }\n\n protected _reconnect(): void {\n throw new Error('This method must be implemented by child class');\n }\n\n async close(): Promise<void> {\n throw new Error('This method must be implemented by child class');\n }\n\n // Will fire this in case we lose connection\n // This is so we can terminate ongoing requests\n protected _connectionLost(): void {\n this._requests.forEach((responseObject, key) => {\n if ('stream' in responseObject) {\n responseObject.stream.destroy(\n new ConnectionError({\n message: 'connection lost',\n }),\n );\n }\n this._requests.delete(key);\n });\n this.socId = undefined;\n }\n\n protected _handleMessage(incoming: JSONRPCResponse | JSONRPCRequest): void {\n if (this.hooks.message) {\n this.hooks.message(incoming);\n }\n if ('method' in incoming) {\n const message = incoming as JSONRPCRequest;\n if (message.method === JSONRPC.ping) {\n this._send({\n jsonrpc: JSONRPC.version,\n result: JSONRPC.pong,\n id: message.id,\n });\n return;\n }\n debugLog('Unexpected JSONRPCRequest', incoming);\n return;\n }\n const message = incoming as JSONRPCResponse;\n if (this.hooks.message) {\n this.hooks.message(message);\n }\n if (message.id === null) {\n debugLog('Unexpected JSONRPCResponse', incoming);\n return;\n }\n if (message.result === JSONRPC.acknowledgement) {\n this._sending.delete(message.id);\n return;\n }\n const requestInfo = this._requests.get(message.id);\n if (!requestInfo) {\n debugLog('No Request found for incoming', incoming);\n return;\n }\n if ('handle' in requestInfo) {\n requestInfo.handle(message);\n delete requestInfo.handle;\n return;\n }\n // Kill input stream handling if needed\n if (message.error && 'error' in requestInfo) {\n requestInfo.error(message.error);\n }\n if (\n message.result?.type === JSONRPC.streamPause &&\n 'pause' in requestInfo\n ) {\n requestInfo.pause();\n return;\n }\n if (\n message.result?.type === JSONRPC.streamResume &&\n 'resume' in requestInfo\n ) {\n requestInfo.resume();\n return;\n }\n const { stream, start } = requestInfo;\n if (message.result?.type === JSONRPC.streamChunk) {\n stream.push(message.result);\n return;\n }\n stream.push(message);\n // eslint-disable-next-line no-null/no-null\n stream.push(null);\n this._requests.delete(message.id);\n this._send({\n jsonrpc: JSONRPC.version,\n method: JSONRPC.acknowledgement,\n params: Date.now() - start,\n id: message.id,\n });\n }\n\n private _sendTransaction<Input, Output>(\n name: APIFunctions,\n input: Input,\n ): StreamPromise<Output> {\n // This will throw if invalid\n const { isValid, inputCopy, error } = APIValidators[name](input);\n if (!isValid) {\n throw error;\n }\n const jsonRpcMessage: JSONRPCRequest = {\n jsonrpc: JSONRPC.version,\n method: name,\n params: inputCopy,\n id: getRandomHex(),\n };\n if (this.hooks.preflight && !this.hooks.preflight(jsonRpcMessage)) {\n // If this.hooks.preflight returns false then we dont send\n return new StreamPromise<Output>();\n }\n return new StreamPromise(async (stream: ReadStream) => {\n if (this._error) {\n this._reconnect();\n }\n if (!this.isConnected) {\n await this.$connect;\n }\n\n this._requests.set(jsonRpcMessage.id, {\n stream,\n start: Date.now(),\n });\n this._sending.add(jsonRpcMessage.id);\n this._send(jsonRpcMessage);\n });\n }\n\n private _streamTransaction<\n InputOptions,\n InputChunk,\n Output,\n PreTransformChunkType = InputChunk\n >(\n name: APIFunctions,\n isInputChunk: (data: unknown) => data is InputChunk,\n options?: InputOptions,\n transform?: TransformStream<PreTransformChunkType, InputChunk>,\n ): StreamPromiseInput<Output, PreTransformChunkType> {\n const start = Date.now();\n const streamId = getRandomHex();\n let _error: Error | JSONRPCError;\n\n const sendToStream = ({\n method,\n params,\n }: {\n method: 'streamData' | 'streamError' | 'streamEnd';\n params: { data?: InputChunk; error?: Error; encoding?: string };\n }) => {\n if (_error) {\n return;\n }\n const streamMessage: JSONRPCRequest = {\n jsonrpc: JSONRPC.version,\n method,\n params: {\n streamId,\n ...params,\n },\n id: getRandomHex(),\n };\n this._sending.add(streamMessage.id);\n this._send(streamMessage);\n };\n\n const sendErrorToStream = (stream: ReadStream, error: Error) => {\n if (_error) {\n return;\n }\n sendToStream({\n method: 'streamError',\n params: {\n error,\n },\n });\n _error = error;\n stream.push({\n error,\n });\n };\n\n const inputStream = new ReadWriteStream();\n const finalInputStream = transform\n ? inputStream.pipe(transform)\n : inputStream;\n\n const streamStartMessage: JSONRPCRequest = {\n jsonrpc: JSONRPC.version,\n method: 'streamStart',\n params: {\n method: name,\n options,\n },\n id: streamId,\n };\n if (this.hooks.preflight && !this.hooks.preflight(streamStartMessage)) {\n // If this.hooks.preflight returns false then we dont send\n return new StreamPromiseInput<Output, PreTransformChunkType>();\n }\n\n return new StreamPromiseInput(async (stream: ReadStream) => {\n if (this._error) {\n this._reconnect();\n }\n if (!this.isConnected) {\n await this.$connect;\n }\n\n let timeout = setTimeout(() => {\n stream.push({\n error: new InputError({\n message: ERROR_MESSAGES.INPUT_STREAM_TIMEOUT,\n }),\n });\n }, 30000);\n // Open response\n this._requests.set(streamStartMessage.id, {\n stream,\n start,\n error(error: JSONRPCError) {\n _error = error;\n debugLog('stream:error()>', error);\n },\n pause() {\n inputStream.pause();\n },\n resume() {\n inputStream.resume();\n },\n handle(message: JSONRPCResponse) {\n if (message.error) {\n stream.push(message);\n return;\n }\n finalInputStream\n .on('data', (chunk: InputChunk) => {\n if (_error) {\n return;\n }\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n if (!isInputChunk(chunk)) {\n sendErrorToStream(\n stream,\n new ValidationError({\n message: ERROR_MESSAGES.INPUT_INVALID,\n data: chunk,\n }),\n );\n return;\n }\n sendToStream({\n method: 'streamData',\n params: {\n data: chunk,\n },\n });\n })\n .on('error', (error: Error) => {\n if (_error) {\n return;\n }\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n sendToStream({\n method: 'streamError',\n params: {\n error,\n },\n });\n stream.push({\n error: new InputError({\n message: ERROR_MESSAGES.INPUT_STREAM_ERROR,\n data: error,\n }),\n });\n })\n .on('end', () => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n sendToStream({\n method: 'streamEnd',\n params: {},\n });\n });\n },\n });\n this._sending.add(streamStartMessage.id);\n this._send(streamStartMessage);\n }, inputStream);\n }\n\n // TXSDEFS\n /*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\n /**\n *\n * @param {AggregateTransferManyTxInput} input\n * @returns {StreamPromise<AggregateTransferManyTxOutput>}\n *\n */\n aggregateTransferMany(\n input: AggregateTransferManyTxInput,\n ): StreamPromise<AggregateTransferManyTxOutput> {\n return this._sendTransaction<\n AggregateTransferManyTxInput,\n AggregateTransferManyTxOutput\n >(APIFunctions.aggregateTransferMany, input);\n }\n\n /**\n *\n * @param {CreateContractTxInput} input\n * @returns {StreamPromise<CreateContractTxOutput>}\n *\n */\n createContract(\n input: CreateContractTxInput,\n ): StreamPromise<CreateContractTxOutput> {\n return this._sendTransaction<CreateContractTxInput, CreateContractTxOutput>(\n APIFunctions.createContract,\n input,\n );\n }\n\n /**\n *\n * @param {CreateDepositTxInput} input\n * @returns {StreamPromise<CreateDepositTxOutput>}\n *\n */\n createDeposit(\n input: CreateDepositTxInput,\n ): StreamPromise<CreateDepositTxOutput> {\n return this._sendTransaction<CreateDepositTxInput, CreateDepositTxOutput>(\n APIFunctions.createDeposit,\n input,\n );\n }\n\n /**\n *\n * @param {CreateDistributionTxInput} input\n * @returns {StreamPromise<CreateDistributionTxOutput>}\n *\n */\n createDistribution(\n input: CreateDistributionTxInput,\n ): StreamPromise<CreateDistributionTxOutput> {\n return this._sendTransaction<\n CreateDistributionTxInput,\n CreateDistributionTxOutput\n >(APIFunctions.createDistribution, input);\n }\n\n /**\n *\n * @param {CreateTokenTxInput} input\n * @returns {StreamPromise<CreateTokenTxOutput>}\n *\n */\n createToken(input: CreateTokenTxInput): StreamPromise<CreateTokenTxOutput> {\n return this._sendTransaction<CreateTokenTxInput, CreateTokenTxOutput>(\n APIFunctions.createToken,\n input,\n );\n }\n\n /**\n *\n * @param {CreateTransferTxInput} input\n * @returns {StreamPromise<CreateTransferTxOutput>}\n *\n */\n createTransfer(\n input: CreateTransferTxInput,\n ): StreamPromise<CreateTransferTxOutput> {\n return this._sendTransaction<CreateTransferTxInput, CreateTransferTxOutput>(\n APIFunctions.createTransfer,\n input,\n );\n }\n\n /**\n *\n * @param {CreateTransferGroupTxInput} input\n * @returns {StreamPromise<CreateTransferGroupTxOutput>}\n *\n */\n createTransferGroup(\n input: CreateTransferGroupTxInput,\n ): StreamPromise<CreateTransferGroupTxOutput> {\n return this._sendTransaction<\n CreateTransferGroupTxInput,\n CreateTransferGroupTxOutput\n >(APIFunctions.createTransferGroup, input);\n }\n\n /**\n *\n * @param {CreateTransferManyTxInput} input\n * @returns {StreamPromise<CreateTransferManyTxOutput>}\n *\n */\n createTransferMany(\n input: CreateTransferManyTxInput,\n ): StreamPromise<CreateTransferManyTxOutput> {\n return this._sendTransaction<\n CreateTransferManyTxInput,\n CreateTransferManyTxOutput\n >(APIFunctions.createTransferMany, input);\n }\n\n /**\n *\n * @param {CreateWalletTxInput} input\n * @returns {StreamPromise<CreateWalletTxOutput>}\n *\n */\n createWallet(\n input: CreateWalletTxInput,\n ): StreamPromise<CreateWalletTxOutput> {\n return this._sendTransaction<CreateWalletTxInput, CreateWalletTxOutput>(\n APIFunctions.createWallet,\n input,\n );\n }\n\n /**\n *\n * @param {CreateWithdrawalTxInput} input\n * @returns {StreamPromise<CreateWithdrawalTxOutput>}\n *\n */\n createWithdrawal(\n input: CreateWithdrawalTxInput,\n ): StreamPromise<CreateWithdrawalTxOutput> {\n return this._sendTransaction<\n CreateWithdrawalTxInput,\n CreateWithdrawalTxOutput\n >(APIFunctions.createWithdrawal, input);\n }\n\n /**\n *\n * @param {FindBalanceManyTxInput} input\n * @returns {StreamPromise<FindBalanceManyTxOutput>}\n *\n */\n findBalanceMany(\n input: FindBalanceManyTxInput,\n ): StreamPromise<FindBalanceManyTxOutput> {\n return this._sendTransaction<\n FindBalanceManyTxInput,\n FindBalanceManyTxOutput\n >(APIFunctions.findBalanceMany, input);\n }\n\n /**\n *\n * @param {FindTokenManyTxInput} input\n * @returns {StreamPromise<FindTokenManyTxOutput>}\n *\n */\n findTokenMany(\n input: FindTokenManyTxInput,\n ): StreamPromise<FindTokenManyTxOutput> {\n return this._sendTransaction<FindTokenManyTxInput, FindTokenManyTxOutput>(\n APIFunctions.findTokenMany,\n input,\n );\n }\n\n /**\n *\n * @param {FindTransferGroupManyTxInput} input\n * @returns {StreamPromise<FindTransferGroupManyTxOutput>}\n *\n */\n findTransferGroupMany(\n input: FindTransferGroupManyTxInput,\n ): StreamPromise<FindTransferGroupManyTxOutput> {\n return this._sendTransaction<\n FindTransferGroupManyTxInput,\n FindTransferGroupManyTxOutput\n >(APIFunctions.findTransferGroupMany, input);\n }\n\n /**\n *\n * @param {FindTransferManyTxInput} input\n * @returns {StreamPromise<FindTransferManyTxOutput>}\n *\n */\n findTransferMany(\n input: FindTransferManyTxInput,\n ): StreamPromise<FindTransferManyTxOutput> {\n return this._sendTransaction<\n FindTransferManyTxInput,\n FindTransferManyTxOutput\n >(APIFunctions.findTransferMany, input);\n }\n\n /**\n *\n * @param {FindWalletManyTxInput} input\n * @returns {StreamPromise<FindWalletManyTxOutput>}\n *\n */\n findWalletMany(\n input: FindWalletManyTxInput,\n ): StreamPromise<FindWalletManyTxOutput> {\n return this._sendTransaction<FindWalletManyTxInput, FindWalletManyTxOutput>(\n APIFunctions.findWalletMany,\n input,\n );\n }\n\n /**\n *\n * @param {FinishTransactionTxInput} input\n * @returns {StreamPromise<FinishTransactionTxOutput>}\n *\n */\n finishTransaction(\n input: FinishTransactionTxInput,\n ): StreamPromise<FinishTransactionTxOutput> {\n return this._sendTransaction<\n FinishTransactionTxInput,\n FinishTransactionTxOutput\n >(APIFunctions.finishTransaction, input);\n }\n\n /**\n *\n * @param {GetBalanceTxInput} input\n * @returns {StreamPromise<GetBalanceTxOutput>}\n *\n */\n getBalance(input: GetBalanceTxInput): StreamPromise<GetBalanceTxOutput> {\n return this._sendTransaction<GetBalanceTxInput, GetBalanceTxOutput>(\n APIFunctions.getBalance,\n input,\n );\n }\n\n /**\n *\n * @param {GetBalanceHistoryTxInput} input\n * @returns {StreamPromise<GetBalanceHistoryTxOutput>}\n *\n */\n getBalanceHistory(\n input: GetBalanceHistoryTxInput,\n ): StreamPromise<GetBalanceHistoryTxOutput> {\n return this._sendTransaction<\n GetBalanceHistoryTxInput,\n GetBalanceHistoryTxOutput\n >(APIFunctions.getBalanceHistory, input);\n }\n\n /**\n *\n * @param {GetFlagsTxInput} input\n * @returns {StreamPromise<GetFlagsTxOutput>}\n *\n */\n getFlags(input: GetFlagsTxInput): StreamPromise<GetFlagsTxOutput> {\n return this._sendTransaction<GetFlagsTxInput, GetFlagsTxOutput>(\n APIFunctions.getFlags,\n input,\n );\n }\n\n /**\n *\n * @param {GetStatisticsTxInput} input\n * @returns {StreamPromise<GetStatisticsTxOutput>}\n *\n */\n getStatistics(\n input: GetStatisticsTxInput,\n ): StreamPromise<GetStatisticsTxOutput> {\n return this._sendTransaction<GetStatisticsTxInput, GetStatisticsTxOutput>(\n APIFunctions.getStatistics,\n input,\n );\n }\n\n /**\n *\n * @param {GetTokenTxInput} input\n * @returns {StreamPromise<GetTokenTxOutput>}\n *\n */\n getToken(input: GetTokenTxInput): StreamPromise<GetTokenTxOutput> {\n return this._sendTransaction<GetTokenTxInput, GetTokenTxOutput>(\n APIFunctions.getToken,\n input,\n );\n }\n\n /**\n *\n * @param {GetTokenManyTxInput} input\n * @returns {StreamPromise<GetTokenManyTxOutput>}\n *\n */\n getTokenMany(\n input: GetTokenManyTxInput,\n ): StreamPromise<GetTokenManyTxOutput> {\n return this._sendTransaction<GetTokenManyTxInput, GetTokenManyTxOutput>(\n APIFunctions.getTokenMany,\n input,\n );\n }\n\n /**\n *\n * @param {GetTransferTxInput} input\n * @returns {StreamPromise<GetTransferTxOutput>}\n *\n */\n getTransfer(input: GetTransferTxInput): StreamPromise<GetTransferTxOutput> {\n return this._sendTransaction<GetTransferTxInput, GetTransferTxOutput>(\n APIFunctions.getTransfer,\n input,\n );\n }\n\n /**\n *\n * @param {GetTransferGroupTxInput} input\n * @returns {StreamPromise<GetTransferGroupTxOutput>}\n *\n */\n getTransferGroup(\n input: GetTransferGroupTxInput,\n ): StreamPromise<GetTransferGroupTxOutput> {\n return this._sendTransaction<\n GetTransferGroupTxInput,\n GetTransferGroupTxOutput\n >(APIFunctions.getTransferGroup, input);\n }\n\n /**\n *\n * @param {GetWalletTxInput} input\n * @returns {StreamPromise<GetWalletTxOutput>}\n *\n */\n getWallet(input: GetWalletTxInput): StreamPromise<GetWalletTxOutput> {\n return this._sendTransaction<GetWalletTxInput, GetWalletTxOutput>(\n APIFunctions.getWallet,\n input,\n );\n }\n\n /**\n *\n * @param {GetWalletManyTxInput} input\n * @returns {StreamPromise<GetWalletManyTxOutput>}\n *\n */\n getWalletMany(\n input: GetWalletManyTxInput,\n ): StreamPromise<GetWalletManyTxOutput> {\n return this._sendTransaction<GetWalletManyTxInput, GetWalletManyTxOutput>(\n APIFunctions.getWalletMany,\n input,\n );\n }\n\n /**\n *\n * @param {ImportActionsTxInput} input\n * @returns {StreamPromise<ImportActionsTxOutput>}\n *\n */\n importActions(\n input: ImportActionsTxInput,\n ): StreamPromise<ImportActionsTxOutput> {\n return this._sendTransaction<ImportActionsTxInput, ImportActionsTxOutput>(\n APIFunctions.importActions,\n input,\n );\n }\n\n /**\n *\n * @param {ImportActionsTxOptions} [input]\n * @param {TransformStream} [transform]\n * @returns {StreamPromiseInput<ImportActionsTxOutput>}\n *\n */\n importActionsStream<PreTransformChunk>(\n input?: ImportActionsTxOptions,\n transform?: TransformStream<PreTransformChunk, ImportActionsTxInput>,\n ): StreamPromiseInput<ImportActionsTxOutput, PreTransformChunk> {\n if (input !== undefined && !isImportActionsTxOptions(input)) {\n throw new ValidationError({\n message: ERROR_MESSAGES.INPUT_INVALID,\n data: input,\n });\n }\n return this._streamTransaction<\n ImportActionsTxOptions,\n ImportActionsTxInput,\n ImportActionsTxOutput,\n PreTransformChunk\n >(APIFunctions.importActions, isImportActionsTxInput, input, transform);\n }\n\n /**\n *\n * @param {QueryTxInput} input\n * @returns {StreamPromise<QueryTxOutput>}\n *\n */\n query(input: QueryTxInput): StreamPromise<QueryTxOutput> {\n return this._sendTransaction<QueryTxInput, QueryTxOutput>(\n APIFunctions.query,\n input,\n );\n }\n\n /**\n *\n * @param {QueryLogsTxInput} input\n * @returns {StreamPromise<QueryLogsTxOutput>}\n *\n */\n queryLogs(input: QueryLogsTxInput): StreamPromise<QueryLogsTxOutput> {\n return this._sendTransaction<QueryLogsTxInput, QueryLogsTxOutput>(\n APIFunctions.queryLogs,\n input,\n );\n }\n\n /**\n *\n * @param {ResetDatabaseTxInput} input\n * @returns {StreamPromise<ResetDatabaseTxOutput>}\n *\n */\n resetDatabase(\n input: ResetDatabaseTxInput,\n ): StreamPromise<ResetDatabaseTxOutput> {\n return this._sendTransaction<ResetDatabaseTxInput, ResetDatabaseTxOutput>(\n APIFunctions.resetDatabase,\n input,\n );\n }\n\n /**\n *\n * @param {ReverseTransferTxInput} input\n * @returns {StreamPromise<ReverseTransferTxOutput>}\n *\n */\n reverseTransfer(\n input: ReverseTransferTxInput,\n ): StreamPromise<ReverseTransferTxOutput> {\n return this._sendTransaction<\n ReverseTransferTxInput,\n ReverseTransferTxOutput\n >(APIFunctions.reverseTransfer, input);\n }\n\n /**\n *\n * @param {ReverseTransferGroupTxInput} input\n * @returns {StreamPromise<ReverseTransferGroupTxOutput>}\n *\n */\n reverseTransferGroup(\n input: ReverseTransferGroupTxInput,\n ): StreamPromise<ReverseTransferGroupTxOutput> {\n return this._sendTransaction<\n ReverseTransferGroupTxInput,\n ReverseTransferGroupTxOutput\n >(APIFunctions.reverseTransferGroup, input);\n }\n\n /**\n *\n * @param {ReverseTransferGroupManyTxInput} input\n * @returns {StreamPromise<ReverseTransferGroupManyTxOutput>}\n *\n */\n reverseTransferGroupMany(\n input: ReverseTransferGroupManyTxInput,\n ): StreamPromise<ReverseTransferGroupManyTxOutput> {\n return this._sendTransaction<\n ReverseTransferGroupManyTxInput,\n ReverseTransferGroupManyTxOutput\n >(APIFunctions.reverseTransferGroupMany, input);\n }\n\n /**\n *\n * @param {ReverseTransferManyTxInput} input\n * @returns {StreamPromise<ReverseTransferManyTxOutput>}\n *\n */\n reverseTransferMany(\n input: ReverseTransferManyTxInput,\n ): StreamPromise<ReverseTransferManyTxOutput> {\n return this._sendTransaction<\n ReverseTransferManyTxInput,\n ReverseTransferManyTxOutput\n >(APIFunctions.reverseTransferMany, input);\n }\n\n /**\n *\n * @param {SetFlagsTxInput} input\n * @returns {StreamPromise<SetFlagsTxOutput>}\n *\n */\n setFlags(input: SetFlagsTxInput): StreamPromise<SetFlagsTxOutput> {\n return this._sendTransaction<SetFlagsTxInput, SetFlagsTxOutput>(\n APIFunctions.setFlags,\n input,\n );\n }\n\n /**\n *\n * @param {StartTransactionTxInput} input\n * @returns {StreamPromise<StartTransactionTxOutput>}\n *\n */\n startTransaction(\n input: StartTransactionTxInput,\n ): StreamPromise<StartTransactionTxOutput> {\n return this._sendTransaction<\n StartTransactionTxInput,\n StartTransactionTxOutput\n >(APIFunctions.startTransaction, input);\n }\n\n /**\n *\n * @param {UpdateTokenTxInput} input\n * @returns {StreamPromise<UpdateTokenTxOutput>}\n *\n */\n updateToken(input: UpdateTokenTxInput): StreamPromise<UpdateTokenTxOutput> {\n return this._sendTransaction<UpdateTokenTxInput, UpdateTokenTxOutput>(\n APIFunctions.updateToken,\n input,\n );\n }\n\n /**\n *\n * @param {UpdateTransferTxInput} input\n * @returns {StreamPromise<UpdateTransferTxOutput>}\n *\n */\n updateTransfer(\n input: UpdateTransferTxInput,\n ): StreamPromise<UpdateTransferTxOutput> {\n return this._sendTransaction<UpdateTransferTxInput, UpdateTransferTxOutput>(\n APIFunctions.updateTransfer,\n input,\n );\n }\n\n /**\n *\n * @param {UpdateTransferGroupTxInput} input\n * @returns {StreamPromise<UpdateTransferGroupTxOutput>}\n *\n */\n updateTransferGroup(\n input: UpdateTransferGroupTxInput,\n ): StreamPromise<UpdateTransferGroupTxOutput> {\n return this._sendTransaction<\n UpdateTransferGroupTxInput,\n UpdateTransferGroupTxOutput\n >(APIFunctions.updateTransferGroup, input);\n }\n\n /**\n *\n * @param {UpdateTransferGroupManyTxInput} input\n * @returns {StreamPromise<UpdateTransferGroupManyTxOutput>}\n *\n */\n updateTransferGroupMany(\n input: UpdateTransferGroupManyTxInput,\n ): StreamPromise<UpdateTransferGroupManyTxOutput> {\n return this._sendTransaction<\n UpdateTransferGroupManyTxInput,\n UpdateTransferGroupManyTxOutput\n >(APIFunctions.updateTransferGroupMany, input);\n }\n\n /**\n *\n * @param {UpdateTransferManyTxInput} input\n * @returns {StreamPromise<UpdateTransferManyTxOutput>}\n *\n */\n updateTransferMany(\n input: UpdateTransferManyTxInput,\n ): StreamPromise<UpdateTransferManyTxOutput> {\n return this._sendTransaction<\n UpdateTransferManyTxInput,\n UpdateTransferManyTxOutput\n >(APIFunctions.updateTransferMany, input);\n }\n\n /**\n *\n * @param {UpdateWalletTxInput} input\n * @returns {StreamPromise<UpdateWalletTxOutput>}\n *\n */\n updateWallet(\n input: UpdateWalletTxInput,\n ): StreamPromise<UpdateWalletTxOutput> {\n return this._sendTransaction<UpdateWalletTxInput, UpdateWalletTxOutput>(\n APIFunctions.updateWallet,\n input,\n );\n }\n\n // TXSDEFS\n}\n","export enum ConnectionStatus {\n ready = 'ready',\n}\nexport enum SocketStatuses {\n authError = 4030,\n genericError = 4500,\n}\n","import {\n WebSocket,\n CloseEvent,\n ErrorEvent,\n MessageEvent,\n} from '../lib/isomorphic/node/ws';\nimport { debugLog } from '../lib/debug';\nimport {\n AuthenticationError,\n ERROR_MESSAGES,\n ERROR_TYPES,\n} from '../lib/errors';\nimport { getConnectionParams, wait } from '../lib/utils';\nimport { BaseClient, ISocketId } from './base-client';\nimport {\n ConnectionStatus,\n SocketStatuses,\n} from './connection/connection.enums';\nimport {\n JSONRPCRequest,\n JSONRPCResponse,\n WapiConnectionOptions,\n} from './index';\nimport { version } from '../../package.json';\n\nexport function createClient(opts: WapiConnectionOptions): WsClient {\n const initialConnection = createConnection(opts);\n return new WsClient(initialConnection, opts);\n}\n\ninterface ConnectionWPromise {\n ws: WebSocket;\n $connect: Promise<ISocketId>;\n}\n\nexport interface EWapiConnectionOptions extends WapiConnectionOptions {\n rejectUnauthorized: boolean;\n clientVersion: string;\n}\n\nfunction createConnection(opts: WapiConnectionOptions): ConnectionWPromise {\n const config: EWapiConnectionOptions = Object.assign(\n {\n rejectUnauthorized: true,\n clientVersion: version,\n },\n opts,\n );\n\n const params = getConnectionParams(config);\n const ws = new WebSocket(...params);\n let _resolve: (i: ISocketId | PromiseLike<ISocketId>) => void,\n _reject: (e: Error) => void,\n isCleaned = false;\n let _id: string | undefined;\n\n ws.onclose = close;\n ws.onerror = error;\n ws.onmessage = message;\n\n function close(event: CloseEvent) {\n debugLog(\n `createConnection>close(reason:${event.reason},code:${event.code},wasClean:${event.wasClean})`,\n );\n if (event.code === SocketStatuses.authError) {\n return clean(\n new AuthenticationError({\n message: ERROR_MESSAGES.AUTHENTICATION_FAILED,\n code: ERROR_TYPES.AuthenticationError,\n }),\n );\n }\n clean(new Error('WS closed'));\n }\n\n function error(event: ErrorEvent) {\n debugLog(\n `createConnection>error(message:${event.message},error:${event.error},type:${event.type})`,\n );\n clean(event.error as Error);\n }\n\n function message(event: MessageEvent) {\n debugLog(`createConnection>message(type:${event.type},data:${event.data})`);\n const { data } = event;\n let obj: JSONRPCResponse;\n try {\n obj = JSON.parse(data.toString());\n } catch (e) {\n debugLog('Invalid JSON response', e);\n return clean(new Error('Invalid JSON response'));\n }\n if (obj.result !== ConnectionStatus.ready) {\n debugLog('Invalid first message');\n return clean(new Error('Invalid first message - ' + JSON.stringify(obj)));\n }\n\n _id = obj.result.id || undefined;\n\n clean();\n }\n\n function clean(err?: Error) {\n if (isCleaned) {\n return;\n }\n delete ws.onmessage;\n delete ws.onerror;\n delete ws.onclose;\n\n if (err) {\n _reject(err);\n ws.close();\n } else {\n _resolve(_id);\n }\n isCleaned = true;\n }\n\n const $connect: Promise<ISocketId> = new Promise((resolve, reject) => {\n _resolve = resolve;\n _reject = reject;\n });\n\n return {\n ws,\n $connect,\n };\n}\n\nexport class WsClient extends BaseClient {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _pingTimeout: any;\n private _config: WapiConnectionOptions;\n private _tryToReconnect = true;\n\n constructor(initial: ConnectionWPromise, config: WapiConnectionOptions) {\n super(initial.ws, initial.$connect);\n // Attach new message listener after original message has been resolved\n this._config = config;\n this.$connect\n .then((_id: ISocketId) => {\n this.socId = _id;\n return this._ready();\n })\n .catch((err: Error | AuthenticationError) => {\n // We ignore the error after first connect\n if (this.socId) {\n return;\n }\n this._setErrored(err);\n });\n }\n protected _setErrored(err: Error | AuthenticationError): void {\n super._setErrored(err);\n if (\n // eslint-disable-next-line no-prototype-builtins\n err.hasOwnProperty('code') &&\n (err as AuthenticationError).code === ERROR_TYPES.AuthenticationError\n ) {\n this._tryToReconnect = false;\n }\n }\n\n private _ready(): void {\n this._setConnected(true);\n this._connection.onmessage = (event: unknown) => {\n const { data, type } = event as MessageEvent;\n debugLog(`message(type:${type},data:${data})`);\n if (type === 'message') {\n const obj = JSON.parse(data.toString());\n this._handleMessage(obj);\n this._heartbeat();\n }\n };\n\n this._connection.onerror = (event: unknown) => {\n const { message, error, type } = event as ErrorEvent;\n debugLog(`error(message:${message},error:${error},type:${type})`);\n };\n this._connection.onclose = (event: unknown) => {\n const { reason, code, wasClean } = event as CloseEvent;\n debugLog(`close(reason:${reason},code:${code},wasClean:${wasClean})`);\n this._setConnected(false);\n clearTimeout(this._pingTimeout);\n this._connectionLost();\n this._reconnect();\n };\n this._heartbeat();\n }\n\n protected _reconnect(): void {\n debugLog('reconnect(),tryToReconnect:', this._tryToReconnect);\n if (!this._tryToReconnect) {\n return;\n }\n if (this.hooks.reconnect && !this.hooks.reconnect()) {\n debugLog('reconnect hook returned false');\n return;\n }\n const nrOfAttempts =\n (process.env.WAPI_RECONNECT_ATTEMPTS &&\n parseInt(process.env.WAPI_RECONNECT_ATTEMPTS)) ||\n 10;\n const maxWaitTime =\n (process.env.WAPI_MAX_RECONNECT_WAIT &&\n parseInt(process.env.WAPI_MAX_RECONNECT_WAIT)) ||\n 10000;\n this.$connect = (async () => {\n let _id: ISocketId;\n for (let i = 0; i < nrOfAttempts + 1; i++) {\n try {\n debugLog('Trying to connect, attempt:', i);\n const { ws, $connect } = createConnection(this._config);\n _id = await $connect;\n this.socId = _id;\n this._connection = ws;\n this._ready();\n break;\n } catch (err) {\n if (err.code === ERROR_TYPES.AuthenticationError) {\n throw err;\n }\n if (i > nrOfAttempts - 1) {\n throw err;\n }\n await wait(Math.min(Math.pow(1.5, i) * 1000, maxWaitTime));\n }\n }\n return _id;\n })();\n }\n\n private _heartbeat(): void {\n debugLog('heartbeat');\n clearTimeout(this._pingTimeout);\n this._pingTimeout = setTimeout(() => {\n // We are in the middle of sending something\n // So delay the termination of the connection\n if (this._sending.size) {\n debugLog('pingTimeout reached, but sending.size:', this._sending.size);\n return this._heartbeat();\n }\n debugLog('timeout');\n this._connection.close();\n this._setConnected(false);\n this._reconnect();\n }, 31000);\n }\n\n protected _send(input: JSONRPCRequest | JSONRPCResponse): void {\n debugLog('send()', input);\n this._connection.send(JSON.stringify(input));\n }\n\n async close(): Promise<void> {\n debugLog('close()');\n this._tryToReconnect = false;\n clearTimeout(this._pingTimeout);\n this._setConnected(false);\n return this._connection.close();\n }\n}\n","import {\n DbFilterFunctionWhereIns,\n DbFilterFunctionWhereMetadataIns,\n DbFilterFunctionWhereNulls,\n DbFilterFunctionWhereInner,\n DbFilterFunctionWhereMetadataPrimitive,\n DbFilterFunctionWhereObject,\n DbFilterFunctionWherePrimitive,\n DbFilterOperator,\n DbFilterOperatorExtended,\n DbFilterFunctionWhereMetadataNulls,\n DbFilterOperatorString,\n} from '../db';\nimport {\n ITxAggregator,\n ITxAggregatorSimple,\n ITxGroup,\n ITxGroups,\n ITxLimitingOptions,\n ITxOrderingInput,\n ITxOrderingOptions,\n ITxPeriodSimple,\n ITxPeriodSimpleEnum,\n ITxSelectOptions,\n} from '../txs';\nimport { StreamPromise } from './stream-promise';\nimport { InputError } from './errors';\nimport { ReadStream } from './isomorphic/node/streams';\n\ntype Primitive = string | number | boolean;\ntype DbFilter =\n | DbFilterFunctionWhereObject\n | DbFilterFunctionWherePrimitive\n | DbFilterFunctionWhereNulls\n | DbFilterFunctionWhereMetadataNulls\n | DbFilterFunctionWhereIns\n | DbFilterFunctionWhereMetadataIns\n | DbFilterFunctionWhereInner\n | DbFilterFunctionWhereMetadataPrimitive;\n\n/**\n * @internal\n */\nclass QueryBuilderInner<\n Fields extends string,\n StringFields extends string,\n MetadataFields extends string,\n Result\n> {\n private filter: DbFilter[] = [];\n private modifierFn?: (\n field: Fields | StringFields | MetadataFields,\n value: Primitive | { [k: string]: unknown },\n ) => unknown;\n\n constructor(\n modifiers?: (\n field: Fields | StringFields | MetadataFields,\n value: Primitive | { [k: string]: unknown },\n ) => unknown,\n ) {\n this.modifierFn = modifiers;\n }\n\n private add(item: DbFilter): this {\n this.filter.push(item);\n return this;\n }\n\n private addWhere(\n fn: 'where' | 'orWhere',\n field:\n | Fields\n | StringFields\n | MetadataFields\n | ({ [key in Fields]?: Primitive } &\n { [key in StringFields]?: string } &\n { [key in MetadataFields]?: { [k: string]: unknown } })\n | ((\n builder: QueryBuilderInner<\n Fields,\n StringFields,\n MetadataFields,\n Result\n >,\n ) => void),\n operator?: DbFilterOperator | Primitive | { [k: string]: unknown },\n value?: Primitive,\n ): this {\n if (typeof field === 'object') {\n const innerValue: {\n [key in Fields | StringFields | MetadataFields]?: unknown;\n } = {};\n for (const [key, value] of Object.entries(field)) {\n innerValue[key as Fields | StringFields | MetadataFields] = this\n .modifierFn\n ? this.modifierFn(\n key as Fields | StringFields | MetadataFields,\n value as Primitive | { [k: string]: unknown },\n )\n : value;\n }\n return this.add({\n function: fn,\n value: innerValue,\n });\n }\n\n if (typeof field === 'function') {\n const innerQueryBuilder = new QueryBuilderInner<\n Fields,\n StringFields,\n MetadataFields,\n Result\n >(this.modifierFn);\n field.call(innerQueryBuilder, innerQueryBuilder);\n return this.add({\n function: fn,\n inner: innerQueryBuilder.toJSON().filter,\n });\n }\n if (value !== undefined) {\n return this.add({\n function: fn,\n field,\n operator: operator as DbFilterOperator,\n value,\n });\n }\n if (typeof operator === 'object') {\n // Metadata fields\n return this.add({\n function: fn,\n value: {\n [field]: operator,\n },\n });\n }\n if (operator !== undefined) {\n const innerValue = this.modifierFn\n ? this.modifierFn(\n field as Fields | StringFields | MetadataFields,\n operator,\n )\n : operator;\n return this.add({\n function: fn,\n field,\n value: innerValue as string | number | boolean,\n });\n }\n throw TypeError('Invalid input');\n }\n\n where(field: Fields, operator: DbFilterOperator, value: Primitive): this;\n where(\n field: StringFields,\n operator: DbFilterOperator | DbFilterOperatorString,\n value: string,\n ): this;\n where(field: Fields, value: Primitive): this;\n where(field: StringFields, value: string): this;\n where(field: MetadataFields, value: { [k: string]: unknown }): this;\n where(\n field: { [key in Fields]?: Primitive } &\n { [key in StringFields]?: string } &\n { [key in MetadataFields]?: { [k: string]: unknown } },\n ): this;\n where(\n field: (\n builder: QueryBuilderInner<Fields, StringFields, MetadataFields, Result>,\n ) => void,\n ): this;\n where(\n field:\n | Fields\n | StringFields\n | MetadataFields\n | ({ [key in Fields]?: Primitive } &\n { [key in StringFields]?: string } &\n { [key in MetadataFields]?: { [k: string]: unknown } })\n | ((\n builder: QueryBuilderInner<\n Fields,\n StringFields,\n MetadataFields,\n Result\n >,\n ) => void),\n operator?: DbFilterOperator | Primitive | { [k: string]: unknown },\n value?: Primitive,\n ): this {\n return this.addWhere('where', field, operator, value);\n }\n\n orWhere(field: Fields, operator: DbFilterOperator, value: Primitive): this;\n orWhere(\n field: StringFields,\n operator: DbFilterOperator | DbFilterOperatorString,\n value: string,\n ): this;\n orWhere(field: Fields, value: Primitive): this;\n orWhere(field: StringFields, value: string): this;\n orWhere(field: MetadataFields, value: { [k: string]: unknown }): this;\n orWhere(\n field: { [key in Fields]?: Primitive } &\n { [key in StringFields]?: string } &\n { [key in MetadataFields]?: { [k: string]: unknown } },\n ): this;\n orWhere(\n field: (\n builder: QueryBuilderInner<Fields, StringFields, MetadataFields, Result>,\n ) => void,\n ): this;\n orWhere(\n field:\n | Fields\n | StringFields\n | MetadataFields\n | ({ [key in Fields]?: Primitive } &\n { [key in StringFields]?: string } &\n { [key in MetadataFields]?: { [k: string]: unknown } })\n | ((\n builder: QueryBuilderInner<\n Fields,\n StringFields,\n MetadataFields,\n Result\n >,\n ) => void),\n operator?: DbFilterOperator | Primitive | { [k: string]: unknown },\n value?: Primitive,\n ): this {\n return this.addWhere('orWhere', field, operator, value);\n }\n\n whereIn(field: StringFields, value: string[]): this;\n whereIn(field: Fields, value: (string | number)[]): this;\n whereIn(field: Fields | StringFields, value: (string | number)[]): this {\n return this.add({\n function: 'whereIn',\n field,\n value,\n });\n }\n\n orWhereIn(field: StringFields, value: string[]): this;\n orWhereIn(field: Fields, value: (string | number)[]): this;\n orWhereIn(field: Fields | StringFields, value: (string | number)[]): this {\n return this.add({\n function: 'orWhereIn',\n field,\n value,\n });\n }\n\n whereNull(field: Fields | StringFields | MetadataFields): this {\n return this.add({\n function: 'whereNull',\n field,\n });\n }\n\n orWhereNull(field: Fields | StringFields | MetadataFields): this {\n return this.add({\n function: 'orWhereNull',\n field,\n });\n }\n\n whereNotNull(field: Fields | StringFields | MetadataFields): this {\n return this.add({\n function: 'whereNotNull',\n field,\n });\n }\n\n orWhereNotNull(field: Fields | StringFields | MetadataFields): this {\n return this.add({\n function: 'orWhereNotNull',\n field,\n });\n }\n\n whereMetadata(\n field: string,\n operator: DbFilterOperatorExtended,\n value: string | number,\n ): this;\n whereMetadata(field: string, value: string | number | boolean): this;\n whereMetadata(\n field: string,\n operator: DbFilterOperatorExtended | string | number,\n value?: string | number | boolean,\n ): this {\n if (value === undefined) {\n return this.add({\n function: 'whereMetadata',\n field,\n operator: '=',\n value: (operator as unknown) as string,\n });\n }\n return this.add({\n function: 'whereMetadata',\n field,\n operator: (operator as unknown) as DbFilterOperatorExtended,\n value: value as string,\n });\n }\n\n orWhereMetadata(\n field: string,\n operator: DbFilterOperatorExtended,\n value: string | number,\n ): this;\n orWhereMetadata(field: string, value: string | number | boolean): this;\n orWhereMetadata(\n field: string,\n operator: DbFilterOperatorExtended | string | number,\n value?: string | number | boolean,\n ): this {\n if (value === undefined) {\n return this.add({\n function: 'orWhereMetadata',\n field,\n operator: '=',\n value: (operator as unknown) as string,\n });\n }\n return this.add({\n function: 'orWhereMetadata',\n field,\n operator: (operator as unknown) as DbFilterOperatorExtended,\n value: value as string,\n });\n }\n\n whereMetadataIn(field: string, value: (string | number)[]): this {\n return this.add({\n function: 'whereMetadataIn',\n field,\n value,\n });\n }\n\n orWhereMetadataIn(field: string, value: (string | number)[]): this {\n return this.add({\n function: 'orWhereMetadataIn',\n field,\n value,\n });\n }\n\n whereMetadataNull(field: string): this {\n return this.add({\n function: 'whereMetadataNull',\n field,\n });\n }\n\n orWhereMetadataNull(field: string): this {\n return this.add({\n function: 'orWhereMetadataNull',\n field,\n });\n }\n\n whereMetadataNotNull(field: string): this {\n return this.add({\n function: 'whereMetadataNotNull',\n field,\n });\n }\n\n orWhereMetadataNotNull(field: string): this {\n return this.add({\n function: 'orWhereMetadataNotNull',\n field,\n });\n }\n\n toJSON(): { filter: DbFilter[] } {\n return {\n filter: JSON.parse(JSON.stringify(this.filter)),\n };\n }\n}\n\nexport type BuiltQuery = {\n filter: DbFilter[];\n options?: {\n [k: string]: unknown;\n };\n};\n\nexport type BuiltAggregateQuery = {\n filter: DbFilter[];\n options?: {\n [k: string]: unknown;\n };\n groups: ITxGroups;\n aggregators: ITxAggregator;\n};\n\nexport type BuiltUpdateQuery = {\n filter: DbFilter[];\n update: {\n [k: string]: unknown;\n };\n options?: {\n [k: string]: unknown;\n };\n};\n\nexport type BuiltReverseQuery = {\n filter: DbFilter[];\n reverse: {\n [k: string]: unknown;\n };\n options?: {\n [k: string]: unknown;\n };\n};\n\nexport type BaseOptions = ITxLimitingOptions &\n ITxOrderingOptions &\n ITxSelectOptions;\n\nexport type QueryBuilderOrderingInputObject = {\n column: string;\n order?: 'asc' | 'desc';\n nulls?: 'first' | 'last';\n};\nexport type QueryBuilderOrderingInput =\n | string\n | QueryBuilderOrderingInputObject;\n\nfunction queryBuilderOrderByToTxOrderBy(\n input: QueryBuilderOrderingInput[],\n): ITxOrderingInput[] {\n return input.map((item) => {\n if (typeof item === 'string') {\n if (item.includes(' ')) {\n throw new TypeError('invalid order option: ' + item);\n }\n return {\n field: item,\n direction: 'asc',\n };\n }\n return {\n field: item.column,\n direction: item.order,\n nulls: item.nulls,\n };\n });\n}\n\nexport class QueryBuilderInterface<\n TableFields extends string,\n StringFields extends string,\n MetadataFields extends string,\n Result\n> extends QueryBuilderInner<TableFields, StringFields, MetadataFields, Result> {\n private execFn: (query: unknown) => StreamPromise<Result>;\n protected optionsObject: { [k: string]: unknown } = {};\n private optionsModifiers?: (field: string, value: unknown) => unknown;\n\n constructor({\n start,\n modifiers,\n optionsModifiers,\n }: {\n start: (query: unknown) => StreamPromise<Result>;\n modifiers?: (\n field: TableFields | StringFields | MetadataFields,\n value: Primitive | { [k: string]: unknown },\n ) => unknown;\n optionsModifiers?: (field: string, value: unknown) => unknown;\n }) {\n super(modifiers);\n this.execFn = start;\n this.optionsModifiers = optionsModifiers;\n }\n\n private start() {\n return this.execFn(this.toJSON());\n }\n\n toJSON(): BuiltQuery {\n return {\n ...super.toJSON(),\n options: {\n ...this.optionsObject,\n },\n };\n }\n\n options(optionsInput: { [key: string]: unknown }): this {\n if (this.optionsModifiers === undefined) {\n this.optionsObject = {\n ...this.optionsObject,\n ...optionsInput,\n };\n return this;\n }\n this.optionsObject = {\n ...this.optionsObject,\n };\n for (const [key, value] of Object.entries(optionsInput)) {\n this.optionsObject[key] = this.optionsModifiers(key, value);\n }\n\n return this;\n }\n\n then<TResult1 = Result, TResult2 = never>(\n onfulfilled?: (value: Result) => TResult1 | PromiseLike<TResult1>,\n onrejected?: (reason: Error) => TResult2 | PromiseLike<TResult2>,\n ): Promise<TResult1 | TResult2> {\n return this.start().then(onfulfilled, onrejected);\n }\n\n catch<TResult2 = never>(\n onerror: (reason: Error) => TResult2 | PromiseLike<TResult2>,\n ): Promise<Result | TResult2> {\n return this.start().catch(onerror);\n }\n\n stream(): ReadStream {\n return this.start().stream();\n }\n}\n\n/**\n * A class for constructing queries for advanced filters\n * uses similar API as knex.js\n *\n * ```javascript\n * const queryBuilder = wapi.findTransfers();\n *\n * queryBuilder\n * .where({\n * metadata: {\n * custom: true,\n * }\n * })\n * .where('id', '>', 10)\n * .orWhere(builder => {\n * builder\n * .where('status', 'finished')\n * .orWhere('created_at', '>', '2019')\n * })\n * .limit(10)\n * .offset(4)\n * .orderBy('id', 'desc')\n * .options({\n * tracking_id: 'myIdHere',\n * })\n * //.stream() - if you want to use as stream\n * //.then() - if you want to use as promise\n *\n * ```\n */\nexport class QueryBuilder<\n TableFields extends string,\n StringFields extends string,\n MetadataFields extends string,\n ResultFields extends string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Options extends BaseOptions,\n Result\n> extends QueryBuilderInterface<\n TableFields,\n StringFields,\n MetadataFields,\n Result\n> {\n constructor({\n start,\n modifiers,\n optionsModifiers,\n }: {\n start: (query: BuiltQuery) => StreamPromise<Result>;\n modifiers?: (\n field: TableFields | StringFields | MetadataFields,\n value: Primitive | { [k: string]: unknown },\n ) => unknown;\n optionsModifiers?: (field: string, value: unknown) => unknown;\n }) {\n super({\n start: (query: unknown) => start(query as BuiltQuery),\n modifiers,\n optionsModifiers,\n });\n }\n\n limit(nr: number): this {\n this.optionsObject.limit = nr;\n return this;\n }\n\n offset(nr: number): this {\n this.optionsObject.offset = nr;\n return this;\n }\n\n orderBy(\n input:\n | ResultFields\n | `${string} ${'asc' | 'desc'}`\n | `${string} ${'asc' | 'desc'} nulls ${'first' | 'last'}`\n | QueryBuilderOrderingInput[],\n direction?: 'asc' | 'desc',\n nullsDirection?: 'first' | 'last',\n ): this {\n if (!Array.isArray(input) && typeof input !== 'string') {\n throw new TypeError('invalid input');\n }\n if (Array.isArray(input)) {\n this.optionsObject.order = queryBuilderOrderByToTxOrderBy(input);\n return this;\n }\n if (!input.includes(' ')) {\n this.optionsObject.order = queryBuilderOrderByToTxOrderBy([\n {\n column: input,\n order: direction || 'asc',\n nulls: nullsDirection,\n },\n ]);\n return this;\n }\n const [column, order, nulls, nullsDir] = input.split(' ');\n if (order !== 'asc' && order !== 'desc') {\n throw new TypeError('invalid order');\n }\n const innerInput: QueryBuilderOrderingInput = {\n column,\n order,\n };\n if (nulls === 'nulls') {\n if (!['first', 'last'].includes(nullsDir)) {\n throw new TypeError('invalid nulls order');\n }\n innerInput.nulls = nullsDir as 'first' | 'last';\n }\n\n this.optionsObject.order = queryBuilderOrderByToTxOrderBy([input]);\n return this;\n }\n\n select(...fields: ResultFields[]): this {\n this.optionsObject.select = fields;\n return this;\n }\n\n deselect(...fields: ResultFields[]): this {\n this.optionsObject.deselect = fields;\n return this;\n }\n}\n\nfunction aggregatorInputToAggregator(\n fn: ITxAggregatorSimple,\n input?: string,\n): ITxAggregator {\n if (!input) {\n return {\n function: fn,\n alias: fn,\n };\n }\n if (!input.includes(' ')) {\n return {\n function: fn,\n field: input,\n alias: fn,\n };\n }\n if (!input.includes(' as ')) {\n throw new InputError({\n message: 'Invalid Aggregator',\n });\n }\n const [field, alias] = input.split(' as ');\n return {\n function: fn,\n field,\n alias: alias || field,\n };\n}\n\n/**\n * A class for constructing queries for advanced filters\n * uses similar API as knex.js\n *\n * ```javascript\n * const queryBuilder = wapi.findTransfers();\n *\n * queryBuilder\n * .where({\n * metadata: {\n * custom: true,\n * }\n * })\n * .where('id', '>', 10)\n * .orWhere(builder => {\n * builder\n * .where('status', 'finished')\n * .orWhere('created_at', '>', '2019')\n * })\n * .groupBy('metadata.type as type')\n * .sum('to.amount as amount')\n * .options({\n * tracking_id: 'myIdHere',\n * })\n * //.stream() - if you want to use as stream\n * //.then() - if you want to use as promise\n *\n * ```\n */\nexport class AggregateQueryBuilder<\n TableFields extends string,\n StringFields extends string,\n MetadataFields extends string,\n GroupFields extends string,\n Result\n> extends QueryBuilderInterface<\n TableFields,\n StringFields,\n MetadataFields,\n Result\n> {\n private aggregatorObject: {\n aggregator?: ITxAggregator;\n aggregators: ITxAggregator[];\n groups?: ITxGroups;\n } = {\n aggregators: [],\n };\n private timezoneString = '';\n\n constructor({\n start,\n modifiers,\n optionsModifiers,\n }: {\n start: (query: BuiltAggregateQuery) => StreamPromise<Result>;\n modifiers?: (\n field: TableFields | StringFields | MetadataFields,\n value: Primitive | { [k: string]: unknown },\n ) => unknown;\n optionsModifiers?: (field: string, value: unknown) => unknown;\n }) {\n super({\n start: (query: unknown) => start(query as BuiltAggregateQuery),\n modifiers,\n optionsModifiers,\n });\n }\n\n toJSON(): BuiltAggregateQuery {\n return {\n ...super.toJSON(),\n aggregators: JSON.parse(\n JSON.stringify(this.aggregatorObject.aggregators),\n ),\n groups: JSON.parse(JSON.stringify(this.aggregatorObject.groups || [])),\n };\n }\n\n timezone(input: string): this {\n this.timezoneString = input;\n if (\n this.aggregatorObject.groups &&\n Array.isArray(this.aggregatorObject.groups)\n ) {\n this.aggregatorObject.groups.forEach((group) => {\n if (group.type === 'period') {\n group.field = {\n period: group.field as ITxPeriodSimple,\n timezone: input,\n };\n }\n });\n }\n return this;\n }\n\n groupBy(\n input: GroupFields | ITxPeriodSimple | `metadata.${string}`,\n ...rest: (GroupFields | ITxPeriodSimple | `metadata.${string}`)[]\n ): this {\n const group: Partial<ITxGroup> = {};\n if (typeof input !== 'string') {\n throw new TypeError('expected string as input, got' + typeof input);\n }\n const [field, alias] = input.split(' as ');\n // eslint-disable-next-line no-prototype-builtins\n if (ITxPeriodSimpleEnum.hasOwnProperty(field)) {\n group.type = 'period';\n group.alias = alias || field;\n if (this.timezoneString) {\n group.field = {\n period: field as ITxPeriodSimple,\n timezone: this.timezoneString,\n };\n } else {\n group.field = field;\n }\n } else if (field.startsWith('metadata.')) {\n const [, realField] = field.split('.');\n group.type = 'metadata_field';\n group.field = realField;\n group.alias = alias || realField;\n } else {\n group.type = 'field';\n group.field = field;\n group.alias = alias || field;\n }\n\n if (!this.aggregatorObject.groups) {\n this.aggregatorObject.groups = [group as ITxGroup];\n } else {\n this.aggregatorObject.groups.push(group as ITxGroup);\n }\n if (rest.length) {\n rest.forEach((item) => this.groupBy(item));\n }\n return this;\n }\n\n count(input?: string): this {\n this.aggregatorObject.aggregators.push(\n aggregatorInputToAggregator('count', input),\n );\n return this;\n }\n\n distinct(input?: string): this {\n this.aggregatorObject.aggregators.push(\n aggregatorInputToAggregator('countDistinct', input),\n );\n return this;\n }\n\n avg(input?: string): this {\n this.aggregatorObject.aggregators.push(\n aggregatorInputToAggregator('average', input),\n );\n return this;\n }\n\n min(input?: string): this {\n this.aggregatorObject.aggregators.push(\n aggregatorInputToAggregator('min', input),\n );\n return this;\n }\n\n max(input?: string): this {\n this.aggregatorObject.aggregators.push(\n aggregatorInputToAggregator('max', input),\n );\n return this;\n }\n\n sum(input?: string): this {\n this.aggregatorObject.aggregators.push(\n aggregatorInputToAggregator('sum', input),\n );\n return this;\n }\n}\n\nexport class UpdateQueryBuilder<\n TableFields extends string,\n StringFields extends string,\n MetadataFields extends string,\n ResultFields extends string,\n UpdateFields,\n Result\n> extends QueryBuilderInterface<\n TableFields,\n StringFields,\n MetadataFields,\n Result\n> {\n private updateObject: Partial<UpdateFields> = {};\n\n constructor({\n start,\n modifiers,\n optionsModifiers,\n }: {\n start?: (query: BuiltUpdateQuery) => StreamPromise<Result>;\n modifiers?: (\n field: TableFields | StringFields | MetadataFields | ResultFields,\n value: Primitive | { [k: string]: unknown },\n ) => unknown;\n optionsModifiers?: (field: string, value: unknown) => unknown;\n }) {\n super({ start, modifiers, optionsModifiers });\n }\n\n toJSON(): BuiltUpdateQuery {\n return {\n ...super.toJSON(),\n update: JSON.parse(JSON.stringify(this.updateObject)),\n };\n }\n\n update(updateData: UpdateFields): this {\n this.updateObject = Object.assign(this.updateObject, updateData);\n return this;\n }\n}\n\nexport class ReverseQueryBuilder<\n TableFields extends string,\n StringFields extends string,\n MetadataFields extends string,\n ReverseModifications,\n Result\n> extends QueryBuilderInterface<\n TableFields,\n StringFields,\n MetadataFields,\n Result\n> {\n private reverseModifications: Partial<ReverseModifications> = {};\n\n constructor({\n start,\n modifiers,\n optionsModifiers,\n }: {\n start?: (query: BuiltReverseQuery) => StreamPromise<Result>;\n modifiers?: (\n field: TableFields | StringFields | MetadataFields,\n value: Primitive | { [k: string]: unknown },\n ) => unknown;\n optionsModifiers?: (field: string, value: unknown) => unknown;\n }) {\n super({ start, modifiers, optionsModifiers });\n }\n\n toJSON(): BuiltReverseQuery {\n return {\n ...super.toJSON(),\n reverse: JSON.parse(JSON.stringify(this.reverseModifications)),\n };\n }\n\n reverse(modifications: ReverseModifications): this {\n this.reverseModifications = Object.assign(\n this.reverseModifications,\n modifications,\n );\n return this;\n }\n}\n","'use strict';\n\nimport { ClientFunctionOptions, FindTransfersFnInputStringFields } from '../';\nimport {\n AggregateTransferManyAggregator,\n AggregateTransferManyGroups,\n FindTransferManyFilter,\n} from '../../txs';\nimport {\n TransferTableBooleanFields,\n TransferTableNumberFields,\n TransferTableObjectFields,\n TransferTableStringFields,\n} from '../../db';\nimport { AggregateQueryBuilder } from '../../lib/query-builder';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport {\n getForeign,\n getIdentifierFilter,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n AggregateTransferManyGroupByFields,\n AggregateTransferManyTxOptions,\n TransferFilter,\n} from '../../txs';\n\nimport {\n AggregateTransfersFnInput,\n AggregateTransfersFnOutput,\n AggregateTransfersFnOptions,\n} from './aggregate-transfers.enums';\n\nconst validate = getValidator(SchemaNames.AggregateTransfersFnInput);\n\nexport type AggregateTransfersFnFields =\n | TransferTableBooleanFields\n | TransferTableNumberFields;\nexport type AggregateTransfersFnStringFields =\n | TransferTableStringFields\n | FindTransfersFnInputStringFields;\nexport type AggregateTransfersFnMetadataFields = TransferTableObjectFields;\nexport type AggregateTransfersFnGroupFields = AggregateTransferManyGroupByFields;\n\n/**\n * @internal\n *\n * Aggregate Transfers using either a simple filter or queryBuilder\n *\n */\nexport default function aggregateTransfers(\n options: ClientFunctionOptions,\n): AggregateQueryBuilder<\n AggregateTransfersFnFields,\n AggregateTransfersFnStringFields,\n AggregateTransfersFnMetadataFields,\n AggregateTransfersFnGroupFields,\n AggregateTransfersFnOutput\n>;\nexport default function aggregateTransfers(\n options: ClientFunctionOptions,\n input: AggregateTransfersFnInput,\n fnOptions?: AggregateTransfersFnOptions,\n): StreamPromise<AggregateTransfersFnOutput>;\nexport default function aggregateTransfers(\n options: ClientFunctionOptions,\n input?: AggregateTransfersFnInput | undefined,\n fnOptions?: AggregateTransfersFnOptions,\n):\n | StreamPromise<AggregateTransfersFnOutput>\n | AggregateQueryBuilder<\n AggregateTransfersFnFields,\n AggregateTransfersFnStringFields,\n AggregateTransfersFnMetadataFields,\n AggregateTransfersFnGroupFields,\n AggregateTransfersFnOutput\n > {\n const { client } = options;\n\n if (input === undefined) {\n return new AggregateQueryBuilder<\n AggregateTransfersFnFields,\n AggregateTransfersFnStringFields,\n AggregateTransfersFnMetadataFields,\n AggregateTransfersFnGroupFields,\n AggregateTransfersFnOutput\n >({\n start(query) {\n return client.api.aggregateTransferMany({\n transfer: query.filter as FindTransferManyFilter,\n options: query.options as AggregateTransferManyTxOptions,\n groups: query.groups as AggregateTransferManyGroups,\n aggregators: query.aggregators as AggregateTransferManyAggregator[],\n });\n },\n modifiers(field, value) {\n if (['token', 'wallet', 'from_wallet', 'to_wallet'].includes(field)) {\n return getForeign(value as string | number);\n }\n if (field === 'transfer_group') {\n return getIdentifierFilter(value as string | number);\n }\n return value;\n },\n });\n }\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const {\n token,\n wallet,\n from_wallet,\n to_wallet,\n transfer_group,\n status,\n metadata,\n } = inputCopy;\n const filter: TransferFilter = {\n token: getForeign(token),\n wallet: getForeign(wallet),\n from_wallet: getForeign(from_wallet),\n to_wallet: getForeign(to_wallet),\n transfer_group: getIdentifierFilter(transfer_group),\n status,\n metadata,\n };\n\n return client.api.aggregateTransferMany({\n transfer: filter,\n groups: inputCopy.groups,\n aggregators: inputCopy.aggregators,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getForeign, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport { CreateContractTxInput } from '../../txs';\n\nimport {\n CreateContractFnInput,\n CreateContractFnOutput,\n CreateContractFnOptions,\n} from './create-contract.enums';\n\nconst validate = getValidator(SchemaNames.CreateContractFnInput);\n/**\n * @internal\n *\n */\nexport default function createContract(\n options: ClientFunctionOptions,\n input: CreateContractFnInput,\n fnOptions?: CreateContractFnOptions,\n): StreamPromise<CreateContractFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const apiInput: Partial<CreateContractTxInput> = {\n token: {\n foreign: inputCopy.foreign + '',\n metadata: inputCopy.metadata,\n owner: getForeign(inputCopy.owner),\n deposits: [\n {\n token: getForeign(inputCopy.value_token),\n amount: inputCopy.value_amount,\n },\n ],\n },\n };\n if (inputCopy.buyer) {\n if (inputCopy.buyer.latest_control_hash) {\n console.warn(\n 'deprecated: latest_control_hash is deprecated and will be ignored',\n );\n }\n apiInput.exchange = {\n from_wallet: getForeign(inputCopy.buyer.wallet),\n amount: inputCopy.buyer.amount || inputCopy.value_amount,\n from_token: getForeign(inputCopy.buyer.token || inputCopy.value_token),\n metadata: inputCopy.buyer.metadata,\n };\n }\n return client.api.createContract(apiInput as CreateContractTxInput);\n}\n","'use strict';\n\nimport { ClientFunctionOptions, CreateTransfersFnOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport { TransferDataDeposit } from '../../txs';\n\nimport {\n CreateDepositFnInput,\n CreateDepositFnOptions,\n CreateDepositFnOutput,\n} from './create-deposit.enums';\nimport {\n checkCopyObject,\n getForeign,\n getIdentifierFilter,\n getTxIdSync,\n modifyObject,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { ERROR_MESSAGES, InputError } from '../../lib/errors';\n\nconst validate = getValidator(SchemaNames.CreateDepositFnInput);\n/**\n * @internal\n *\n * Create a deposit transaction into a wallet, by issuing new tokens to the system.\n */\nexport default function createDeposit(\n options: ClientFunctionOptions,\n input: CreateDepositFnInput,\n fnOptions?: CreateDepositFnOptions,\n): StreamPromise<CreateDepositFnOutput> {\n const { client } = options;\n\n const preValidateCopy = checkCopyObject(\n input,\n 'token',\n client.getConfig('token'),\n );\n const { inputCopy, error } = validateClientFnInput({\n input: preValidateCopy,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n const token = inputCopy.token || client.getConfig('token');\n if (token === undefined) {\n throw new InputError({\n message: ERROR_MESSAGES.INPUT_NEEDS_TOKEN,\n data: input,\n });\n }\n\n const validatedOptions = inputCopy.options;\n delete inputCopy.options;\n const deposit: TransferDataDeposit = {\n ...inputCopy,\n identifier: inputCopy.identifier,\n transfer_group: getIdentifierFilter(inputCopy.transfer_group),\n token: getForeign(token),\n to_wallet: getForeign(inputCopy.wallet),\n type: 'deposit',\n };\n if (!deposit.identifier) {\n deposit.identifier = getTxIdSync(\n (deposit as unknown) as { [key: string]: unknown },\n );\n }\n\n return client.api.createTransfer({\n transfer: deposit,\n options: modifyObject<CreateTransfersFnOptions>(\n (validatedOptions as unknown) as { [k: string]: unknown },\n {\n return_balance: 'return_to_balance',\n create_wallet_if_not_exists: 'create_to_wallet_if_not_exists',\n },\n ),\n });\n}\n","'use strict';\n\nimport { TransferGroupStatusEnum, TransferTypeEnum } from '../../';\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport {\n getForeign,\n getTxIdSync,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n CreateExchangeFnInput,\n CreateExchangeFnOptions,\n CreateExchangeFnOutput,\n} from './create-exchange.enums';\n\nconst validate = getValidator(SchemaNames.CreateExchangeFnInput);\n/**\n * @internal\n *\n * Create an exchange transfer group - change one token in certain amount for another token of certain amount\n * The transfers are connected and either fail or succeed both\n */\nexport default function createExchange(\n options: ClientFunctionOptions,\n input: CreateExchangeFnInput,\n fnOptions?: CreateExchangeFnOptions,\n): StreamPromise<CreateExchangeFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const inputOptions = inputCopy.options;\n delete inputCopy.options;\n\n inputCopy.identifier ??= getTxIdSync(\n (inputCopy as unknown) as { [k: string]: unknown },\n );\n\n return client.api.createTransferGroup({\n transfer_group: {\n identifier: inputCopy.identifier,\n status: TransferGroupStatusEnum.closed,\n transfer_status: inputCopy.status ?? 'pending',\n metadata: inputCopy.metadata,\n children: [\n {\n identifier: inputCopy.from_identifier ?? getTxIdSync(),\n from_wallet: getForeign(inputCopy.from_wallet),\n to_wallet: getForeign(inputCopy.to_wallet),\n token: getForeign(inputCopy.from_token),\n type: !inputCopy.from_wallet\n ? TransferTypeEnum.deposit\n : TransferTypeEnum.transfer,\n amount: inputCopy.from_amount,\n metadata: inputCopy.metadata,\n force: inputCopy.force,\n },\n {\n identifier: inputCopy.to_identifier ?? getTxIdSync(),\n from_wallet: getForeign(inputCopy.to_wallet),\n to_wallet: getForeign(inputCopy.from_wallet),\n token: getForeign(inputCopy.to_token),\n type: !inputCopy.to_wallet\n ? TransferTypeEnum.deposit\n : TransferTypeEnum.transfer,\n amount: inputCopy.to_amount ?? inputCopy.from_amount,\n metadata: inputCopy.metadata,\n force: inputCopy.force,\n },\n ],\n },\n options: inputOptions,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getForeign, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n CreateTokenFnInput,\n CreateTokenFnOutput,\n CreateTokenFnOptions,\n} from './create-token.enums';\n\nconst validate = getValidator(SchemaNames.CreateTokenFnInput);\n/**\n * @internal\n *\n * Create a new Token in the system which can then be transferred between wallets\n */\nexport default function createToken(\n options: ClientFunctionOptions,\n input: CreateTokenFnInput,\n fnOptions?: CreateTokenFnOptions,\n): StreamPromise<CreateTokenFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n const clientOptions = inputCopy.options;\n delete inputCopy.options;\n return client.api.createToken({\n token: {\n ...inputCopy,\n belongs_to: getForeign(inputCopy.belongs_to),\n },\n options: clientOptions,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n checkCopyObject,\n getForeign,\n getIdentifierFilter,\n getTxIdSync,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { TransferData } from '../../txs';\nimport {\n CreateTransferFnInput,\n CreateTransferFnOptions,\n CreateTransferFnOutput,\n CreateTransferWildInput,\n} from './create-transfer.enums';\n\nconst validate = getValidator(SchemaNames.CreateTransferFnInput);\n/**\n * @internal\n *\n * Create a transfer of Token amount from one wallet to the other.\n */\nexport default function createTransfer(\n options: ClientFunctionOptions,\n input: CreateTransferFnInput,\n fnOptions?: CreateTransferFnOptions,\n): StreamPromise<CreateTransferFnOutput> {\n const { client } = options;\n\n const preValidateCopy = checkCopyObject(\n input,\n 'token',\n client.getConfig('token'),\n );\n const { inputCopy, error } = validateClientFnInput({\n input: preValidateCopy,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n const transfer = transferFnInputToTransferData(\n inputCopy,\n client.getConfig('token') as string | undefined,\n );\n if (!transfer.identifier) {\n transfer.identifier = getTxIdSync(\n (transfer as unknown) as { [key: string]: unknown },\n );\n }\n return client.api.createTransfer({\n transfer,\n options: inputCopy.options,\n });\n}\n\nexport function transferFnInputToTransferData(\n input: CreateTransferWildInput,\n token?: string,\n): TransferData {\n input.type = input.type || 'transfer';\n\n const transfer: Partial<TransferData> = {\n identifier: input.identifier,\n token: getForeign(input.token || token),\n amount: input.amount,\n metadata: input.metadata,\n status: input.status,\n type: input.type,\n transfer_group: getIdentifierFilter(input.transfer_group),\n created_at: input.created_at,\n };\n if (input.type === 'transfer') {\n if (input.latest_control_hash) {\n console.warn('deprecated: latest_control_hash is deprecated');\n }\n return {\n ...transfer,\n from_wallet: getForeign(input.from_wallet),\n to_wallet: getForeign(input.to_wallet),\n } as TransferData;\n }\n\n if (input.type === 'withdrawal') {\n if (input.latest_control_hash) {\n console.warn('deprecated: latest_control_hash is deprecated');\n }\n return {\n ...transfer,\n from_wallet: getForeign(input.wallet),\n } as TransferData;\n }\n\n if (input.type === 'deposit') {\n return {\n ...transfer,\n to_wallet: getForeign(input.wallet),\n } as TransferData;\n }\n}\n","'use strict';\n\nimport {\n ChildTransferDataFn,\n ClientFunctionOptions,\n CreateTransferWildInput,\n} from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getTxIdSync, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport { transferFnInputToTransferData } from '../create-transfer/create-transfer';\n\nimport {\n CreateTransferGroupFnInput,\n CreateTransferGroupFnOutput,\n CreateTransferGroupFnOptions,\n} from './create-transfer-group.enums';\n\nconst validate = getValidator(SchemaNames.CreateTransferGroupFnInput);\n/**\n * @internal\n *\n * Create a TransferGroup entity to group transfers into a logical or status locked group.\n * Can include the transfers in the same call or if non 'closed' TransferGroup, add the transfers later.\n * Can also include child TransferGroups to create a hierarchy\n *\n */\nexport default function createTransferGroup(\n options: ClientFunctionOptions,\n input: CreateTransferGroupFnInput,\n fnOptions?: CreateTransferGroupFnOptions,\n): StreamPromise<CreateTransferGroupFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const transferGroup = JSON.parse(JSON.stringify(inputCopy));\n delete transferGroup.options;\n if (transferGroup.children) {\n transferGroup.children = transferGroup.children.map(\n (child: ChildTransferDataFn) =>\n transferFnInputToTransferData(\n child as CreateTransferWildInput,\n client.getConfig('token') as string | undefined,\n ),\n );\n }\n if (!transferGroup.identifier) {\n transferGroup.identifier = getTxIdSync(\n (transferGroup as unknown) as { [key: string]: unknown },\n );\n }\n\n return client.api.createTransferGroup({\n transfer_group: transferGroup,\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions, CreateTransferWildInput } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getTxIdSync, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport { transferFnInputToTransferData } from '../create-transfer/create-transfer';\n\nimport {\n CreateTransfersFnInput,\n CreateTransfersFnOutput,\n CreateTransfersFnOptions,\n} from './create-transfers.enums';\n\nconst validate = getValidator(SchemaNames.CreateTransfersFnInput);\n/**\n * @internal\n *\n * Create multiple transfers with one call. Transfers are created in a transaction so it either succeeds or fails as one.\n * Will respect internal balance transfers to avoid latest_control_hash\n */\nexport default function createTransfers(\n options: ClientFunctionOptions,\n input: CreateTransfersFnInput,\n fnOptions?: CreateTransfersFnOptions,\n): StreamPromise<CreateTransfersFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n const transfers = inputCopy.transfers.map((data: CreateTransferWildInput) =>\n transferFnInputToTransferData(\n data,\n client.getConfig('token') as string | undefined,\n ),\n );\n for (const transfer of transfers) {\n if (!transfer.identifier) {\n transfer.identifier = getTxIdSync(\n (transfer as unknown) as { [key: string]: unknown },\n );\n }\n }\n return client.api.createTransferMany({\n transfers,\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n CreateWalletFnInput,\n CreateWalletFnOutput,\n CreateWalletFnOptions,\n} from './create-wallet.enums';\n\nconst validate = getValidator(SchemaNames.CreateWalletFnInput);\n/**\n * @internal\n *\n * Create a Wallet entity which can then transfer amounts of Tokens.\n */\nexport default function createWallet(\n options: ClientFunctionOptions,\n input: CreateWalletFnInput,\n fnOptions?: CreateWalletFnOptions,\n): StreamPromise<CreateWalletFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n const clientOptions = inputCopy.options;\n delete inputCopy.options;\n return client.api.createWallet({\n wallet: {\n ...inputCopy,\n },\n options: clientOptions,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions, CreateTransfersFnOptions } from '../';\nimport { ERROR_MESSAGES, InputError } from '../../lib/errors';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport { TransferDataWithdrawal } from '../../txs';\n\nimport {\n CreateWithdrawalFnInput,\n CreateWithdrawalFnOptions,\n CreateWithdrawalFnOutput,\n} from './create-withdrawal.enums';\nimport {\n checkCopyObject,\n getForeign,\n getIdentifierFilter,\n getTxIdSync,\n modifyObject,\n validateClientFnInput,\n} from '../../lib/utils';\n\nconst validate = getValidator(SchemaNames.CreateWithdrawalFnInput);\n/**\n * @internal\n *\n * Create a transfer withdrawing funds from a Wallet.\n * Will default to transferring funds to Token default Wallet.\n */\nexport default function createWithdrawal(\n options: ClientFunctionOptions,\n input: CreateWithdrawalFnInput,\n fnOptions?: CreateWithdrawalFnOptions,\n): StreamPromise<CreateWithdrawalFnOutput> {\n const { client } = options;\n\n const preValidateCopy = checkCopyObject(\n input,\n 'token',\n client.getConfig('token'),\n );\n const { inputCopy, error } = validateClientFnInput({\n input: preValidateCopy,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const validatedOptions = inputCopy.options;\n delete inputCopy.options;\n if (inputCopy.latest_control_hash) {\n console.warn('deprecated: latest_control_hash is deprecated');\n delete inputCopy.latest_control_hash;\n }\n const token = inputCopy.token || client.getConfig('token');\n if (token === undefined) {\n throw new InputError({\n message: ERROR_MESSAGES.INPUT_NEEDS_TOKEN,\n data: input,\n });\n }\n const withdrawal: TransferDataWithdrawal = {\n ...inputCopy,\n identifier: inputCopy.identifier,\n transfer_group: getIdentifierFilter(inputCopy.transfer_group),\n token: getForeign(token),\n from_wallet: getForeign(inputCopy.wallet),\n type: 'withdrawal',\n };\n if (!withdrawal.identifier) {\n withdrawal.identifier = getTxIdSync(\n (withdrawal as unknown) as { [key: string]: unknown },\n );\n }\n\n return client.api.createTransfer({\n transfer: withdrawal,\n options: modifyObject<CreateTransfersFnOptions>(\n (validatedOptions as unknown) as { [k: string]: unknown },\n {\n return_balance: 'return_from_balance',\n },\n ),\n });\n}\n","'use strict';\n\nimport { QueryBuilder } from '../../lib/query-builder';\nimport {\n BalanceFields,\n Balance,\n BalanceFilter,\n FindBalanceManyTxOptions,\n FindBalanceManyFilter,\n FindBalanceManyOrderingInput,\n} from '../../txs';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport {\n getForeign,\n orderByToOrder,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport { ClientFunctionOptions } from '../index';\n\nimport {\n FindBalancesFnInput,\n FindBalancesFnOutput,\n FindBalancesFnOptions,\n FindBalancesFnInputStringFields,\n} from './find-balances.enums';\n\nconst validate = getValidator(SchemaNames.FindBalancesFnInput);\n\nexport type FindBalancesFnFields = BalanceFields;\nexport type FindBalancesFnResultFields = keyof Balance;\nexport type FindBalancesFnStringFields =\n | FindBalancesFnInputStringFields\n | 'updated_at'\n | 'latest_control_hash';\nexport type FindBalancesFnMetadataFields = never;\n/**\n * @internal\n *\n * Search for Balances using either a simple filter or queryBuilder\n *\n */\nexport default function findBalances(\n options: ClientFunctionOptions,\n): QueryBuilder<\n FindBalancesFnFields,\n FindBalancesFnStringFields,\n FindBalancesFnMetadataFields,\n FindBalancesFnResultFields,\n FindBalancesFnOptions,\n FindBalancesFnOutput\n>;\nexport default function findBalances(\n options: ClientFunctionOptions,\n input: FindBalancesFnInput,\n fnOptions?: FindBalancesFnOptions,\n): StreamPromise<FindBalancesFnOutput>;\nexport default function findBalances(\n options: ClientFunctionOptions,\n input?: FindBalancesFnInput,\n fnOptions?: FindBalancesFnOptions,\n):\n | StreamPromise<FindBalancesFnOutput>\n | QueryBuilder<\n FindBalancesFnFields,\n FindBalancesFnStringFields,\n FindBalancesFnMetadataFields,\n FindBalancesFnResultFields,\n FindBalancesFnOptions,\n FindBalancesFnOutput\n > {\n const { client } = options;\n if (input === undefined) {\n return new QueryBuilder<\n FindBalancesFnFields,\n FindBalancesFnStringFields,\n FindBalancesFnMetadataFields,\n FindBalancesFnResultFields,\n FindBalancesFnOptions,\n FindBalancesFnOutput\n >({\n start(query) {\n return client.api.findBalanceMany({\n balance: query.filter as FindBalanceManyFilter,\n options: query.options as FindBalanceManyTxOptions,\n });\n },\n modifiers(field, value) {\n if (['wallet', 'token'].includes(field)) {\n return getForeign(value as string | number);\n }\n return value;\n },\n });\n }\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const filter: BalanceFilter = {};\n if (inputCopy.wallet) {\n filter.wallet = getForeign(inputCopy.wallet);\n }\n if (inputCopy.token) {\n filter.token = getForeign(inputCopy.token);\n }\n\n const orderBy = inputCopy.options?.order_by;\n delete inputCopy.options?.order_by;\n\n const findOptions = ({\n ...inputCopy.options,\n } as unknown) as FindBalanceManyTxOptions;\n if (!findOptions.order && orderBy) {\n findOptions.order = orderByToOrder(\n orderBy,\n ) as FindBalanceManyOrderingInput[];\n }\n return client.api.findBalanceMany({\n balance: filter,\n options: findOptions,\n });\n}\n","'use strict';\n\nimport {\n TokenTableBooleanFields,\n TokenTableNumberFields,\n TokenTableObjectFields,\n TokenTableStringFields,\n} from '../../db';\nimport { QueryBuilder } from '../../lib/query-builder';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport {\n getForeign,\n orderByToOrder,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n FindTokenManyFilter,\n FindTokenManyOrderingInput,\n FindTokenManyTxOptions,\n Token,\n TokenFilter,\n} from '../../txs';\nimport { ClientFunctionOptions } from '../index';\n\nimport {\n FindTokensFnInput,\n FindTokensFnInputStringFields,\n FindTokensFnOptions,\n FindTokensFnOutput,\n} from './find-tokens.enums';\n\nconst validate = getValidator(SchemaNames.FindTokensFnInput);\n\nexport type FindTokensFnFields =\n | TokenTableBooleanFields\n | TokenTableNumberFields;\nexport type FindTokensFnResultFields = keyof Token;\nexport type FindTokensFnStringFields =\n | TokenTableStringFields\n | FindTokensFnInputStringFields;\nexport type FindTokensFnMetadataFields = TokenTableObjectFields;\n/**\n * @internal\n *\n * Search for Tokens using either a simple filter or queryBuilder\n *\n */\nexport default function findTokens(\n options: ClientFunctionOptions,\n): QueryBuilder<\n FindTokensFnFields,\n FindTokensFnStringFields,\n FindTokensFnMetadataFields,\n FindTokensFnResultFields,\n FindTokensFnOptions,\n FindTokensFnOutput\n>;\nexport default function findTokens(\n options: ClientFunctionOptions,\n input: FindTokensFnInput,\n fnOptions?: FindTokensFnOptions,\n): StreamPromise<FindTokensFnOutput>;\nexport default function findTokens(\n options: ClientFunctionOptions,\n input?: FindTokensFnInput,\n fnOptions?: FindTokensFnOptions,\n):\n | StreamPromise<FindTokensFnOutput>\n | QueryBuilder<\n FindTokensFnFields,\n FindTokensFnStringFields,\n FindTokensFnMetadataFields,\n FindTokensFnResultFields,\n FindTokensFnOptions,\n FindTokensFnOutput\n > {\n const { client } = options;\n if (input === undefined) {\n return new QueryBuilder<\n FindTokensFnFields,\n FindTokensFnStringFields,\n FindTokensFnMetadataFields,\n FindTokensFnResultFields,\n FindTokensFnOptions,\n FindTokensFnOutput\n >({\n start(query) {\n return client.api.findTokenMany({\n token: query.filter as FindTokenManyFilter,\n options: query.options as FindTokenManyTxOptions,\n });\n },\n modifiers(field, value) {\n if (['belongs_to'].includes(field)) {\n return getForeign(value as string | number);\n }\n return value;\n },\n });\n }\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const filter: TokenFilter = {\n foreign: inputCopy.foreign ? inputCopy.foreign + '' : undefined,\n type: inputCopy.type,\n metadata: inputCopy.metadata,\n };\n if (inputCopy.belongs_to) {\n filter.belongs_to = getForeign(inputCopy.belongs_to);\n }\n\n const orderBy = inputCopy.options?.order_by;\n delete inputCopy.options?.order_by;\n\n const findOptions = ({\n ...inputCopy.options,\n } as unknown) as FindTokenManyTxOptions;\n if (!findOptions.order && orderBy) {\n findOptions.order = orderByToOrder(orderBy) as FindTokenManyOrderingInput[];\n }\n return client.api.findTokenMany({\n token: filter,\n options: findOptions,\n });\n}\n","'use strict';\n\nimport {\n ClientFunctionOptions,\n FindTransferGroupsFnInputStringFields,\n} from '../';\nimport {\n QueryBuilder,\n TransferGroupTableNumberFields,\n TransferGroupTableObjectFields,\n TransferGroupTableStringFields,\n} from '../..';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport {\n getIdentifierFilter,\n orderByToOrder,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n TransferGroup,\n TransferGroupFilter,\n FindTransferGroupManyTxOptions,\n FindTransferGroupManyOrderingInput,\n FindTransferGroupManyFilter,\n} from '../../txs';\n\nimport {\n FindTransferGroupsFnInput,\n FindTransferGroupsFnOutput,\n FindTransferGroupsFnOptions,\n} from './find-transfer-groups.enums';\n\nconst validate = getValidator(SchemaNames.FindTransferGroupsFnInput);\n\nexport type FindTransferGroupsFnFields = TransferGroupTableNumberFields;\nexport type FindTransferGroupsFnResultFields = keyof TransferGroup;\nexport type FindTransferGroupsFnStringFields =\n | TransferGroupTableStringFields\n | FindTransferGroupsFnInputStringFields;\nexport type FindTransferGroupsFnMetadataFields = TransferGroupTableObjectFields;\n/**\n * @internal\n *\n * Search for TransferGroups using either a simple filter or queryBuilder\n *\n */\nexport default function findTransferGroups(\n options: ClientFunctionOptions,\n): QueryBuilder<\n FindTransferGroupsFnFields,\n FindTransferGroupsFnStringFields,\n FindTransferGroupsFnMetadataFields,\n FindTransferGroupsFnResultFields,\n FindTransferGroupsFnOptions,\n FindTransferGroupsFnOutput\n>;\nexport default function findTransferGroups(\n options: ClientFunctionOptions,\n input: FindTransferGroupsFnInput,\n fnOptions?: FindTransferGroupsFnOptions,\n): StreamPromise<FindTransferGroupsFnOutput>;\nexport default function findTransferGroups(\n options: ClientFunctionOptions,\n input?: FindTransferGroupsFnInput,\n fnOptions?: FindTransferGroupsFnOptions,\n):\n | StreamPromise<FindTransferGroupsFnOutput>\n | QueryBuilder<\n FindTransferGroupsFnFields,\n FindTransferGroupsFnStringFields,\n FindTransferGroupsFnMetadataFields,\n FindTransferGroupsFnResultFields,\n FindTransferGroupsFnOptions,\n FindTransferGroupsFnOutput\n > {\n const { client } = options;\n\n if (input === undefined) {\n return new QueryBuilder<\n FindTransferGroupsFnFields,\n FindTransferGroupsFnStringFields,\n FindTransferGroupsFnMetadataFields,\n FindTransferGroupsFnResultFields,\n FindTransferGroupsFnOptions,\n FindTransferGroupsFnOutput\n >({\n start(query) {\n return client.api.findTransferGroupMany({\n transfer_group: query.filter as FindTransferGroupManyFilter,\n options: query.options as FindTransferGroupManyTxOptions,\n });\n },\n modifiers(field, value) {\n if (['transfer_group', 'reverses'].includes(field)) {\n return getIdentifierFilter(value as string | number);\n }\n return value;\n },\n });\n }\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const { identifier, transfer_status, status, metadata, type } = inputCopy;\n const filter: TransferGroupFilter = {\n identifier: identifier as string,\n transfer_status,\n status,\n metadata,\n type,\n };\n if (inputCopy.reverses) {\n filter.reverses = getIdentifierFilter(inputCopy.reverses);\n }\n\n const orderBy = inputCopy.options?.order_by;\n delete inputCopy.options?.order_by;\n\n const findOptions: FindTransferGroupManyTxOptions = {\n ...inputCopy.options,\n };\n if (!findOptions.order && orderBy) {\n findOptions.order = orderByToOrder(\n orderBy,\n ) as FindTransferGroupManyOrderingInput[];\n }\n\n return client.api.findTransferGroupMany({\n transfer_group: filter,\n options: findOptions,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions, FindTransfersFnInputStringFields } from '../';\nimport {\n TransferTableBooleanFields,\n TransferTableNumberFields,\n TransferTableObjectFields,\n TransferTableStringFields,\n} from '../../db';\nimport { QueryBuilder } from '../../lib/query-builder';\nimport { ERROR_MESSAGES, InputError } from '../../lib/errors';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport {\n getForeign,\n getIdentifierFilter,\n orderByToOrder,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n FindTransferManyFilter,\n FindTransferManyOrderingInput,\n FindTransferManyTxOptions,\n Transfer,\n TransferFilter,\n} from '../../txs';\n\nimport {\n FindTransfersFnInput,\n FindTransfersFnOutput,\n FindTransfersFnOptions,\n} from './find-transfers.enums';\n\nconst validate = getValidator(SchemaNames.FindTransfersFnInput);\n\nexport type FindTransfersFnFields =\n | TransferTableBooleanFields\n | TransferTableNumberFields;\nexport type FindTransfersFnResultFields = keyof Transfer;\nexport type FindTransfersFnStringFields =\n | TransferTableStringFields\n | FindTransfersFnInputStringFields;\nexport type FindTransfersFnMetadataFields = TransferTableObjectFields;\n\n/**\n * @internal\n *\n * Search for Transfers using either a simple filter or queryBuilder\n *\n */\nexport default function findTransfers(\n options: ClientFunctionOptions,\n): QueryBuilder<\n FindTransfersFnFields,\n FindTransfersFnStringFields,\n FindTransfersFnMetadataFields,\n FindTransfersFnResultFields,\n FindTransfersFnOptions,\n FindTransfersFnOutput\n>;\nexport default function findTransfers(\n options: ClientFunctionOptions,\n input: FindTransfersFnInput,\n fnOptions?: FindTransfersFnOptions,\n): StreamPromise<FindTransfersFnOutput>;\nexport default function findTransfers(\n options: ClientFunctionOptions,\n input?: FindTransfersFnInput,\n fnOptions?: FindTransfersFnOptions,\n):\n | StreamPromise<FindTransfersFnOutput>\n | QueryBuilder<\n FindTransfersFnFields,\n FindTransfersFnStringFields,\n FindTransfersFnMetadataFields,\n FindTransfersFnResultFields,\n FindTransfersFnOptions,\n FindTransfersFnOutput\n > {\n const { client } = options;\n\n if (input === undefined) {\n return new QueryBuilder<\n FindTransfersFnFields,\n FindTransfersFnStringFields,\n FindTransfersFnMetadataFields,\n FindTransfersFnResultFields,\n FindTransfersFnOptions,\n FindTransfersFnOutput\n >({\n start(query) {\n return client.api.findTransferMany({\n transfer: query.filter as FindTransferManyFilter,\n options: query.options as FindTransferManyTxOptions,\n });\n },\n modifiers(field, value) {\n if (['token', 'wallet', 'from_wallet', 'to_wallet'].includes(field)) {\n return getForeign(value as string | number);\n }\n if (field === 'transfer_group') {\n return getIdentifierFilter(value as string | number);\n }\n return value;\n },\n });\n }\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const { token, wallet, from_wallet, to_wallet } = inputCopy;\n const filter: TransferFilter = {\n token: getForeign(token),\n wallet: getForeign(wallet),\n from_wallet: getForeign(from_wallet),\n to_wallet: getForeign(to_wallet),\n };\n if (inputCopy.transfer_group) {\n filter.transfer_group = getIdentifierFilter(inputCopy.transfer_group);\n }\n if (inputCopy.status) {\n filter.status = inputCopy.status;\n }\n if (inputCopy.metadata) {\n filter.metadata = inputCopy.metadata;\n }\n\n inputCopy.options ??= {};\n\n const orderBy = inputCopy.options.order_by;\n delete inputCopy.options.order_by;\n\n if (inputCopy.options.return_running_balance) {\n if (inputCopy.options.return_running_balance_for_wallet) {\n throw new InputError({\n message: ERROR_MESSAGES.CONFLICTING_OPTIONS,\n data: {\n options: inputCopy.options,\n },\n });\n }\n if (!filter.wallet) {\n throw new InputError({\n message: ERROR_MESSAGES.RUNNING_BALANCE_WITHOUT_WALLET,\n data: {\n input: inputCopy,\n },\n });\n }\n inputCopy.options.return_running_balance_for_wallet = inputCopy.wallet;\n }\n const returnRunningBalance =\n inputCopy.options.return_running_balance_for_wallet;\n delete inputCopy.options.return_running_balance_for_wallet;\n\n if (inputCopy.options.return_signed_amount) {\n if (inputCopy.options.return_signed_amount_for_wallet) {\n throw new InputError({\n message: ERROR_MESSAGES.CONFLICTING_OPTIONS,\n data: {\n options: inputCopy.options,\n },\n });\n }\n if (!filter.wallet) {\n throw new InputError({\n message: ERROR_MESSAGES.SIGNED_AMOUNT_WITHOUT_WALLET,\n data: {\n input: inputCopy,\n },\n });\n }\n inputCopy.options.return_signed_amount_for_wallet = inputCopy.wallet;\n }\n const returnSigned = inputCopy.options.return_signed_amount_for_wallet;\n delete inputCopy.options.return_signed_amount_for_wallet;\n\n const findOptions = ({\n ...inputCopy.options,\n } as unknown) as FindTransferManyTxOptions;\n\n if (!findOptions.order && orderBy) {\n findOptions.order = orderByToOrder(\n orderBy,\n ) as FindTransferManyOrderingInput[];\n }\n if (returnRunningBalance) {\n findOptions.return_running_balance_for_wallet = getForeign(\n returnRunningBalance,\n );\n }\n if (returnSigned) {\n findOptions.return_signed_amount_for_wallet = getForeign(returnSigned);\n }\n\n return client.api.findTransferMany({\n transfer: filter,\n options: findOptions,\n });\n}\n","'use strict';\nimport { ClientFunctionOptions } from '../';\nimport { WalletTableObjectFields, WalletTableStringFields } from '../../db';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { QueryBuilder } from '../../lib/query-builder';\nimport {\n getForeign,\n orderByToOrder,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n WalletFilter,\n FindWalletManyTxOptions,\n FindWalletManyOrderingInput,\n WalletWithBalanceFields,\n FindWalletManyFilter,\n AdvancedWalletFilterNumberFields,\n} from '../../txs';\n\nimport {\n FindWalletsFnInput,\n FindWalletsFnOutput,\n FindWalletsFnOptions,\n} from './find-wallets.enums';\n\nconst validate = getValidator(SchemaNames.FindWalletsFnInput);\nexport type FindWalletsFnFields = AdvancedWalletFilterNumberFields;\nexport type FindWalletsFnResultFields = WalletWithBalanceFields;\nexport type FindWalletsFnStringFields = WalletTableStringFields;\nexport type FindWalletsFnMetadataFields = WalletTableObjectFields;\n/**\n * @internal\n *\n * Search for Wallets using either a simple filter or queryBuilder\n *\n */\nexport default function findWallets(\n options: ClientFunctionOptions,\n): QueryBuilder<\n FindWalletsFnFields,\n FindWalletsFnStringFields,\n FindWalletsFnMetadataFields,\n FindWalletsFnResultFields,\n FindWalletsFnOptions,\n FindWalletsFnOutput\n>;\nexport default function findWallets(\n options: ClientFunctionOptions,\n input: FindWalletsFnInput,\n fnOptions?: FindWalletsFnOptions,\n): StreamPromise<FindWalletsFnOutput>;\nexport default function findWallets(\n options: ClientFunctionOptions,\n input?: FindWalletsFnInput,\n fnOptions?: FindWalletsFnOptions,\n):\n | StreamPromise<FindWalletsFnOutput>\n | QueryBuilder<\n FindWalletsFnFields,\n FindWalletsFnStringFields,\n FindWalletsFnMetadataFields,\n FindWalletsFnResultFields,\n FindWalletsFnOptions,\n FindWalletsFnOutput\n > {\n const { client } = options;\n\n if (input === undefined) {\n return new QueryBuilder<\n FindWalletsFnFields,\n FindWalletsFnStringFields,\n FindWalletsFnMetadataFields,\n FindWalletsFnResultFields,\n FindWalletsFnOptions,\n FindWalletsFnOutput\n >({\n start(query) {\n return client.api.findWalletMany({\n wallet: query.filter as FindWalletManyFilter,\n options: query.options as FindWalletManyTxOptions,\n });\n },\n optionsModifiers(key, value) {\n if (key === 'include_balance_for_token' && typeof value !== 'object') {\n return getForeign(value as string | number);\n }\n return value;\n },\n });\n }\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const inputOptions = inputCopy.options ?? {};\n delete inputCopy.options;\n\n const filter: WalletFilter = {\n ...inputCopy,\n };\n\n const orderBy = inputOptions.order_by;\n delete inputOptions.order_by;\n\n const findOptions: FindWalletManyTxOptions = {\n ...inputOptions,\n };\n if (!findOptions.order && orderBy) {\n findOptions.order = orderByToOrder(\n orderBy,\n ) as FindWalletManyOrderingInput[];\n }\n\n return client.api.findWalletMany({\n wallet: filter,\n options: findOptions,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { ERROR_MESSAGES, InputError } from '../../lib/errors';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n GetBalanceFnInput,\n GetBalanceFnOptions,\n GetBalanceFnOutput,\n} from './get-balance.enums';\nimport {\n checkCopyObject,\n getForeign,\n isFutureDate,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { StreamPromise } from '../../lib/stream-promise';\n\nconst validate = getValidator(SchemaNames.GetBalanceFnInput);\n/**\n * @internal\n *\n * Get a specific token/wallet balance\n */\nexport default function getBalance(\n options: ClientFunctionOptions,\n input: GetBalanceFnInput,\n fnOptions?: GetBalanceFnOptions,\n): StreamPromise<GetBalanceFnOutput> {\n const { client } = options;\n\n const preValidateCopy = checkCopyObject(\n input,\n 'token',\n client.getConfig('token'),\n );\n const { inputCopy, error } = validateClientFnInput({\n input: preValidateCopy,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n if (inputCopy.datetime && isFutureDate(inputCopy.datetime)) {\n throw new InputError({\n message: ERROR_MESSAGES.BAL_FUTURE_DATETIME,\n data: inputCopy,\n });\n }\n const token = inputCopy.token || client.getConfig('token');\n if (token === undefined) {\n throw new InputError({\n message: ERROR_MESSAGES.INPUT_NEEDS_TOKEN,\n data: input,\n });\n }\n\n return client.api.getBalance({\n balance: {\n wallet: getForeign(inputCopy.wallet),\n token: getForeign(token),\n datetime: inputCopy.datetime,\n },\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { ERROR_MESSAGES, InputError } from '../../lib/errors';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getForeign, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n GetBalanceHistoryFnInput,\n GetBalanceHistoryFnOutput,\n GetBalanceHistoryFnOptions,\n} from './get-balance-history.enums';\n\nconst validate = getValidator(SchemaNames.GetBalanceHistoryFnInput);\n/**\n * @internal\n *\n * Get a list of changes to token/wallet balance\n */\nexport default function getBalanceHistory(\n options: ClientFunctionOptions,\n input: GetBalanceHistoryFnInput,\n fnOptions?: GetBalanceHistoryFnOptions,\n): StreamPromise<GetBalanceHistoryFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n const token = inputCopy.token || client.getConfig('token');\n if (token === undefined) {\n throw new InputError({\n message: ERROR_MESSAGES.INPUT_NEEDS_TOKEN,\n data: input,\n });\n }\n return client.api.getBalanceHistory({\n balance: {\n wallet: getForeign(inputCopy.wallet),\n token: getForeign(token),\n },\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n GetFlagsFnInput,\n GetFlagsFnOutput,\n GetFlagsFnOptions,\n} from './get-flags.enums';\n\nconst validate = getValidator(SchemaNames.GetFlagsFnInput);\n/**\n * @internal\n *\n * Retrieve the current state of configurable Flags for your WAPI instance\n */\nexport default function getFlags(\n options: ClientFunctionOptions,\n input?: GetFlagsFnInput,\n fnOptions?: GetFlagsFnOptions,\n): StreamPromise<GetFlagsFnOutput> {\n const { client } = options;\n\n const { error, inputCopy } = validateClientFnInput({\n input: input || {},\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n return client.api.getFlags({\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n GetStatisticsFnInput,\n GetStatisticsFnOutput,\n GetStatisticsFnOptions,\n} from './get-statistics.enums';\n\nconst validate = getValidator(SchemaNames.GetStatisticsFnInput);\n/**\n * @internal\n *\n * Get aggregated statistics about WAPI entities\n */\nexport default function getStatistics(\n options: ClientFunctionOptions,\n input?: GetStatisticsFnInput,\n fnOptions?: GetStatisticsFnOptions,\n): StreamPromise<GetStatisticsFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input: input || {},\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n return client.api.getStatistics({\n model: inputCopy.model || 'Transfer',\n aggregator: inputCopy.aggregator || 'count',\n groups: inputCopy.groups,\n filter: inputCopy.filter,\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { ERROR_MESSAGES, InputError } from '../../lib/errors';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport {\n checkCopyObject,\n getForeign,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n GetTokenFnInput,\n GetTokenFnOutput,\n GetTokenFnOptions,\n} from './get-token.enums';\n\nconst validate = getValidator(SchemaNames.GetTokenFnInput);\n/**\n * @internal\n *\n * Get information about token\n */\nexport default function getToken(\n options: ClientFunctionOptions,\n input: GetTokenFnInput = {},\n fnOptions?: GetTokenFnOptions,\n): StreamPromise<GetTokenFnOutput> {\n const { client } = options;\n\n const preValidate = checkCopyObject(\n input,\n 'foreign',\n client.getConfig('token'),\n );\n const { inputCopy, error } = validateClientFnInput({\n input: preValidate,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n const token = inputCopy.foreign || client.getConfig('token');\n if (token === undefined) {\n throw new InputError({\n message: ERROR_MESSAGES.INPUT_NEEDS_TOKEN,\n data: input,\n });\n }\n return client.api.getToken({\n token: getForeign(token),\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getIdentifierFilter, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n GetTransferFnInput,\n GetTransferFnOutput,\n GetTransferFnOptions,\n} from './get-transfer.enums';\n\nconst validate = getValidator(SchemaNames.GetTransferFnInput);\n/**\n * @internal\n *\n * Get information about a specific transfer\n */\nexport default function getTransfer(\n options: ClientFunctionOptions,\n input: GetTransferFnInput,\n fnOptions?: GetTransferFnOptions,\n): StreamPromise<GetTransferFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n return client.api.getTransfer({\n transfer: getIdentifierFilter(inputCopy.transfer),\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getIdentifierFilter, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n GetTransferGroupFnInput,\n GetTransferGroupFnOutput,\n GetTransferGroupFnOptions,\n} from './get-transfer-group.enums';\n\nconst validate = getValidator(SchemaNames.GetTransferGroupFnInput);\n/**\n * @internal\n *\n * Get TransferGroup information\n */\nexport default function getTransferGroup(\n options: ClientFunctionOptions,\n input: GetTransferGroupFnInput,\n fnOptions?: GetTransferGroupFnOptions,\n): StreamPromise<GetTransferGroupFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n return client.api.getTransferGroup({\n transfer_group: getIdentifierFilter(inputCopy.transfer_group),\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getForeign, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n GetWalletFnInput,\n GetWalletFnOptions,\n GetWalletFnOutput,\n} from './get-wallet.enums';\n\nconst validate = getValidator(SchemaNames.GetWalletFnInput);\n/**\n * @internal\n *\n * Get information about wallet\n */\nexport default function getWallet(\n options: ClientFunctionOptions,\n input: GetWalletFnInput,\n fnOptions?: GetWalletFnOptions,\n): StreamPromise<GetWalletFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n return client.api.getWallet({\n wallet: getForeign(inputCopy.wallet),\n options: inputCopy.options,\n });\n}\n","import { getValidator, SchemaNames } from '../../lib/validator';\n// GUARDS\n/*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\nconst inputValidator = getValidator(SchemaNames.ImportDataFnInput);\nimport { ImportDataFnInput } from './import-data.enums';\nexport function isImportDataFnInput(\n input: unknown,\n): input is ImportDataFnInput {\n const { error } = inputValidator(input);\n return error === undefined;\n}\nconst outputValidator = getValidator(SchemaNames.ImportDataFnOutput);\nimport { ImportDataFnOutput } from './import-data.enums';\nexport function isImportDataFnOutput(\n input: unknown,\n): input is ImportDataFnOutput {\n const { error } = outputValidator(input);\n return error === undefined;\n}\nconst chunkValidator = getValidator(SchemaNames.ImportDataFnStreamChunk);\nimport { ImportDataFnStreamChunk } from './import-data.enums';\nexport function isImportDataFnStreamChunk(\n input: unknown,\n): input is ImportDataFnStreamChunk {\n const { error } = chunkValidator(input);\n return error === undefined;\n}\nconst optionsValidator = getValidator(SchemaNames.ImportDataFnOptions);\nimport { ImportDataFnOptions } from './import-data.enums';\nexport function isImportDataFnOptions(\n input: unknown,\n): input is ImportDataFnOptions {\n const { error } = optionsValidator(input);\n return error === undefined;\n}\n// GUARDS\n","'use strict';\n\nimport { ClientFunctionOptions, ImportDataFnStreamChunk } from '../';\nimport { ERROR_MESSAGES, ValidationError } from '../../lib/errors';\nimport { TransformStream } from '../../lib/isomorphic/node/streams';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { StreamPromiseInput } from '../../lib/stream-promise-input';\nimport {\n getForeign,\n getIdentifierFilter,\n omit,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n ImportActionReverseTransfer,\n ImportActionsTxInput,\n ImportActionsTxStreamChunk,\n} from '../../txs';\nimport { transferFnInputToTransferData } from '../create-transfer/create-transfer';\n\nexport * from './import-data.guards';\n\nimport {\n ImportDataFnInput,\n ImportDataFnOutput,\n ImportDataFnOptions,\n} from './import-data.enums';\nimport {\n isImportDataFnOptions,\n isImportDataFnStreamChunk,\n} from './import-data.guards';\n\nconst validate = getValidator(SchemaNames.ImportDataFnInput);\n\n/**\n * @internal\n *\n */\nexport default function importData(\n options: ClientFunctionOptions,\n input?: ImportDataFnOptions,\n): StreamPromiseInput<ImportDataFnOutput, ImportDataFnStreamChunk>;\nexport default function importData(\n options: ClientFunctionOptions,\n input: ImportDataFnInput,\n fnOptions?: ImportDataFnOptions,\n): StreamPromise<ImportDataFnOutput>;\nexport default function importData(\n options: ClientFunctionOptions,\n input?: ImportDataFnInput | ImportDataFnOptions,\n fnOptions?: ImportDataFnOptions,\n):\n | StreamPromise<ImportDataFnOutput>\n | StreamPromiseInput<ImportDataFnOutput, ImportDataFnStreamChunk> {\n const { client } = options;\n\n if (input === undefined && fnOptions === undefined) {\n return client.api.importActionsStream<ImportDataFnStreamChunk>(\n undefined,\n getTransform(),\n );\n }\n if (fnOptions === undefined && isImportDataFnOptions(input)) {\n return client.api.importActionsStream(input, getTransform());\n }\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n return client.api.importActions(inputCopy as ImportActionsTxInput);\n}\n\nconst chunkValidator = getValidator(SchemaNames.ImportDataFnStreamChunk);\n\n// Factory to get data Transform function\n// We will transform chunks to TX version and grouping in chunks of 50\nfunction getTransform(): TransformStream<\n ImportDataFnStreamChunk,\n ImportActionsTxInput\n> {\n let buffer: ImportActionsTxStreamChunk[] = [];\n return new TransformStream<ImportDataFnStreamChunk, ImportActionsTxInput>({\n async dataTransform(data) {\n if (data === undefined) {\n return {\n actions: buffer,\n };\n }\n if (!isImportDataFnStreamChunk(data)) {\n const { error } = chunkValidator(data);\n throw new ValidationError({\n message: ERROR_MESSAGES.INPUT_INVALID,\n data: {\n data,\n error,\n },\n });\n }\n buffer.push(transformToTxChunk(data));\n if (buffer.length >= 50) {\n const copy = buffer;\n buffer = [];\n return {\n actions: copy,\n };\n }\n return;\n },\n });\n}\n\nfunction transformToTxChunk(\n data: ImportDataFnStreamChunk,\n): ImportActionsTxStreamChunk {\n switch (data.target) {\n case 'reverse_transfer':\n return {\n target: 'reverse_transfer',\n data: {\n transfer: getIdentifierFilter(data.data.transfer),\n reverse: {\n status: 'finished',\n ...omit(data.data, 'transfer'),\n },\n },\n } as ImportActionReverseTransfer;\n case 'reverse_transfer_group':\n return {\n target: 'reverse_transfer_group',\n data: {\n transfer_group: getIdentifierFilter(data.data.transfer_group),\n reverse: {\n transfer_status: 'finished',\n ...omit(data.data, 'transfer_group'),\n },\n },\n };\n case 'wallet':\n return data;\n case 'token':\n return {\n target: 'token',\n data: {\n ...data.data,\n belongs_to: getForeign(data.data.belongs_to),\n },\n };\n case 'transfer':\n return {\n target: 'transfer',\n data: {\n ...transferFnInputToTransferData({\n ...data.data,\n status: 'pending',\n }),\n status: data.data.status,\n status_finalized_at: data.data.status_finalized_at,\n },\n };\n case 'transfer_group':\n return {\n target: 'transfer_group',\n data: {\n ...data.data,\n children: data.data.children.map((child) =>\n transferFnInputToTransferData(child),\n ),\n },\n };\n }\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getIdentifierFilter, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n ReverseTransferFnInput,\n ReverseTransferFnOptions,\n ReverseTransferFnOutput,\n} from './reverse-transfer.enums';\n\nconst validate = getValidator(SchemaNames.ReverseTransferFnInput);\n/**\n * @internal\n *\n * Reverse a transfer of value between two wallets\n * will cancel pending transfers and create opposite transfers for finished ones.\n */\nexport default function reverseTransfer(\n options: ClientFunctionOptions,\n input: ReverseTransferFnInput,\n fnOptions?: ReverseTransferFnOptions,\n): StreamPromise<ReverseTransferFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n if (inputCopy.extend_metadata) {\n console.warn(\n 'deprecated: extend_metadata is deprecated. Use metadata_action instead',\n );\n }\n\n return client.api.reverseTransfer({\n transfer: getIdentifierFilter(inputCopy.transfer),\n reverse: {\n force: inputCopy.force,\n metadata: inputCopy.metadata,\n extend_metadata: inputCopy.extend_metadata,\n identifier: inputCopy.identifier,\n status: inputCopy.status,\n },\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getIdentifierFilter, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n ReverseTransferGroupFnInput,\n ReverseTransferGroupFnOptions,\n ReverseTransferGroupFnOutput,\n} from './reverse-transfer-group.enums';\n\nconst validate = getValidator(SchemaNames.ReverseTransferGroupFnInput);\n/**\n * @internal\n *\n * Similar to reverseTransfer will reverse value transfers, however it will reverse the whole\n * group with its children by creating a new group with opposite transfers.\n */\nexport default function reverseTransferGroup(\n options: ClientFunctionOptions,\n input: ReverseTransferGroupFnInput,\n fnOptions?: ReverseTransferGroupFnOptions,\n): StreamPromise<ReverseTransferGroupFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n if (inputCopy.extend_metadata) {\n console.warn(\n 'deprecated: extend_metadata is deprecated. Use metadata_action instead',\n );\n }\n\n return client.api.reverseTransferGroup({\n transfer_group: getIdentifierFilter(inputCopy.transfer_group),\n reverse: {\n status: inputCopy.status,\n force: inputCopy.force,\n transfer_status: inputCopy.transfer_status,\n identifier: inputCopy.identifier,\n metadata: inputCopy.metadata,\n transfer_metadata: inputCopy.transfer_metadata,\n extend_metadata: inputCopy.extend_metadata,\n transfer_extend_metadata: inputCopy.transfer_extend_metadata,\n },\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { FindTransferManyFilter, Transfer, TransferFilter } from '../../txs';\nimport { ClientFunctionOptions, FindTransfersFnInputStringFields } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport {\n getForeign,\n getIdentifierFilter,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n ReverseTransfersFnInput,\n ReverseTransfersFnModifications,\n ReverseTransfersFnOptions,\n ReverseTransfersFnOutput,\n} from './reverse-transfers.enums';\nimport { ReverseQueryBuilder } from '../../lib/query-builder';\nimport {\n TransferTableBooleanFields,\n TransferTableNumberFields,\n TransferTableObjectFields,\n TransferTableStringFields,\n} from '../../';\n\nconst validate = getValidator(SchemaNames.ReverseTransfersFnInput);\n\nexport type ReverseTransfersFnFields =\n | TransferTableBooleanFields\n | TransferTableNumberFields;\nexport type ReverseTransfersFnResultFields = keyof Transfer;\nexport type ReverseTransfersFnStringFields =\n | TransferTableStringFields\n | FindTransfersFnInputStringFields;\nexport type ReverseTransfersFnMetadataFields = TransferTableObjectFields;\n\n/**\n * @internal\n *\n */\nexport default function reverseTransfers(\n options: ClientFunctionOptions,\n): ReverseQueryBuilder<\n ReverseTransfersFnFields,\n ReverseTransfersFnStringFields,\n ReverseTransfersFnMetadataFields,\n ReverseTransfersFnModifications,\n ReverseTransfersFnOutput\n>;\nexport default function reverseTransfers(\n options: ClientFunctionOptions,\n input: ReverseTransfersFnInput,\n fnOptions: ReverseTransfersFnOptions,\n): StreamPromise<ReverseTransfersFnOutput>;\n\nexport default function reverseTransfers(\n options: ClientFunctionOptions,\n input?: ReverseTransfersFnInput,\n fnOptions?: ReverseTransfersFnOptions,\n):\n | StreamPromise<ReverseTransfersFnOutput>\n | ReverseQueryBuilder<\n ReverseTransfersFnFields,\n ReverseTransfersFnStringFields,\n ReverseTransfersFnMetadataFields,\n ReverseTransfersFnModifications,\n ReverseTransfersFnOutput\n > {\n const { client } = options;\n\n if (input === undefined) {\n return new ReverseQueryBuilder<\n ReverseTransfersFnFields,\n ReverseTransfersFnStringFields,\n ReverseTransfersFnMetadataFields,\n ReverseTransfersFnModifications,\n ReverseTransfersFnOutput\n >({\n start(query) {\n return client.api.reverseTransferMany({\n transfer: query.filter as FindTransferManyFilter,\n reverse: query.reverse,\n options: query.options,\n });\n },\n modifiers(field, value) {\n if (['token', 'wallet', 'from_wallet', 'to_wallet'].includes(field)) {\n return getForeign(value as string | number);\n }\n if (field === 'transfer_group') {\n return getIdentifierFilter(value as string | number);\n }\n return value;\n },\n });\n }\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const { token, wallet, from_wallet, to_wallet } = inputCopy;\n const filter: TransferFilter = {\n token: getForeign(token),\n wallet: getForeign(wallet),\n from_wallet: getForeign(from_wallet),\n to_wallet: getForeign(to_wallet),\n };\n if (inputCopy.transfer_group) {\n filter.transfer_group = getIdentifierFilter(inputCopy.transfer_group);\n }\n if (inputCopy.status) {\n filter.status = inputCopy.status;\n }\n if (inputCopy.metadata) {\n filter.metadata = inputCopy.metadata;\n }\n\n return client.api.reverseTransferMany({\n transfer: filter,\n reverse: inputCopy.reverse,\n options: inputCopy.options,\n });\n}\n","/* Allowed filtering functions */\n\n/**\n * Allowed filtering functions\n */\nexport interface Flags {\n /**\n * Allow setting timestamps in transfer insert/update statements\n */\n allow_timestamps?: boolean;\n /**\n * Is running in production mode?\n */\n production?: boolean;\n}\n/* DbFilterMetadata */\n\nexport interface DbFilterMetadata {\n /**\n * This interface was referenced by `DbFilterMetadata`'s JSON-Schema definition\n * via the `patternProperty` '.*'.\n */\n [k: string]: string | boolean;\n}\n/* Filtering for where and orWhere */\n\n/**\n * Filtering for where and orWhere\n */\nexport interface DbFilterFunctionWhereInner {\n function: DbFilterFunctionBasic;\n inner: any[];\n}\n/* Filtering for where and orWhere */\n\n/**\n * Filtering for where and orWhere\n */\nexport interface DbFilterFunctionWherePrimitive {\n function: DbFilterFunctionBasic;\n field: string;\n operator?: DbFilterOperatorExtended;\n value: string | number | boolean;\n}\n/* Filtering for where and orWhere */\n\n/**\n * Filtering for where and orWhere\n */\nexport interface DbFilterFunctionWherePrimitiveForeign {\n function: DbFilterFunctionBasic;\n field: string;\n operator?: DbFilterOperatorExtended;\n value:\n | (string | number | boolean)\n | {\n foreign: string | number;\n };\n}\n/* Filtering for where and orWhere */\n\n/**\n * Filtering for where and orWhere\n */\nexport interface DbFilterFunctionWherePrimitiveIdentifier {\n function: DbFilterFunctionBasic;\n field: string;\n operator?: DbFilterOperatorExtended;\n value:\n | (string | number | boolean)\n | {\n identifier: string | number;\n };\n}\n/* Filtering for where and orWhere */\n\n/**\n * Filtering for where and orWhere\n */\nexport interface DbFilterFunctionWhereMetadataPrimitive {\n function: DbFilterFunctionMetadataBasic;\n field: string;\n operator?: DbFilterOperatorExtended;\n value: string | number | boolean;\n}\n/* DbFilterFunctionMetadataBasic */\n\nexport type DbFilterFunctionMetadataBasic = 'whereMetadata' | 'orWhereMetadata';\n/* Filtering for where and orWhere */\n\n/**\n * Filtering for where and orWhere\n */\nexport interface DbFilterFunctionWhereObject {\n function: DbFilterFunctionBasic;\n value: {\n [k: string]: any;\n };\n}\n/* DbFilterFunctionBasic */\n\nexport type DbFilterFunctionBasic = 'where' | 'orWhere';\n/* Filtering for whereIn and orWhereIn */\n\n/**\n * Filtering for whereIn and orWhereIn\n */\nexport interface DbFilterFunctionWhereIns {\n function: DbFilterFunctionIn;\n field: string;\n value: (string | number)[];\n}\n/* DbFilterFunctionIn */\n\nexport type DbFilterFunctionIn = 'whereIn' | 'orWhereIn';\n/* Filtering for whereIn and orWhereIn for metadata */\n\n/**\n * Filtering for whereIn and orWhereIn for metadata\n */\nexport interface DbFilterFunctionWhereMetadataIns {\n function: DbFilterFunctionMetadataIn;\n field: string;\n value: (string | number)[];\n}\n/* DbFilterFunctionMetadataIn */\n\nexport type DbFilterFunctionMetadataIn =\n | 'whereMetadataIn'\n | 'orWhereMetadataIn';\n/* Filtering for whereNull and orWhereNull, whereNotNull and orWhereNotNull for metadata */\n\n/**\n * Filtering for whereNull and orWhereNull, whereNotNull and orWhereNotNull for metadata\n */\nexport interface DbFilterFunctionWhereMetadataNulls {\n function: DbFilterFunctionMetadataNull;\n field: string;\n}\n/* DbFilterFunctionMetadataNull */\n\nexport type DbFilterFunctionMetadataNull =\n | 'whereMetadataNull'\n | 'orWhereMetadataNull'\n | 'whereMetadataNotNull'\n | 'orWhereMetadataNotNull';\n/* Filtering for whereNull and orWhereNull, whereNotNull and orWhereNotNull */\n\n/**\n * Filtering for whereNull and orWhereNull, whereNotNull and orWhereNotNull\n */\nexport interface DbFilterFunctionWhereNulls {\n function: DbFilterFunctionNull;\n field: string;\n}\n/* DbFilterFunctionNull */\n\nexport type DbFilterFunctionNull =\n | 'whereNull'\n | 'orWhereNull'\n | 'whereNotNull'\n | 'orWhereNotNull';\n/* Allowed filtering operators, ignored when value is not primitive */\n\n/**\n * Allowed filtering operators, ignored when value is not primitive\n */\nexport type DbFilterOperator = '=' | '>=' | '<=' | '<' | '>';\n/* Allowed filtering operators for strings */\n\n/**\n * Allowed filtering operators for strings\n */\nexport type DbFilterOperatorString = 'like' | 'ilike';\n/* Allowed filtering operators, ignored when value is not primitive */\n\n/**\n * Allowed filtering operators, ignored when value is not primitive\n */\nexport type DbFilterOperatorExtended =\n | '='\n | '>='\n | '<='\n | '<'\n | '>'\n | 'like'\n | 'ilike';\n/* DB type values for TokenType */\n\n/**\n * DB type values for TokenType\n */\nexport type TokenType = 'value' | 'share' | 'group' | 'contract';\n/* DB type values for TokenStatus */\n\n/**\n * DB type values for TokenStatus\n */\nexport type TokenStatus = 'active' | 'dw-only' | 'disabled';\n/* DB type values for TransferGroupStatus */\n\n/**\n * DB type values for TransferGroupStatus\n */\nexport type TransferGroupStatus = 'open' | 'closed';\n/* DB type values for TransferStatus */\n\n/**\n * DB type values for TransferStatus\n */\nexport type TransferStatus = 'pending' | 'finished' | 'cancelled';\n/* DB type input values for TransferStatus */\n\n/**\n * DB type input values for TransferStatus\n */\nexport type TransferStatusInput = 'pending' | 'finished';\n/* DB type values for TransferGroupType */\n\n/**\n * DB type values for TransferGroupType\n */\nexport type TransferGroupType = 'regular' | 'exchange' | 'distribution';\n/* DB type values for TransferType */\n\n/**\n * DB type values for TransferType\n */\nexport type TransferType = 'transfer' | 'deposit' | 'withdrawal';\n/* DB type values for WalletType */\n\n/**\n * DB type values for WalletType\n */\nexport type WalletType = 'token' | 'house' | 'regular';\n/* DB type values for WalletStatus */\n\n/**\n * DB type values for WalletStatus\n */\nexport type WalletStatus = 'active' | 'disabled';\n/* DB type values for WapiSettingType */\n\n/**\n * DB type values for WapiSettingType\n */\nexport type WapiSettingType = 'flag' | 'setting';\n/* DB Model Names */\n\n/**\n * DB Model Names\n */\nexport type DbModelName =\n | 'Token'\n | 'TransferGroup'\n | 'TransferLog'\n | 'Transfer'\n | 'WalletTokenSetting'\n | 'Wallet'\n | 'WapiSetting';\n/* undefined */\n\nexport enum DbFilterFunctionMetadataBasicEnum {\n whereMetadata = 'whereMetadata',\n orWhereMetadata = 'orWhereMetadata',\n}\n\nexport enum DbFilterFunctionBasicEnum {\n where = 'where',\n orWhere = 'orWhere',\n}\n\nexport enum DbFilterFunctionInEnum {\n whereIn = 'whereIn',\n orWhereIn = 'orWhereIn',\n}\n\nexport enum DbFilterFunctionMetadataInEnum {\n whereMetadataIn = 'whereMetadataIn',\n orWhereMetadataIn = 'orWhereMetadataIn',\n}\n\nexport enum DbFilterFunctionMetadataNullEnum {\n whereMetadataNull = 'whereMetadataNull',\n orWhereMetadataNull = 'orWhereMetadataNull',\n whereMetadataNotNull = 'whereMetadataNotNull',\n orWhereMetadataNotNull = 'orWhereMetadataNotNull',\n}\n\nexport enum DbFilterFunctionNullEnum {\n whereNull = 'whereNull',\n orWhereNull = 'orWhereNull',\n whereNotNull = 'whereNotNull',\n orWhereNotNull = 'orWhereNotNull',\n}\n\nexport enum DbFilterOperatorEnum {\n '=' = '=',\n '>=' = '>=',\n '<=' = '<=',\n '<' = '<',\n '>' = '>',\n}\n\nexport enum DbFilterOperatorStringEnum {\n like = 'like',\n ilike = 'ilike',\n}\n\nexport enum DbFilterOperatorExtendedEnum {\n '=' = '=',\n '>=' = '>=',\n '<=' = '<=',\n '<' = '<',\n '>' = '>',\n like = 'like',\n ilike = 'ilike',\n}\n\nexport enum TokenTypeEnum {\n value = 'value',\n share = 'share',\n group = 'group',\n contract = 'contract',\n}\n\nexport enum TokenStatusEnum {\n active = 'active',\n 'dw-only' = 'dw-only',\n disabled = 'disabled',\n}\n\nexport enum TransferGroupStatusEnum {\n open = 'open',\n closed = 'closed',\n}\n\nexport enum TransferStatusEnum {\n pending = 'pending',\n finished = 'finished',\n cancelled = 'cancelled',\n}\n\nexport enum TransferStatusInputEnum {\n pending = 'pending',\n finished = 'finished',\n}\n\nexport enum TransferGroupTypeEnum {\n regular = 'regular',\n exchange = 'exchange',\n distribution = 'distribution',\n}\n\nexport enum TransferTypeEnum {\n transfer = 'transfer',\n deposit = 'deposit',\n withdrawal = 'withdrawal',\n}\n\nexport enum WalletTypeEnum {\n token = 'token',\n house = 'house',\n regular = 'regular',\n}\n\nexport enum WalletStatusEnum {\n active = 'active',\n disabled = 'disabled',\n}\n\nexport enum WapiSettingTypeEnum {\n flag = 'flag',\n setting = 'setting',\n}\n\nexport enum DbModelNameEnum {\n Token = 'Token',\n TransferGroup = 'TransferGroup',\n TransferLog = 'TransferLog',\n Transfer = 'Transfer',\n WalletTokenSetting = 'WalletTokenSetting',\n Wallet = 'Wallet',\n WapiSetting = 'WapiSetting',\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { ConstsSchema, Flags } from '../../db';\nimport { InputError } from '../../lib/errors';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport { SetFlagsTxOptions } from '../../txs';\n\nimport { SetFlagsFnInput, SetFlagsFnOutput } from './set-flags.enums';\n\nconst validate = getValidator(SchemaNames.SetFlagsFnInput);\n/**\n * @internal\n *\n * Configure WAPI instance Flags\n */\nexport default function setFlags(\n options: ClientFunctionOptions,\n input: SetFlagsFnInput,\n fnOptions?: SetFlagsTxOptions,\n): StreamPromise<SetFlagsFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n const flagKeys = Object.keys(ConstsSchema.definitions.Flags.properties);\n const flags: Partial<Flags> = {};\n flagKeys.forEach((key: string) => {\n if (key in inputCopy) {\n flags[key as keyof Flags] = inputCopy[key as keyof Flags];\n }\n });\n\n if (Object.keys(flags).length < 1) {\n throw new InputError({\n message: `One of [${flagKeys.join()}] is required`,\n data: input,\n });\n }\n\n return client.api.setFlags({\n flags: flags as Flags,\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getForeign, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n UpdateTokenFnInput,\n UpdateTokenFnOptions,\n UpdateTokenFnOutput,\n} from './update-token.enums';\n\nconst validate = getValidator(SchemaNames.UpdateTokenFnInput);\n/**\n * @internal\n * Update token object\n */\nexport default function updateToken(\n options: ClientFunctionOptions,\n input: UpdateTokenFnInput,\n fnOptions?: UpdateTokenFnOptions,\n): StreamPromise<UpdateTokenFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n return client.api.updateToken({\n token: getForeign(inputCopy.token),\n update: {\n public: inputCopy.public,\n metadata: inputCopy.metadata,\n status: inputCopy.status,\n },\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getIdentifierFilter, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\n\nimport {\n UpdateTransferFnInput,\n UpdateTransferFnOptions,\n UpdateTransferFnOutput,\n} from './update-transfer.enums';\n\nconst validate = getValidator(SchemaNames.UpdateTransferFnInput);\n/**\n * @internal\n *\n * Update the status of a Transfer (pending to finished or cancelled)\n */\nexport default function updateTransfer(\n options: ClientFunctionOptions,\n input: UpdateTransferFnInput,\n fnOptions?: UpdateTransferFnOptions,\n): StreamPromise<UpdateTransferFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n return client.api.updateTransfer({\n transfer: getIdentifierFilter(inputCopy.transfer),\n update: {\n status: inputCopy.status,\n metadata: inputCopy.metadata,\n },\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getIdentifierFilter, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport { UpdateTransferGroupData } from '../../txs';\n\nimport {\n UpdateTransferGroupFnInput,\n UpdateTransferGroupFnOutput,\n UpdateTransferGroupFnOptions,\n} from './update-transfer-group.enums';\n\nconst validate = getValidator(SchemaNames.UpdateTransferGroupFnInput);\n/**\n * @internal\n *\n * Update the status and transfer_status of a TransferGroup\n */\nexport default function updateTransferGroup(\n options: ClientFunctionOptions,\n input: UpdateTransferGroupFnInput,\n fnOptions?: UpdateTransferGroupFnOptions,\n): StreamPromise<UpdateTransferGroupFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n return client.api.updateTransferGroup({\n transfer_group: getIdentifierFilter(inputCopy.transfer_group),\n update: {\n transfer_status: inputCopy.transfer_status,\n status: inputCopy.status,\n } as UpdateTransferGroupData,\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport {\n ClientFunctionOptions,\n FindTransferGroupsFnInputStringFields,\n} from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getIdentifierFilter, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n FindTransferGroupManyFilter,\n TransferGroup,\n TransferGroupTableNumberFields,\n TransferGroupTableObjectFields,\n TransferGroupTableStringFields,\n UpdateTransferGroupData,\n} from '../../';\n\nimport {\n UpdateTransferGroupsFnInput,\n UpdateTransferGroupsFnOutput,\n UpdateTransferGroupsFnOptions,\n} from './update-transfer-groups.enums';\nimport { UpdateQueryBuilder } from '../../lib/query-builder';\nimport { UpdateTransferGroupManyTxOptions } from '../../txs';\n\nexport type UpdateTransferGroupsFnFields = TransferGroupTableNumberFields;\nexport type UpdateTransferGroupsFnResultFields = keyof TransferGroup;\nexport type UpdateTransferGroupsFnStringFields =\n | TransferGroupTableStringFields\n | FindTransferGroupsFnInputStringFields;\nexport type UpdateTransferGroupsFnMetadataFields = TransferGroupTableObjectFields;\n\nconst validate = getValidator(SchemaNames.UpdateTransferGroupsFnInput);\n/**\n * @internal\n *\n */\nexport default function updateTransferGroups(\n options: ClientFunctionOptions,\n): UpdateQueryBuilder<\n UpdateTransferGroupsFnFields,\n UpdateTransferGroupsFnStringFields,\n UpdateTransferGroupsFnMetadataFields,\n UpdateTransferGroupsFnResultFields,\n UpdateTransferGroupData,\n UpdateTransferGroupsFnOutput\n>;\nexport default function updateTransferGroups(\n options: ClientFunctionOptions,\n input: UpdateTransferGroupsFnInput,\n fnOptions?: UpdateTransferGroupsFnOptions,\n): StreamPromise<UpdateTransferGroupsFnOutput>;\nexport default function updateTransferGroups(\n options: ClientFunctionOptions,\n input?: UpdateTransferGroupsFnInput,\n fnOptions?: UpdateTransferGroupsFnOptions,\n):\n | StreamPromise<UpdateTransferGroupsFnOutput>\n | UpdateQueryBuilder<\n UpdateTransferGroupsFnFields,\n UpdateTransferGroupsFnStringFields,\n UpdateTransferGroupsFnMetadataFields,\n UpdateTransferGroupsFnResultFields,\n UpdateTransferGroupData,\n UpdateTransferGroupsFnOutput\n > {\n const { client } = options;\n\n if (input === undefined) {\n return new UpdateQueryBuilder<\n UpdateTransferGroupsFnFields,\n UpdateTransferGroupsFnStringFields,\n UpdateTransferGroupsFnMetadataFields,\n UpdateTransferGroupsFnResultFields,\n UpdateTransferGroupData,\n UpdateTransferGroupsFnOutput\n >({\n start(query) {\n return client.api.updateTransferGroupMany({\n transfer_group: query.filter as FindTransferGroupManyFilter,\n update: (query.update as unknown) as UpdateTransferGroupData,\n options: query.options as UpdateTransferGroupManyTxOptions,\n });\n },\n modifiers(field, value) {\n if (['transfer_group', 'reverses'].includes(field)) {\n return getIdentifierFilter(value as string | number);\n }\n return value;\n },\n });\n }\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const { transfer_status, status, metadata, type, update } = inputCopy;\n\n const filter: FindTransferGroupManyFilter = {\n transfer_status,\n status,\n metadata,\n type,\n };\n\n if (inputCopy.reverses) {\n filter.reverses = getIdentifierFilter(inputCopy.reverses);\n }\n\n return client.api.updateTransferGroupMany({\n transfer_group: filter,\n update,\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions, FindTransfersFnInputStringFields } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport {\n getForeign,\n getIdentifierFilter,\n validateClientFnInput,\n} from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n FindTransferManyFilter,\n Transfer,\n TransferFilter,\n TransferTableBooleanFields,\n TransferTableNumberFields,\n TransferTableObjectFields,\n TransferTableStringFields,\n} from '../../';\n\nimport {\n UpdateTransfersFnInput,\n UpdateTransfersFnOutput,\n UpdateTransfersFnOptions,\n UpdateTransfersFnUpdateFields,\n} from './update-transfers.enums';\nimport { UpdateQueryBuilder } from '../../lib/query-builder';\n\nexport type UpdateTransfersFnFields =\n | TransferTableBooleanFields\n | TransferTableNumberFields;\nexport type UpdateTransfersFnResultFields = keyof Transfer;\nexport type UpdateTransfersFnStringFields =\n | TransferTableStringFields\n | FindTransfersFnInputStringFields;\nexport type UpdateTransfersFnMetadataFields = TransferTableObjectFields;\n\nconst validate = getValidator(SchemaNames.UpdateTransfersFnInput);\n/**\n * @internal\n *\n */\nexport default function updateTransfers(\n options: ClientFunctionOptions,\n): UpdateQueryBuilder<\n UpdateTransfersFnFields,\n UpdateTransfersFnStringFields,\n UpdateTransfersFnMetadataFields,\n UpdateTransfersFnResultFields,\n UpdateTransfersFnUpdateFields,\n UpdateTransfersFnOutput\n>;\nexport default function updateTransfers(\n options: ClientFunctionOptions,\n input: UpdateTransfersFnInput,\n fnOptions?: UpdateTransfersFnOptions,\n): StreamPromise<UpdateTransfersFnOutput>;\nexport default function updateTransfers(\n options: ClientFunctionOptions,\n input?: UpdateTransfersFnInput,\n fnOptions?: UpdateTransfersFnOptions,\n):\n | StreamPromise<UpdateTransfersFnOutput>\n | UpdateQueryBuilder<\n UpdateTransfersFnFields,\n UpdateTransfersFnStringFields,\n UpdateTransfersFnMetadataFields,\n UpdateTransfersFnResultFields,\n UpdateTransfersFnUpdateFields,\n UpdateTransfersFnOutput\n > {\n const { client } = options;\n\n if (input === undefined) {\n return new UpdateQueryBuilder<\n UpdateTransfersFnFields,\n UpdateTransfersFnStringFields,\n UpdateTransfersFnMetadataFields,\n UpdateTransfersFnResultFields,\n UpdateTransfersFnUpdateFields,\n UpdateTransfersFnOutput\n >({\n start(query) {\n return client.api.updateTransferMany({\n transfer: query.filter as FindTransferManyFilter,\n update: query.update,\n options: query.options,\n });\n },\n modifiers(field, value) {\n if (['token', 'wallet', 'from_wallet', 'to_wallet'].includes(field)) {\n return getForeign(value as string | number);\n }\n if (field === 'transfer_group') {\n return getIdentifierFilter(value as string | number);\n }\n return value;\n },\n });\n }\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n if (error) {\n throw error;\n }\n\n const { token, wallet, from_wallet, to_wallet } = inputCopy;\n const filter: TransferFilter = {\n token: getForeign(token),\n wallet: getForeign(wallet),\n from_wallet: getForeign(from_wallet),\n to_wallet: getForeign(to_wallet),\n };\n if (inputCopy.transfer_group) {\n filter.transfer_group = getIdentifierFilter(inputCopy.transfer_group);\n }\n if (inputCopy.status) {\n filter.status = inputCopy.status;\n }\n if (inputCopy.metadata) {\n filter.metadata = inputCopy.metadata;\n }\n\n return client.api.updateTransferMany({\n transfer: filter,\n update: inputCopy.update,\n options: inputCopy.options,\n });\n}\n","'use strict';\n\nimport { ClientFunctionOptions } from '../';\nimport { StreamPromise } from '../../lib/stream-promise';\nimport { getForeign, validateClientFnInput } from '../../lib/utils';\nimport { getValidator, SchemaNames } from '../../lib/validator';\nimport {\n UpdateWalletFnInput,\n UpdateWalletFnOptions,\n UpdateWalletFnOutput,\n} from './update-wallet.enums';\n\nconst validate = getValidator(SchemaNames.UpdateWalletFnInput);\n/**\n * @internal\n * Update Wallet\n */\nexport default function updateWallet(\n options: ClientFunctionOptions,\n input: UpdateWalletFnInput,\n fnOptions?: UpdateWalletFnOptions,\n): StreamPromise<UpdateWalletFnOutput> {\n const { client } = options;\n\n const { inputCopy, error } = validateClientFnInput({\n input,\n options: fnOptions,\n validate,\n });\n\n if (error) {\n throw error;\n }\n\n return client.api.updateWallet({\n wallet: getForeign(inputCopy.wallet),\n update: {\n metadata: inputCopy.metadata,\n status: inputCopy.status,\n name: inputCopy.name,\n },\n options: inputCopy.options,\n });\n}\n","import { Client } from '../client';\nimport { getValidator, SchemaNames } from '../lib/validator';\n// Consts\nexport * from './fn-consts.enums';\nimport FnConstsSchema from './fn-consts.schema.json';\n\n/**\n * @internal\n */\nexport interface ClientFunctionOptions {\n client: Client;\n}\n\n// FNIMPORTS\n/*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\nimport aggregateTransfers, {\n AggregateTransfersFnFields,\n AggregateTransfersFnStringFields,\n AggregateTransfersFnMetadataFields,\n AggregateTransfersFnGroupFields,\n} from './aggregate-transfers/aggregate-transfers';\nimport createContract from './create-contract/create-contract';\nimport createDeposit from './create-deposit/create-deposit';\nimport createExchange from './create-exchange/create-exchange';\nimport createToken from './create-token/create-token';\nimport createTransfer from './create-transfer/create-transfer';\nimport createTransferGroup from './create-transfer-group/create-transfer-group';\nimport createTransfers from './create-transfers/create-transfers';\nimport createWallet from './create-wallet/create-wallet';\nimport createWithdrawal from './create-withdrawal/create-withdrawal';\nimport findBalances, {\n FindBalancesFnFields,\n FindBalancesFnMetadataFields,\n FindBalancesFnStringFields,\n FindBalancesFnResultFields,\n} from './find-balances/find-balances';\nimport findTokens, {\n FindTokensFnFields,\n FindTokensFnMetadataFields,\n FindTokensFnStringFields,\n FindTokensFnResultFields,\n} from './find-tokens/find-tokens';\nimport findTransferGroups, {\n FindTransferGroupsFnFields,\n FindTransferGroupsFnMetadataFields,\n FindTransferGroupsFnStringFields,\n FindTransferGroupsFnResultFields,\n} from './find-transfer-groups/find-transfer-groups';\nimport findTransfers, {\n FindTransfersFnFields,\n FindTransfersFnMetadataFields,\n FindTransfersFnStringFields,\n FindTransfersFnResultFields,\n} from './find-transfers/find-transfers';\nimport findWallets, {\n FindWalletsFnFields,\n FindWalletsFnMetadataFields,\n FindWalletsFnStringFields,\n FindWalletsFnResultFields,\n} from './find-wallets/find-wallets';\nimport getBalance from './get-balance/get-balance';\nimport getBalanceHistory from './get-balance-history/get-balance-history';\nimport getFlags from './get-flags/get-flags';\nimport getStatistics from './get-statistics/get-statistics';\nimport getToken from './get-token/get-token';\nimport getTransfer from './get-transfer/get-transfer';\nimport getTransferGroup from './get-transfer-group/get-transfer-group';\nimport getWallet from './get-wallet/get-wallet';\nimport importData, {\n isImportDataFnOptions,\n isImportDataFnInput,\n} from './import-data/import-data';\nimport reverseTransfer from './reverse-transfer/reverse-transfer';\nimport reverseTransferGroup from './reverse-transfer-group/reverse-transfer-group';\nimport reverseTransfers, {\n ReverseTransfersFnFields,\n ReverseTransfersFnStringFields,\n ReverseTransfersFnMetadataFields,\n} from './reverse-transfers/reverse-transfers';\nimport setFlags from './set-flags/set-flags';\nimport updateToken from './update-token/update-token';\nimport updateTransfer from './update-transfer/update-transfer';\nimport updateTransferGroup from './update-transfer-group/update-transfer-group';\nimport updateTransferGroups, {\n UpdateTransferGroupsFnFields,\n UpdateTransferGroupsFnMetadataFields,\n UpdateTransferGroupsFnStringFields,\n UpdateTransferGroupsFnResultFields,\n} from './update-transfer-groups/update-transfer-groups';\nimport updateTransfers, {\n UpdateTransfersFnFields,\n UpdateTransfersFnMetadataFields,\n UpdateTransfersFnStringFields,\n UpdateTransfersFnResultFields,\n} from './update-transfers/update-transfers';\nimport updateWallet from './update-wallet/update-wallet';\nimport AggregateTransfersFnInputSchema from './aggregate-transfers/aggregate-transfers.schema.input.json';\nimport AggregateTransfersFnOutputSchema from './aggregate-transfers/aggregate-transfers.schema.output.json';\nimport CreateContractFnInputSchema from './create-contract/create-contract.schema.input.json';\nimport CreateContractFnOutputSchema from './create-contract/create-contract.schema.output.json';\nimport CreateDepositFnInputSchema from './create-deposit/create-deposit.schema.input.json';\nimport CreateDepositFnOutputSchema from './create-deposit/create-deposit.schema.output.json';\nimport CreateExchangeFnInputSchema from './create-exchange/create-exchange.schema.input.json';\nimport CreateExchangeFnOutputSchema from './create-exchange/create-exchange.schema.output.json';\nimport CreateTokenFnInputSchema from './create-token/create-token.schema.input.json';\nimport CreateTokenFnOutputSchema from './create-token/create-token.schema.output.json';\nimport CreateTransferFnInputSchema from './create-transfer/create-transfer.schema.input.json';\nimport CreateTransferFnOutputSchema from './create-transfer/create-transfer.schema.output.json';\nimport CreateTransferGroupFnInputSchema from './create-transfer-group/create-transfer-group.schema.input.json';\nimport CreateTransferGroupFnOutputSchema from './create-transfer-group/create-transfer-group.schema.output.json';\nimport CreateTransfersFnInputSchema from './create-transfers/create-transfers.schema.input.json';\nimport CreateTransfersFnOutputSchema from './create-transfers/create-transfers.schema.output.json';\nimport CreateWalletFnInputSchema from './create-wallet/create-wallet.schema.input.json';\nimport CreateWalletFnOutputSchema from './create-wallet/create-wallet.schema.output.json';\nimport CreateWithdrawalFnInputSchema from './create-withdrawal/create-withdrawal.schema.input.json';\nimport CreateWithdrawalFnOutputSchema from './create-withdrawal/create-withdrawal.schema.output.json';\nimport FindBalancesFnInputSchema from './find-balances/find-balances.schema.input.json';\nimport FindBalancesFnOutputSchema from './find-balances/find-balances.schema.output.json';\nimport FindTokensFnInputSchema from './find-tokens/find-tokens.schema.input.json';\nimport FindTokensFnOutputSchema from './find-tokens/find-tokens.schema.output.json';\nimport FindTransferGroupsFnInputSchema from './find-transfer-groups/find-transfer-groups.schema.input.json';\nimport FindTransferGroupsFnOutputSchema from './find-transfer-groups/find-transfer-groups.schema.output.json';\nimport FindTransfersFnInputSchema from './find-transfers/find-transfers.schema.input.json';\nimport FindTransfersFnOutputSchema from './find-transfers/find-transfers.schema.output.json';\nimport FindWalletsFnInputSchema from './find-wallets/find-wallets.schema.input.json';\nimport FindWalletsFnOutputSchema from './find-wallets/find-wallets.schema.output.json';\nimport GetBalanceFnInputSchema from './get-balance/get-balance.schema.input.json';\nimport GetBalanceFnOutputSchema from './get-balance/get-balance.schema.output.json';\nimport GetBalanceHistoryFnInputSchema from './get-balance-history/get-balance-history.schema.input.json';\nimport GetBalanceHistoryFnOutputSchema from './get-balance-history/get-balance-history.schema.output.json';\nimport GetFlagsFnInputSchema from './get-flags/get-flags.schema.input.json';\nimport GetFlagsFnOutputSchema from './get-flags/get-flags.schema.output.json';\nimport GetStatisticsFnInputSchema from './get-statistics/get-statistics.schema.input.json';\nimport GetStatisticsFnOutputSchema from './get-statistics/get-statistics.schema.output.json';\nimport GetTokenFnInputSchema from './get-token/get-token.schema.input.json';\nimport GetTokenFnOutputSchema from './get-token/get-token.schema.output.json';\nimport GetTransferFnInputSchema from './get-transfer/get-transfer.schema.input.json';\nimport GetTransferFnOutputSchema from './get-transfer/get-transfer.schema.output.json';\nimport GetTransferGroupFnInputSchema from './get-transfer-group/get-transfer-group.schema.input.json';\nimport GetTransferGroupFnOutputSchema from './get-transfer-group/get-transfer-group.schema.output.json';\nimport GetWalletFnInputSchema from './get-wallet/get-wallet.schema.input.json';\nimport GetWalletFnOutputSchema from './get-wallet/get-wallet.schema.output.json';\nimport ImportDataFnInputSchema from './import-data/import-data.schema.input.json';\nimport ImportDataFnOutputSchema from './import-data/import-data.schema.output.json';\nimport ReverseTransferFnInputSchema from './reverse-transfer/reverse-transfer.schema.input.json';\nimport ReverseTransferFnOutputSchema from './reverse-transfer/reverse-transfer.schema.output.json';\nimport ReverseTransferGroupFnInputSchema from './reverse-transfer-group/reverse-transfer-group.schema.input.json';\nimport ReverseTransferGroupFnOutputSchema from './reverse-transfer-group/reverse-transfer-group.schema.output.json';\nimport ReverseTransfersFnInputSchema from './reverse-transfers/reverse-transfers.schema.input.json';\nimport ReverseTransfersFnOutputSchema from './reverse-transfers/reverse-transfers.schema.output.json';\nimport SetFlagsFnInputSchema from './set-flags/set-flags.schema.input.json';\nimport SetFlagsFnOutputSchema from './set-flags/set-flags.schema.output.json';\nimport UpdateTokenFnInputSchema from './update-token/update-token.schema.input.json';\nimport UpdateTokenFnOutputSchema from './update-token/update-token.schema.output.json';\nimport UpdateTransferFnInputSchema from './update-transfer/update-transfer.schema.input.json';\nimport UpdateTransferFnOutputSchema from './update-transfer/update-transfer.schema.output.json';\nimport UpdateTransferGroupFnInputSchema from './update-transfer-group/update-transfer-group.schema.input.json';\nimport UpdateTransferGroupFnOutputSchema from './update-transfer-group/update-transfer-group.schema.output.json';\nimport UpdateTransferGroupsFnInputSchema from './update-transfer-groups/update-transfer-groups.schema.input.json';\nimport UpdateTransferGroupsFnOutputSchema from './update-transfer-groups/update-transfer-groups.schema.output.json';\nimport UpdateTransfersFnInputSchema from './update-transfers/update-transfers.schema.input.json';\nimport UpdateTransfersFnOutputSchema from './update-transfers/update-transfers.schema.output.json';\nimport UpdateWalletFnInputSchema from './update-wallet/update-wallet.schema.input.json';\nimport UpdateWalletFnOutputSchema from './update-wallet/update-wallet.schema.output.json';\n// FNIMPORTS\n/**\n * @internal\n */\nexport {\n FnConstsSchema,\n // FNEXPORTS\n /*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\n aggregateTransfers,\n AggregateTransfersFnFields,\n AggregateTransfersFnMetadataFields,\n AggregateTransfersFnStringFields,\n AggregateTransfersFnGroupFields,\n createContract,\n createDeposit,\n createExchange,\n createToken,\n createTransfer,\n createTransferGroup,\n createTransfers,\n createWallet,\n createWithdrawal,\n findBalances,\n FindBalancesFnFields,\n FindBalancesFnMetadataFields,\n FindBalancesFnStringFields,\n FindBalancesFnResultFields,\n findTokens,\n FindTokensFnFields,\n FindTokensFnMetadataFields,\n FindTokensFnStringFields,\n FindTokensFnResultFields,\n findTransferGroups,\n FindTransferGroupsFnFields,\n FindTransferGroupsFnMetadataFields,\n FindTransferGroupsFnStringFields,\n FindTransferGroupsFnResultFields,\n findTransfers,\n FindTransfersFnFields,\n FindTransfersFnMetadataFields,\n FindTransfersFnStringFields,\n FindTransfersFnResultFields,\n findWallets,\n FindWalletsFnFields,\n FindWalletsFnMetadataFields,\n FindWalletsFnStringFields,\n FindWalletsFnResultFields,\n getBalance,\n getBalanceHistory,\n getFlags,\n getStatistics,\n getToken,\n getTransfer,\n getTransferGroup,\n getWallet,\n importData,\n isImportDataFnOptions,\n isImportDataFnInput,\n reverseTransfer,\n reverseTransferGroup,\n reverseTransfers,\n ReverseTransfersFnFields,\n ReverseTransfersFnMetadataFields,\n ReverseTransfersFnStringFields,\n setFlags,\n updateToken,\n updateTransfer,\n updateTransferGroup,\n updateTransferGroups,\n UpdateTransferGroupsFnFields,\n UpdateTransferGroupsFnMetadataFields,\n UpdateTransferGroupsFnStringFields,\n UpdateTransferGroupsFnResultFields,\n updateTransfers,\n UpdateTransfersFnFields,\n UpdateTransfersFnMetadataFields,\n UpdateTransfersFnStringFields,\n UpdateTransfersFnResultFields,\n updateWallet,\n AggregateTransfersFnInputSchema,\n AggregateTransfersFnOutputSchema,\n CreateContractFnInputSchema,\n CreateContractFnOutputSchema,\n CreateDepositFnInputSchema,\n CreateDepositFnOutputSchema,\n CreateExchangeFnInputSchema,\n CreateExchangeFnOutputSchema,\n CreateTokenFnInputSchema,\n CreateTokenFnOutputSchema,\n CreateTransferFnInputSchema,\n CreateTransferFnOutputSchema,\n CreateTransferGroupFnInputSchema,\n CreateTransferGroupFnOutputSchema,\n CreateTransfersFnInputSchema,\n CreateTransfersFnOutputSchema,\n CreateWalletFnInputSchema,\n CreateWalletFnOutputSchema,\n CreateWithdrawalFnInputSchema,\n CreateWithdrawalFnOutputSchema,\n FindBalancesFnInputSchema,\n FindBalancesFnOutputSchema,\n FindTokensFnInputSchema,\n FindTokensFnOutputSchema,\n FindTransferGroupsFnInputSchema,\n FindTransferGroupsFnOutputSchema,\n FindTransfersFnInputSchema,\n FindTransfersFnOutputSchema,\n FindWalletsFnInputSchema,\n FindWalletsFnOutputSchema,\n GetBalanceFnInputSchema,\n GetBalanceFnOutputSchema,\n GetBalanceHistoryFnInputSchema,\n GetBalanceHistoryFnOutputSchema,\n GetFlagsFnInputSchema,\n GetFlagsFnOutputSchema,\n GetStatisticsFnInputSchema,\n GetStatisticsFnOutputSchema,\n GetTokenFnInputSchema,\n GetTokenFnOutputSchema,\n GetTransferFnInputSchema,\n GetTransferFnOutputSchema,\n GetTransferGroupFnInputSchema,\n GetTransferGroupFnOutputSchema,\n GetWalletFnInputSchema,\n GetWalletFnOutputSchema,\n ImportDataFnInputSchema,\n ImportDataFnOutputSchema,\n ReverseTransferFnInputSchema,\n ReverseTransferFnOutputSchema,\n ReverseTransferGroupFnInputSchema,\n ReverseTransferGroupFnOutputSchema,\n ReverseTransfersFnInputSchema,\n ReverseTransfersFnOutputSchema,\n SetFlagsFnInputSchema,\n SetFlagsFnOutputSchema,\n UpdateTokenFnInputSchema,\n UpdateTokenFnOutputSchema,\n UpdateTransferFnInputSchema,\n UpdateTransferFnOutputSchema,\n UpdateTransferGroupFnInputSchema,\n UpdateTransferGroupFnOutputSchema,\n UpdateTransferGroupsFnInputSchema,\n UpdateTransferGroupsFnOutputSchema,\n UpdateTransfersFnInputSchema,\n UpdateTransfersFnOutputSchema,\n UpdateWalletFnInputSchema,\n UpdateWalletFnOutputSchema,\n // FNEXPORTS\n};\n\n// FNINTERFACES\n/*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\nexport * from './aggregate-transfers/aggregate-transfers.enums';\nexport * from './create-contract/create-contract.enums';\nexport * from './create-deposit/create-deposit.enums';\nexport * from './create-exchange/create-exchange.enums';\nexport * from './create-token/create-token.enums';\nexport * from './create-transfer/create-transfer.enums';\nexport * from './create-transfer-group/create-transfer-group.enums';\nexport * from './create-transfers/create-transfers.enums';\nexport * from './create-wallet/create-wallet.enums';\nexport * from './create-withdrawal/create-withdrawal.enums';\nexport * from './find-balances/find-balances.enums';\nexport * from './find-tokens/find-tokens.enums';\nexport * from './find-transfer-groups/find-transfer-groups.enums';\nexport * from './find-transfers/find-transfers.enums';\nexport * from './find-wallets/find-wallets.enums';\nexport * from './get-balance/get-balance.enums';\nexport * from './get-balance-history/get-balance-history.enums';\nexport * from './get-flags/get-flags.enums';\nexport * from './get-statistics/get-statistics.enums';\nexport * from './get-token/get-token.enums';\nexport * from './get-transfer/get-transfer.enums';\nexport * from './get-transfer-group/get-transfer-group.enums';\nexport * from './get-wallet/get-wallet.enums';\nexport * from './import-data/import-data.enums';\nexport * from './reverse-transfer/reverse-transfer.enums';\nexport * from './reverse-transfer-group/reverse-transfer-group.enums';\nexport * from './reverse-transfers/reverse-transfers.enums';\nexport * from './set-flags/set-flags.enums';\nexport * from './update-token/update-token.enums';\nexport * from './update-transfer/update-transfer.enums';\nexport * from './update-transfer-group/update-transfer-group.enums';\nexport * from './update-transfer-groups/update-transfer-groups.enums';\nexport * from './update-transfers/update-transfers.enums';\nexport * from './update-wallet/update-wallet.enums';\n// FNINTERFACES\n\n/**\n * @internal\n */\nexport const ClientValidators = {\n // CLIENTVALIDATOREXPORTS\n /*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\n aggregateTransfers: getValidator(SchemaNames.AggregateTransfersFnInput),\n createContract: getValidator(SchemaNames.CreateContractFnInput),\n createDeposit: getValidator(SchemaNames.CreateDepositFnInput),\n createExchange: getValidator(SchemaNames.CreateExchangeFnInput),\n createToken: getValidator(SchemaNames.CreateTokenFnInput),\n createTransfer: getValidator(SchemaNames.CreateTransferFnInput),\n createTransferGroup: getValidator(SchemaNames.CreateTransferGroupFnInput),\n createTransfers: getValidator(SchemaNames.CreateTransfersFnInput),\n createWallet: getValidator(SchemaNames.CreateWalletFnInput),\n createWithdrawal: getValidator(SchemaNames.CreateWithdrawalFnInput),\n findBalances: getValidator(SchemaNames.FindBalancesFnInput),\n findTokens: getValidator(SchemaNames.FindTokensFnInput),\n findTransferGroups: getValidator(SchemaNames.FindTransferGroupsFnInput),\n findTransfers: getValidator(SchemaNames.FindTransfersFnInput),\n findWallets: getValidator(SchemaNames.FindWalletsFnInput),\n getBalance: getValidator(SchemaNames.GetBalanceFnInput),\n getBalanceHistory: getValidator(SchemaNames.GetBalanceHistoryFnInput),\n getFlags: getValidator(SchemaNames.GetFlagsFnInput),\n getStatistics: getValidator(SchemaNames.GetStatisticsFnInput),\n getToken: getValidator(SchemaNames.GetTokenFnInput),\n getTransfer: getValidator(SchemaNames.GetTransferFnInput),\n getTransferGroup: getValidator(SchemaNames.GetTransferGroupFnInput),\n getWallet: getValidator(SchemaNames.GetWalletFnInput),\n importData: getValidator(SchemaNames.ImportDataFnInput),\n reverseTransfer: getValidator(SchemaNames.ReverseTransferFnInput),\n reverseTransferGroup: getValidator(SchemaNames.ReverseTransferGroupFnInput),\n reverseTransfers: getValidator(SchemaNames.ReverseTransfersFnInput),\n setFlags: getValidator(SchemaNames.SetFlagsFnInput),\n updateToken: getValidator(SchemaNames.UpdateTokenFnInput),\n updateTransfer: getValidator(SchemaNames.UpdateTransferFnInput),\n updateTransferGroup: getValidator(SchemaNames.UpdateTransferGroupFnInput),\n updateTransferGroups: getValidator(SchemaNames.UpdateTransferGroupsFnInput),\n updateTransfers: getValidator(SchemaNames.UpdateTransfersFnInput),\n updateWallet: getValidator(SchemaNames.UpdateWalletFnInput),\n // CLIENTVALIDATOREXPORTS\n};\n/**\n * @internal\n */\nexport const ClientFunctions = {\n // CLIENTFNEXPORTS\n /*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\n aggregateTransfers,\n createContract,\n createDeposit,\n createExchange,\n createToken,\n createTransfer,\n createTransferGroup,\n createTransfers,\n createWallet,\n createWithdrawal,\n findBalances,\n findTokens,\n findTransferGroups,\n findTransfers,\n findWallets,\n getBalance,\n getBalanceHistory,\n getFlags,\n getStatistics,\n getToken,\n getTransfer,\n getTransferGroup,\n getWallet,\n importData,\n reverseTransfer,\n reverseTransferGroup,\n reverseTransfers,\n setFlags,\n updateToken,\n updateTransfer,\n updateTransferGroup,\n updateTransferGroups,\n updateTransfers,\n updateWallet,\n // CLIENTFNEXPORTS\n};\n\n/**\n * @internal\n */\nexport enum ClientFunctionsEnum {\n // CLIENTFNENUMEXPORTS\n /*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\n aggregateTransfers = 'aggregateTransfers',\n createContract = 'createContract',\n createDeposit = 'createDeposit',\n createExchange = 'createExchange',\n createToken = 'createToken',\n createTransfer = 'createTransfer',\n createTransferGroup = 'createTransferGroup',\n createTransfers = 'createTransfers',\n createWallet = 'createWallet',\n createWithdrawal = 'createWithdrawal',\n findBalances = 'findBalances',\n findTokens = 'findTokens',\n findTransferGroups = 'findTransferGroups',\n findTransfers = 'findTransfers',\n findWallets = 'findWallets',\n getBalance = 'getBalance',\n getBalanceHistory = 'getBalanceHistory',\n getFlags = 'getFlags',\n getStatistics = 'getStatistics',\n getToken = 'getToken',\n getTransfer = 'getTransfer',\n getTransferGroup = 'getTransferGroup',\n getWallet = 'getWallet',\n importData = 'importData',\n reverseTransfer = 'reverseTransfer',\n reverseTransferGroup = 'reverseTransferGroup',\n reverseTransfers = 'reverseTransfers',\n setFlags = 'setFlags',\n updateToken = 'updateToken',\n updateTransfer = 'updateTransfer',\n updateTransferGroup = 'updateTransferGroup',\n updateTransferGroups = 'updateTransferGroups',\n updateTransfers = 'updateTransfers',\n updateWallet = 'updateWallet',\n // CLIENTFNENUMEXPORTS\n}\n\n/**\n * @internal\n */\nexport enum ClientQueryBuilderFunctionsEnum {\n // CLIENTQUERYBFNENUMEXPORTS\n /*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\n findTransfers = 'findTransfers',\n findWallets = 'findWallets',\n // CLIENTQUERYBFNENUMEXPORTS\n}\n","import { createWsClient, WapiConnectionOptions, WsClient } from './api';\nimport { ClientHooks, ISocketId } from './api/base-client';\nimport { ERROR_MESSAGES, ValidationError } from './lib/errors';\nimport {\n AggregateQueryBuilder,\n UpdateQueryBuilder,\n ReverseQueryBuilder,\n QueryBuilder,\n} from './lib/query-builder';\nimport { StreamPromise } from './lib/stream-promise';\nimport { StreamPromiseInput } from './lib/stream-promise-input';\nimport { version as clientVersion } from '../package.json';\n\n// CLIENTFNIMPORTS\n/*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\nimport {\n ClientFunctions,\n AggregateTransfersFnInput,\n AggregateTransfersFnOutput,\n AggregateTransfersFnOptions,\n AggregateTransfersFnFields,\n AggregateTransfersFnMetadataFields,\n AggregateTransfersFnStringFields,\n AggregateTransfersFnGroupFields,\n CreateContractFnInput,\n CreateContractFnOutput,\n CreateContractFnOptions,\n CreateDepositFnInput,\n CreateDepositFnOutput,\n CreateDepositFnOptions,\n CreateExchangeFnInput,\n CreateExchangeFnOutput,\n CreateExchangeFnOptions,\n CreateTokenFnInput,\n CreateTokenFnOutput,\n CreateTokenFnOptions,\n CreateTransferFnInput,\n CreateTransferFnOutput,\n CreateTransferFnOptions,\n CreateTransferGroupFnInput,\n CreateTransferGroupFnOutput,\n CreateTransferGroupFnOptions,\n CreateTransfersFnInput,\n CreateTransfersFnOutput,\n CreateTransfersFnOptions,\n CreateWalletFnInput,\n CreateWalletFnOutput,\n CreateWalletFnOptions,\n CreateWithdrawalFnInput,\n CreateWithdrawalFnOutput,\n CreateWithdrawalFnOptions,\n FindBalancesFnInput,\n FindBalancesFnOutput,\n FindBalancesFnOptions,\n FindBalancesFnFields,\n FindBalancesFnMetadataFields,\n FindBalancesFnStringFields,\n FindBalancesFnResultFields,\n FindTokensFnInput,\n FindTokensFnOutput,\n FindTokensFnOptions,\n FindTokensFnFields,\n FindTokensFnMetadataFields,\n FindTokensFnStringFields,\n FindTokensFnResultFields,\n FindTransferGroupsFnInput,\n FindTransferGroupsFnOutput,\n FindTransferGroupsFnOptions,\n FindTransferGroupsFnFields,\n FindTransferGroupsFnMetadataFields,\n FindTransferGroupsFnStringFields,\n FindTransferGroupsFnResultFields,\n FindTransfersFnInput,\n FindTransfersFnOutput,\n FindTransfersFnOptions,\n FindTransfersFnFields,\n FindTransfersFnMetadataFields,\n FindTransfersFnStringFields,\n FindTransfersFnResultFields,\n FindWalletsFnInput,\n FindWalletsFnOutput,\n FindWalletsFnOptions,\n FindWalletsFnFields,\n FindWalletsFnMetadataFields,\n FindWalletsFnStringFields,\n FindWalletsFnResultFields,\n GetBalanceFnInput,\n GetBalanceFnOutput,\n GetBalanceFnOptions,\n GetBalanceHistoryFnInput,\n GetBalanceHistoryFnOutput,\n GetBalanceHistoryFnOptions,\n GetFlagsFnInput,\n GetFlagsFnOutput,\n GetFlagsFnOptions,\n GetStatisticsFnInput,\n GetStatisticsFnOutput,\n GetStatisticsFnOptions,\n GetTokenFnInput,\n GetTokenFnOutput,\n GetTokenFnOptions,\n GetTransferFnInput,\n GetTransferFnOutput,\n GetTransferFnOptions,\n GetTransferGroupFnInput,\n GetTransferGroupFnOutput,\n GetTransferGroupFnOptions,\n GetWalletFnInput,\n GetWalletFnOutput,\n GetWalletFnOptions,\n ImportDataFnInput,\n ImportDataFnOutput,\n ImportDataFnOptions,\n ImportDataFnStreamChunk,\n isImportDataFnOptions,\n isImportDataFnInput,\n ReverseTransferFnInput,\n ReverseTransferFnOutput,\n ReverseTransferFnOptions,\n ReverseTransferGroupFnInput,\n ReverseTransferGroupFnOutput,\n ReverseTransferGroupFnOptions,\n ReverseTransfersFnInput,\n ReverseTransfersFnOutput,\n ReverseTransfersFnOptions,\n ReverseTransfersFnFields,\n ReverseTransfersFnMetadataFields,\n ReverseTransfersFnStringFields,\n ReverseTransfersFnModifications,\n SetFlagsFnInput,\n SetFlagsFnOutput,\n SetFlagsFnOptions,\n UpdateTokenFnInput,\n UpdateTokenFnOutput,\n UpdateTokenFnOptions,\n UpdateTransferFnInput,\n UpdateTransferFnOutput,\n UpdateTransferFnOptions,\n UpdateTransferGroupFnInput,\n UpdateTransferGroupFnOutput,\n UpdateTransferGroupFnOptions,\n UpdateTransferGroupsFnInput,\n UpdateTransferGroupsFnOutput,\n UpdateTransferGroupsFnOptions,\n UpdateTransferGroupsFnFields,\n UpdateTransferGroupsFnMetadataFields,\n UpdateTransferGroupsFnStringFields,\n UpdateTransferGroupsFnResultFields,\n UpdateTransferGroupsFnUpdateFields,\n UpdateTransfersFnInput,\n UpdateTransfersFnOutput,\n UpdateTransfersFnOptions,\n UpdateTransfersFnFields,\n UpdateTransfersFnMetadataFields,\n UpdateTransfersFnStringFields,\n UpdateTransfersFnResultFields,\n UpdateTransfersFnUpdateFields,\n UpdateWalletFnInput,\n UpdateWalletFnOutput,\n UpdateWalletFnOptions,\n} from './fns';\n// CLIENTFNIMPORTS\n\nexport interface ClientConfig {\n token?: number | string;\n hooks?: ClientHooks;\n}\n\nexport class Client {\n /**\n * The BaseClient in use for communication with WAPI Server, manages the actual networking\n */\n public api: WsClient;\n /**\n * Promise resolving to ID upon connection opening\n */\n public $connect: Promise<ISocketId>;\n private config: ClientConfig = {};\n /**\n * @internal\n */\n constructor(_apiClient: WsClient, initialConf?: ClientConfig) {\n this.api = _apiClient;\n this.$connect = _apiClient.$connect;\n if (initialConf) {\n if (initialConf.token) {\n this.config = {\n ...this.config,\n token: initialConf.token,\n };\n }\n if (initialConf.hooks) {\n for (const [hookName, value] of Object.entries(initialConf.hooks)) {\n this.setHook(hookName as keyof ClientHooks, value);\n }\n }\n }\n }\n /**\n * Close connection to WAPI instance\n *\n * ```javascript\n *\n * await wapiClient.close();\n *\n * ```\n */\n async close(): Promise<void> {\n return this.api.close();\n }\n\n /**\n * Returns WAPI client verion\n *\n * ```javascript\n *\n * wapiClient.version();\n *\n * ```\n */\n version(): string {\n return clientVersion;\n }\n\n /**\n * Set a hook function\n *\n * ```javascript\n *\n * wapiClient.setHook('disconnect', () => {\n * console.log('disconnected');\n * });\n *\n * ```\n * @param {ClientHooks} hookName\n * @param value\n */\n setHook(\n hookName: keyof ClientHooks,\n value: (input?: unknown) => boolean | void,\n ): this {\n if (typeof value !== 'function') {\n throw new TypeError('Hooks can only be functions');\n }\n this.api.hooks[hookName] = value;\n return this;\n }\n /**\n * Overwrite client configuration (default token, hooks)\n *\n *\n * ```javascript\n *\n * wapiClient.configure({\n * token: 'EURO',\n * hooks: {\n * disconnect: () => {}\n * },\n * });\n *\n * ```\n * @param {ClientConfig} newConf\n */\n configure(newConf: Partial<ClientConfig>): this {\n this.config = {\n ...this.config,\n ...newConf,\n };\n return this;\n }\n\n /**\n * Get current config key value (token)\n * ```javascript\n *\n * const token = wapiClient.getConfig('token');\n *\n * ```\n */\n getConfig(key: 'token'): number | string | undefined {\n return this.config[key];\n }\n\n // CLIENTFNDEFS\n /*\n * THIS IS AUTOGENERATED, DO NOT EDIT MANUALLY\n * if you need custom code add it outside this block\n */\n /**\n *\n * Aggregate Transfers using either a simple filter or queryBuilder\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.aggregateTransfers()\n * .where({\n * type: 'deposit',\n * from_wallet: 'EUR',\n * to_wallet: 'house',\n * })\n * .whereMetadata('example', 'test')\n * .sum('to.amount as amount')\n * .count()\n * .groupBy(\n * 'metadata.even as type',\n * 'hour',\n * )\n * .options({\n * tracking_id: 'hello',\n * return_all_intervals: {\n * start_time: '2021-07-31 11:00:00',\n * end_time: '2021-07-31 13:00:00'\n * }\n * });\n *\n * expect(result).toEqual({\n * rows: [\n * {\n * amount: 25,\n * count: 5,\n * type: 'even',\n * hour: '2021-07-31 12',\n * },\n * {\n * amount: 30,\n * count: 5,\n * type: 'odd',\n * hour: '2021-07-31 12',\n * },\n * {\n * amount: null,\n * count: 0,\n * type: null,\n * hour: '2021-07-31 11',\n * },\n * {\n * amount: null,\n * count: 0,\n * type: null,\n * hour: '2021-07-31 13',\n * },\n * ],\n * metadata: {\n * aggregators: [\n * {\n * function: 'sum',\n * field: 'to.amount',\n * alias: 'amount',\n * },\n * {\n * function: 'count',\n * alias: 'count',\n * },\n * ],\n * groups: [\n * {\n * type: 'metadata_field',\n * field: 'even',\n * alias: 'type',\n * },\n * {\n * alias: 'hour',\n * field: 'hour',\n * type: 'period',\n * },\n * ],\n * },\n * });\n *\n * ```\n *\n * @param {AggregateTransfersFnInput} [input]\n * @param {AggregateTransfersFnOptions} [options]\n * @returns {StreamPromise<AggregateTransfersFnOutput>}\n *\n */\n aggregateTransfers(): AggregateQueryBuilder<\n AggregateTransfersFnFields,\n AggregateTransfersFnStringFields,\n AggregateTransfersFnMetadataFields,\n AggregateTransfersFnGroupFields,\n AggregateTransfersFnOutput\n >;\n aggregateTransfers(\n input: AggregateTransfersFnInput,\n options?: AggregateTransfersFnOptions,\n ): StreamPromise<AggregateTransfersFnOutput>;\n aggregateTransfers(\n input?: AggregateTransfersFnInput,\n options?: AggregateTransfersFnOptions,\n ):\n | StreamPromise<AggregateTransfersFnOutput>\n | AggregateQueryBuilder<\n AggregateTransfersFnFields,\n AggregateTransfersFnStringFields,\n AggregateTransfersFnMetadataFields,\n AggregateTransfersFnGroupFields,\n AggregateTransfersFnOutput\n > {\n if (input === undefined) {\n return ClientFunctions.aggregateTransfers({ client: this });\n }\n return ClientFunctions.aggregateTransfers({ client: this }, input, options);\n }\n\n /**\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.createContract({\n * foreign: 'MYContract',\n * metadata: {\n * cool: true,\n * },\n * value_token: 'EUR',\n * value_amount: 100,\n * owner: 'oppo',\n * buyer: {\n * wallet: WALLETS.withEURFunds0.foreign,\n * metadata: {\n * buying: true,\n * },\n * amount: 101,\n * token: 'EUR',\n * },\n * });\n *\n * ```\n *\n * @param {CreateContractFnInput} input\n * @param {CreateContractFnOptions} [options]\n * @returns {StreamPromise<CreateContractFnOutput>}\n *\n */\n createContract(\n input: CreateContractFnInput,\n options?: CreateContractFnOptions,\n ): StreamPromise<CreateContractFnOutput> {\n return ClientFunctions.createContract({ client: this }, input, options);\n }\n\n /**\n *\n * Create a deposit transaction into a wallet, by issuing new tokens to the system.\n *\n * ```javascript\n *\n * const result = await wapiClient.createDeposit({\n * identifier: 'mycustomId',\n * token: 'ForeignForToken',\n * wallet: 'ForeignForWallet',\n * amount: 10.01,\n * metadata: {\n * customJsonBlob: true,\n * },\n * status: 'finished',\n * // transfer_group: TransferGroup.identifier, // existing transfer group identifier\n * }, {\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * create_wallet_if_not_exists: true,\n * return_balance: true,\n * });\n *\n * expect(result).toEqual({\n * transfer: jasmine.objectContaining({\n * identifier: 'mycustomId',\n * token_foreign: 'ForeignForToken',\n * to_wallet_foreign: 'ForeignForWallet',\n * amount: 10.01,\n * metadata: {\n * customJsonBlob: true,\n * },\n * status: 'finished',\n * // ... other fields\n * }),\n * to_balance: jasmine.objectContaining({\n * token_foreign: 'ForeignForToken',\n * wallet_foreign: 'ForeignForWallet',\n * pending_amount: 0,\n * finished_amount: 10.01,\n * amount: 10.01,\n * // ... other fields\n * }),\n * });\n *\n * ```\n *\n * @param {CreateDepositFnInput} input\n * @param {CreateDepositFnOptions} [options]\n * @returns {StreamPromise<CreateDepositFnOutput>}\n *\n */\n createDeposit(\n input: CreateDepositFnInput,\n options?: CreateDepositFnOptions,\n ): StreamPromise<CreateDepositFnOutput> {\n return ClientFunctions.createDeposit({ client: this }, input, options);\n }\n\n /**\n *\n * Create an exchange transfer group - change one token in certain amount for another token of certain amount\n * The transfers are connected and either fail or succeed both\n *\n * ```javascript\n *\n * const result = await wapiClient.createExchange({\n * identifier: 'exchange',\n * from_identifier: 'exchange1',\n * from_wallet: WALLETS.withEURFunds0.foreign,\n * from_token: 'EUR',\n * from_amount: 10,\n * to_identifier: 'exchange2',\n * to_token: 'USD',\n * to_wallet: WALLETS.withUSDFunds0.foreign,\n * to_amount: 20,\n * status: 'finished',\n * metadata: {\n * exchangeRate: 2,\n * },\n * }, {\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n * expect(result).toEqual({\n * transfer_group: jasmine.objectContaining({\n * identifier: 'exchange',\n * status: 'closed',\n * transfer_status: 'finished',\n * }),\n * transfers: [\n * jasmine.objectContaining({\n * status: 'finished',\n * amount: 10,\n * from_wallet_id: WALLETS.withEURFunds0.id,\n * to_wallet_id: WALLETS.withUSDFunds0.id,\n * token_id: TOKENS.EUR.id,\n * metadata: {\n * exchangeRate: 2,\n * },\n * identifier: 'exchange1',\n * }),\n * jasmine.objectContaining({\n * status: 'finished',\n * amount: 20,\n * to_wallet_id: WALLETS.withEURFunds0.id,\n * from_wallet_id: WALLETS.withUSDFunds0.id,\n * token_id: TOKENS.USD.id,\n * metadata: {\n * exchangeRate: 2,\n * },\n * identifier: 'exchange2',\n * }),\n * ],\n * });\n *\n * ```\n *\n * @param {CreateExchangeFnInput} input\n * @param {CreateExchangeFnOptions} [options]\n * @returns {StreamPromise<CreateExchangeFnOutput>}\n *\n */\n createExchange(\n input: CreateExchangeFnInput,\n options?: CreateExchangeFnOptions,\n ): StreamPromise<CreateExchangeFnOutput> {\n return ClientFunctions.createExchange({ client: this }, input, options);\n }\n\n /**\n *\n * Create a new Token in the system which can then be transferred between wallets\n *\n * ```javascript\n *\n * const result = await wapiClient.createToken(\n * {\n * foreign: 'EURO',\n * divisor: 10,\n * limit: 10,\n * public: true,\n * metadata: {\n * customMetadata: true,\n * },\n * // belongs_to: 'EURO-wallet'\n * },\n * {\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * },\n * );\n *\n * expect(result).toEqual({\n * token: jasmine.objectContaining({\n * foreign: 'EURO',\n * public: true,\n * metadata: {\n * customMetadata: true,\n * },\n * }),\n * wallet: jasmine.objectContaining({\n * default_allow_positive: false,\n * default_allow_negative: true,\n * foreign: 'EURO',\n * metadata: null,\n * type: 'token',\n * }),\n * });\n *\n * ```\n *\n * @param {CreateTokenFnInput} input\n * @param {CreateTokenFnOptions} [options]\n * @returns {StreamPromise<CreateTokenFnOutput>}\n *\n */\n createToken(\n input: CreateTokenFnInput,\n options?: CreateTokenFnOptions,\n ): StreamPromise<CreateTokenFnOutput> {\n return ClientFunctions.createToken({ client: this }, input, options);\n }\n\n /**\n *\n * Create a transfer of Token amount from one wallet to the other.\n *\n * ```javascript\n *\n * const result = await wapiClient.createTransfer({\n * identifier: 'mynewtransferid',\n * token: 'EUR',\n * from_wallet: WALLETS.withEURFunds0.foreign,\n * to_wallet: 'foreignForMbyExistingWallet',\n * amount: 10.01,\n * metadata: {\n * customJSON: true,\n * },\n * type: 'transfer',\n * status: 'pending',\n * // transfer_group: TransferGroup.identifier,\n * }, {\n * create_to_wallet_if_not_exists: true,\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n *\n * expect(result).toEqual({\n * transfer: jasmine.objectContaining({\n * identifier: 'mynewtransferid',\n * token_foreign: 'EUR',\n * from_wallet_foreign: WALLETS.withEURFunds0.foreign,\n * to_wallet_foreign: 'foreignForMbyExistingWallet',\n * amount: 10.01,\n * metadata: {\n * customJSON: true,\n * },\n * type: 'transfer',\n * status: 'pending',\n * // ...\n * }),\n * });\n *\n * ```\n *\n * @param {CreateTransferFnInput} [input]\n * @param {CreateTransferFnOptions} [options]\n * @returns {StreamPromise<CreateTransferFnOutput>}\n *\n */\n createTransfer(\n input?: CreateTransferFnInput,\n options?: CreateTransferFnOptions,\n ): StreamPromise<CreateTransferFnOutput> {\n return ClientFunctions.createTransfer({ client: this }, input, options);\n }\n\n /**\n *\n * Create a TransferGroup entity to group transfers into a logical or status locked group.\n * Can include the transfers in the same call or if non 'closed' TransferGroup, add the transfers later.\n * Can also include child TransferGroups to create a hierarchy\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.createTransferGroup({\n * identifier: 'mytgIdentifier',\n * status: 'closed',\n * metadata: {\n * customJSON: true,\n * },\n * transfer_status: 'finished',\n * // transfer_group: ParentTransferGroup.identifier,\n * children: [\n * {\n * identifier: 'txIdentifier',\n * from_wallet: WALLETS.withEURFunds0.foreign,\n * to_wallet: 'newWalletForeign',\n * token: 'EUR',\n * amount: 10,\n * type: 'transfer',\n * latest_control_hash: WALLETS.withEURFunds0.latest_control_hash,\n * },\n * {\n * identifier: 'childTgTransferId',\n * from_wallet: 'newWalletForeign',\n * to_wallet: WALLETS.withEURFunds0.foreign,\n * token: 'EUR',\n * amount: 9,\n * type: 'transfer',\n * latest_control_hash: null, // not needed because we just transferred money there,\n * },\n * ],\n * }, {\n * validate_final_balance_only: true,\n * create_to_wallet_if_not_exists: true,\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n *\n * expect(result).toEqual(jasmine.objectContaining({\n * transfer_group: jasmine.objectContaining({\n * identifier: 'mytgIdentifier',\n * status: 'closed',\n * metadata: {\n * customJSON: true,\n * },\n * transfer_status: 'finished',\n * }),\n * transfers: [\n * jasmine.objectContaining({\n * identifier: 'txIdentifier',\n * from_wallet_foreign: WALLETS.withEURFunds0.foreign,\n * to_wallet_foreign: 'newWalletForeign',\n * token_foreign: 'EUR',\n * amount: 10,\n * type: 'transfer',\n * }),\n * jasmine.objectContaining({\n * identifier: 'childTgTransferId',\n * from_wallet_foreign: 'newWalletForeign',\n * to_wallet_foreign: WALLETS.withEURFunds0.foreign,\n * token_foreign: 'EUR',\n * amount: 9,\n * type: 'transfer',\n * }),\n * ],\n * }));\n *\n *\n * ```\n *\n * @param {CreateTransferGroupFnInput} input\n * @param {CreateTransferGroupFnOptions} [options]\n * @returns {StreamPromise<CreateTransferGroupFnOutput>}\n *\n */\n createTransferGroup(\n input: CreateTransferGroupFnInput,\n options?: CreateTransferGroupFnOptions,\n ): StreamPromise<CreateTransferGroupFnOutput> {\n return ClientFunctions.createTransferGroup(\n { client: this },\n input,\n options,\n );\n }\n\n /**\n *\n * Create multiple transfers with one call. Transfers are created in a transaction so it either succeeds or fails as one.\n * Will respect internal balance transfers to avoid latest_control_hash\n *\n * ```javascript\n *\n * const result = await wapiClient.createTransfers({\n * transfers: [{\n * type: 'deposit',\n * wallet: WALLETS.validForeign2,\n * token: 'EURO',\n * amount: 10.01,\n * }, {\n * from_wallet: WALLETS.validForeign2,\n * to_wallet: 'newWalletForeignMby',\n * token: 'EURO',\n * amount: 10.01,\n * latest_control_hash: null, // not required as we just transferred funds\n * }, {\n * type: 'withdrawal',\n * wallet: 'newWalletForeignMby',\n * token: 'EURO',\n * amount: 10.01,\n * latest_control_hash: null, // not required as we just transferred funds\n * }],\n * }, {\n * create_to_wallet_if_not_exists: true,\n * return_from_balance: true,\n * return_to_balance: true,\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n *\n * expect(result).toEqual(jasmine.objectContaining({\n * transfers: [\n * jasmine.objectContaining({\n * type: 'deposit',\n * token_foreign: 'EURO',\n * to_wallet_foreign: WALLETS.validForeign2,\n * amount: 10.01,\n * }),\n * jasmine.objectContaining({\n * type: 'transfer',\n * token_foreign: 'EURO',\n * from_wallet_foreign: WALLETS.validForeign2,\n * to_wallet_foreign: 'newWalletForeignMby',\n * amount: 10.01,\n * }),\n * jasmine.objectContaining({\n * type: 'withdrawal',\n * token_foreign: 'EURO',\n * from_wallet_foreign: 'newWalletForeignMby',\n * amount: 10.01,\n * }),\n * ],\n * // We are doing a 0 sum with 3 transactions so everything is back to 0\n * from_balances: [\n * jasmine.objectContaining({\n * token_foreign: 'EURO',\n * wallet_foreign: 'EURO',\n * amount: 0,\n * }),\n * jasmine.objectContaining({\n * token_foreign: 'EURO',\n * wallet_foreign: WALLETS.validForeign2,\n * amount: 0,\n * }),\n * jasmine.objectContaining({\n * token_foreign: 'EURO',\n * wallet_foreign: 'newWalletForeignMby',\n * amount: 0,\n * }),\n * ],\n * to_balances: [\n * jasmine.objectContaining({\n * token_foreign: 'EURO',\n * wallet_foreign: WALLETS.validForeign2,\n * amount: 0,\n * }),\n * jasmine.objectContaining({\n * token_foreign: 'EURO',\n * wallet_foreign: 'newWalletForeignMby',\n * amount: 0,\n * }),\n * jasmine.objectContaining({\n * token_foreign: 'EURO',\n * wallet_foreign: 'EURO',\n * amount: 0,\n * }),\n * ],\n * }));\n *\n *\n * ```\n *\n * @param {CreateTransfersFnInput} input\n * @param {CreateTransfersFnOptions} [options]\n * @returns {StreamPromise<CreateTransfersFnOutput>}\n *\n */\n createTransfers(\n input: CreateTransfersFnInput,\n options?: CreateTransfersFnOptions,\n ): StreamPromise<CreateTransfersFnOutput> {\n return ClientFunctions.createTransfers({ client: this }, input, options);\n }\n\n /**\n *\n * Create a Wallet entity which can then transfer amounts of Tokens.\n *\n * ```javascript\n *\n * const result = await wapiClient.createWallet({\n * foreign: 'test-wallet-2',\n * name: 'Irrelevant',\n * metadata: {\n * awesome: true,\n * invalid: false,\n * },\n * }, {\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n *\n * expect(result).toEqual({\n * wallet: jasmine.objectContaining({\n * foreign: 'test-wallet-2',\n * name: 'Irrelevant',\n * metadata: {\n * awesome: true,\n * invalid: false,\n * },\n * }),\n * });\n *\n *\n * ```\n *\n * @param {CreateWalletFnInput} input\n * @param {CreateWalletFnOptions} [options]\n * @returns {StreamPromise<CreateWalletFnOutput>}\n *\n */\n createWallet(\n input: CreateWalletFnInput,\n options?: CreateWalletFnOptions,\n ): StreamPromise<CreateWalletFnOutput> {\n return ClientFunctions.createWallet({ client: this }, input, options);\n }\n\n /**\n *\n * Create a transfer withdrawing funds from a Wallet.\n * Will default to transferring funds to Token default Wallet.\n *\n * ```javascript\n *\n * const result = await wapiClient.createWithdrawal({\n * identifier: 'mycustomId',\n * token: 'ForeignForToken',\n * wallet: 'ForeignForWallet',\n * amount: 10.01,\n * metadata: {\n * customJsonBlob: true,\n * },\n * status: 'finished',\n * latest_control_hash: null,\n * // transfer_group: TransferGroup.identifier, // existing transfer group identifier\n * }, {\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * return_balance: true,\n * });\n *\n * expect(result).toEqual({\n * transfer: jasmine.objectContaining({\n * identifier: 'mycustomId',\n * token_foreign: 'ForeignForToken',\n * from_wallet_foreign: 'ForeignForWallet',\n * amount: 10.01,\n * metadata: {\n * customJsonBlob: true,\n * },\n * status: 'finished',\n * // ... other fields\n * }),\n * from_balance: jasmine.objectContaining({\n * token_foreign: 'ForeignForToken',\n * wallet_foreign: 'ForeignForWallet',\n * pending_amount: 0,\n * finished_amount: 89.99,\n * amount: 89.99,\n * // ... other fields\n * }),\n * });\n *\n * ```\n *\n * @param {CreateWithdrawalFnInput} input\n * @param {CreateWithdrawalFnOptions} [options]\n * @returns {StreamPromise<CreateWithdrawalFnOutput>}\n *\n */\n createWithdrawal(\n input: CreateWithdrawalFnInput,\n options?: CreateWithdrawalFnOptions,\n ): StreamPromise<CreateWithdrawalFnOutput> {\n return ClientFunctions.createWithdrawal({ client: this }, input, options);\n }\n\n /**\n *\n * Search for Balances using either a simple filter or queryBuilder\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.findBalances()\n * .where({\n * wallet: WALLETS.validId0,\n * })\n * .orWhere('amount', '>', 100)\n * .orWhere({\n * wallet: WALLETS.validId1,\n * token: 'USD',\n * })\n * .orWhere(builder => {\n * builder.where('updated_at', '<', '2020-01-01')\n * .where('amount', '<', -1000000);\n * })\n * .limit(5)\n * .offset(0)\n * .orderBy('amount', 'desc')\n * .options({\n * tracking_id: 'hello',\n * return_metadata_total: true,\n * });\n *\n * ```\n *\n * @param {FindBalancesFnInput} [input]\n * @param {FindBalancesFnOptions} [options]\n * @returns {StreamPromise<FindBalancesFnOutput>}\n *\n */\n findBalances(): QueryBuilder<\n FindBalancesFnFields,\n FindBalancesFnStringFields,\n FindBalancesFnMetadataFields,\n FindBalancesFnResultFields,\n FindBalancesFnOptions,\n FindBalancesFnOutput\n >;\n findBalances(\n input: FindBalancesFnInput,\n options?: FindBalancesFnOptions,\n ): StreamPromise<FindBalancesFnOutput>;\n findBalances(\n input?: FindBalancesFnInput,\n options?: FindBalancesFnOptions,\n ):\n | StreamPromise<FindBalancesFnOutput>\n | QueryBuilder<\n FindBalancesFnFields,\n FindBalancesFnStringFields,\n FindBalancesFnMetadataFields,\n FindBalancesFnResultFields,\n FindBalancesFnOptions,\n FindBalancesFnOutput\n > {\n if (input === undefined) {\n return ClientFunctions.findBalances({ client: this });\n }\n return ClientFunctions.findBalances({ client: this }, input, options);\n }\n\n /**\n *\n * Search for Tokens using either a simple filter or queryBuilder\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.findTokens()\n * .where({\n * metadata: {\n * even: true,\n * example: 'test',\n * },\n * })\n * .orWhere({\n * foreign: 'token-example1',\n * })\n * .limit(5)\n * .offset(0)\n * .orderBy(['foreign', {column: 'id', order: 'desc'}])\n * .options({\n * tracking_id: 'hello',\n * return_metadata_total: true,\n * });\n *\n * ```\n *\n * @param {FindTokensFnInput} [input]\n * @param {FindTokensFnOptions} [options]\n * @returns {StreamPromise<FindTokensFnOutput>}\n *\n */\n findTokens(): QueryBuilder<\n FindTokensFnFields,\n FindTokensFnStringFields,\n FindTokensFnMetadataFields,\n FindTokensFnResultFields,\n FindTokensFnOptions,\n FindTokensFnOutput\n >;\n findTokens(\n input: FindTokensFnInput,\n options?: FindTokensFnOptions,\n ): StreamPromise<FindTokensFnOutput>;\n findTokens(\n input?: FindTokensFnInput,\n options?: FindTokensFnOptions,\n ):\n | StreamPromise<FindTokensFnOutput>\n | QueryBuilder<\n FindTokensFnFields,\n FindTokensFnStringFields,\n FindTokensFnMetadataFields,\n FindTokensFnResultFields,\n FindTokensFnOptions,\n FindTokensFnOutput\n > {\n if (input === undefined) {\n return ClientFunctions.findTokens({ client: this });\n }\n return ClientFunctions.findTokens({ client: this }, input, options);\n }\n\n /**\n *\n * Search for TransferGroups using either a simple filter or queryBuilder\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.findTransferGroups()\n * .where({\n * metadata: {\n * even: true,\n * example: 'test',\n * },\n * })\n * .orWhere({\n * identifier: 'reverser-example',\n * })\n * .orWhere(builder => {\n * builder.where({\n * metadata: {\n * kak: true,\n * },\n * })\n * .where('created_at', '>', '2020-01-01');\n * })\n * .limit(5)\n * .offset(0)\n * .orderBy('id', 'desc')\n * .select('id', 'type', 'identifier')\n * .options({\n * tracking_id: 'hello',\n * return_metadata_total: true,\n * });\n *\n * ```\n *\n * @param {FindTransferGroupsFnInput} [input]\n * @param {FindTransferGroupsFnOptions} [options]\n * @returns {StreamPromise<FindTransferGroupsFnOutput>}\n *\n */\n findTransferGroups(): QueryBuilder<\n FindTransferGroupsFnFields,\n FindTransferGroupsFnStringFields,\n FindTransferGroupsFnMetadataFields,\n FindTransferGroupsFnResultFields,\n FindTransferGroupsFnOptions,\n FindTransferGroupsFnOutput\n >;\n findTransferGroups(\n input: FindTransferGroupsFnInput,\n options?: FindTransferGroupsFnOptions,\n ): StreamPromise<FindTransferGroupsFnOutput>;\n findTransferGroups(\n input?: FindTransferGroupsFnInput,\n options?: FindTransferGroupsFnOptions,\n ):\n | StreamPromise<FindTransferGroupsFnOutput>\n | QueryBuilder<\n FindTransferGroupsFnFields,\n FindTransferGroupsFnStringFields,\n FindTransferGroupsFnMetadataFields,\n FindTransferGroupsFnResultFields,\n FindTransferGroupsFnOptions,\n FindTransferGroupsFnOutput\n > {\n if (input === undefined) {\n return ClientFunctions.findTransferGroups({ client: this });\n }\n return ClientFunctions.findTransferGroups({ client: this }, input, options);\n }\n\n /**\n *\n * Search for Transfers using either a simple filter or queryBuilder\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.findTransfers()\n * .where({\n * metadata: {\n * example: true,\n * },\n * })\n * .where('id', '>', 1)\n * .where(builder => {\n * builder.where('status', 'finished')\n * .orWhere('type', 'deposit');\n * })\n * .limit(5)\n * .offset(0)\n * .orderBy(['token_id', {column: 'id', order: 'desc'}])\n * .select('id', 'type', 'from_wallet_foreign', 'to_wallet_foreign')\n * .options({\n * tracking_id: 'hello',\n * });\n *\n * ```\n *\n * @param {FindTransfersFnInput} [input]\n * @param {FindTransfersFnOptions} [options]\n * @returns {StreamPromise<FindTransfersFnOutput>}\n *\n */\n findTransfers(): QueryBuilder<\n FindTransfersFnFields,\n FindTransfersFnStringFields,\n FindTransfersFnMetadataFields,\n FindTransfersFnResultFields,\n FindTransfersFnOptions,\n FindTransfersFnOutput\n >;\n findTransfers(\n input: FindTransfersFnInput,\n options?: FindTransfersFnOptions,\n ): StreamPromise<FindTransfersFnOutput>;\n findTransfers(\n input?: FindTransfersFnInput,\n options?: FindTransfersFnOptions,\n ):\n | StreamPromise<FindTransfersFnOutput>\n | QueryBuilder<\n FindTransfersFnFields,\n FindTransfersFnStringFields,\n FindTransfersFnMetadataFields,\n FindTransfersFnResultFields,\n FindTransfersFnOptions,\n FindTransfersFnOutput\n > {\n if (input === undefined) {\n return ClientFunctions.findTransfers({ client: this });\n }\n return ClientFunctions.findTransfers({ client: this }, input, options);\n }\n\n /**\n *\n * Search for Wallets using either a simple filter or queryBuilder\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.findWallets()\n * .where({\n * metadata: {\n * general: true,\n * },\n * })\n * .where('id', '>', 1)\n * .where(builder => {\n * builder\n * .whereMetadata('tost', 10)\n * .orWhereMetadata('test', 1);\n * })\n * .limit(5)\n * .offset(0)\n * .orderBy(['status', {column: 'id', order: 'desc'}])\n * .select('id')\n * .options({\n * tracking_id: 'hello',\n * });\n *\n * ```\n *\n * @param {FindWalletsFnInput} [input]\n * @param {FindWalletsFnOptions} [options]\n * @returns {StreamPromise<FindWalletsFnOutput>}\n *\n */\n findWallets(): QueryBuilder<\n FindWalletsFnFields,\n FindWalletsFnStringFields,\n FindWalletsFnMetadataFields,\n FindWalletsFnResultFields,\n FindWalletsFnOptions,\n FindWalletsFnOutput\n >;\n findWallets(\n input: FindWalletsFnInput,\n options?: FindWalletsFnOptions,\n ): StreamPromise<FindWalletsFnOutput>;\n findWallets(\n input?: FindWalletsFnInput,\n options?: FindWalletsFnOptions,\n ):\n | StreamPromise<FindWalletsFnOutput>\n | QueryBuilder<\n FindWalletsFnFields,\n FindWalletsFnStringFields,\n FindWalletsFnMetadataFields,\n FindWalletsFnResultFields,\n FindWalletsFnOptions,\n FindWalletsFnOutput\n > {\n if (input === undefined) {\n return ClientFunctions.findWallets({ client: this });\n }\n return ClientFunctions.findWallets({ client: this }, input, options);\n }\n\n /**\n *\n * Get a specific token/wallet balance\n *\n * ```javascript\n *\n * const result = await wapiClient.getBalance({\n * wallet: 'myMbyExistingWallet',\n * token: 'MBYTOKEN',\n * datetime: '2020-01-01',\n * }, {\n * create_wallet_if_not_exists: true,\n * create_token_if_not_exists: true,\n * create_if_not_exists: true,\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n *\n * expect(result).toEqual({\n * balance: jasmine.objectContaining({\n * wallet_foreign: 'myMbyExistingWallet',\n * token_foreign: 'MBYTOKEN',\n * pending_amount: 0,\n * finished_amount: 0,\n * amount: 0,\n * latest_control_hash: null,\n * available_balance: 0,\n * // ...\n * }),\n * });\n *\n *\n * ```\n *\n * @param {GetBalanceFnInput} input\n * @param {GetBalanceFnOptions} [options]\n * @returns {StreamPromise<GetBalanceFnOutput>}\n *\n */\n getBalance(\n input: GetBalanceFnInput,\n options?: GetBalanceFnOptions,\n ): StreamPromise<GetBalanceFnOutput> {\n return ClientFunctions.getBalance({ client: this }, input, options);\n }\n\n /**\n *\n * Get a list of changes to token/wallet balance\n *\n * ```javascript\n *\n * // setup\n * const deposit = await wapiClient.createDeposit({\n * wallet: 'newWallet',\n * amount: 10,\n * status: 'pending',\n * identifier: 'depositUSD',\n * token: 'USD',\n * }, {\n * create_wallet_if_not_exists: true,\n * });\n * const updatedTransfer = await wapiClient.updateTransfer({\n * transfer: 'depositUSD',\n * status: 'finished',\n * });\n *\n * const result = await wapiClient.getBalanceHistory({\n * wallet: 'newWallet',\n * token: 'USD',\n * }, {\n * create_token_if_not_exists: true,\n * create_wallet_if_not_exists: true,\n * limit: 5,\n * select: [\n * 'transfer_identifier',\n * 'pending_amount',\n * 'finished_amount',\n * 'pending_amount_from',\n * 'pending_amount_to',\n * 'amount',\n * // 'balance_id',\n * // 'transfer_id',\n * // 'transfer_control_hash',\n * // 'transfer_from_wallet_id',\n * // 'transfer_from_wallet_foreign',\n * // 'transfer_to_wallet_id',\n * // 'transfer_to_wallet_foreign',\n * // 'transfer_amount',\n * // 'transfer_type',\n * // 'transfer_status',\n * // 'transfer_force',\n * // 'transfer_created_at',\n * // 'transfer_updated_at',\n * // 'transfer_metadata',\n * // 'transfer_transfer_group_id',\n * // 'transfer_transfer_group_identifier',\n * // 'transfer_reverses_id',\n * // 'transfer_reverses_identifier',\n * // 'transfer_status_finalized_at',\n * // 'token_id',\n * // 'token_foreign',\n * // 'wallet_id',\n * // 'wallet_foreign',\n * // 'latest_control_hash',\n * // 'updated_at',\n * ],\n * offset: 0,\n * order: 'desc',\n * return_metadata_total: true,\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n * expect(result).toEqual({\n * balances: [\n * {\n * transfer_identifier: 'depositUSD',\n * pending_amount: 0,\n * finished_amount: 10,\n * pending_amount_to: 0,\n * pending_amount_from: 0,\n * amount: 10,\n * },\n * {\n * transfer_identifier: 'depositUSD',\n * pending_amount: 10,\n * finished_amount: 0,\n * pending_amount_to: 10,\n * pending_amount_from: 0,\n * amount: 10,\n * },\n * ],\n * metadata: {\n * limit: 5,\n * offset: 0,\n * total: 2,\n * more_rows: false,\n * },\n * });\n *\n * ```\n *\n * @param {GetBalanceHistoryFnInput} input\n * @param {GetBalanceHistoryFnOptions} [options]\n * @returns {StreamPromise<GetBalanceHistoryFnOutput>}\n *\n */\n getBalanceHistory(\n input: GetBalanceHistoryFnInput,\n options?: GetBalanceHistoryFnOptions,\n ): StreamPromise<GetBalanceHistoryFnOutput> {\n return ClientFunctions.getBalanceHistory({ client: this }, input, options);\n }\n\n /**\n *\n * Retrieve the current state of configurable Flags for your WAPI instance\n *\n * ```javascript\n *\n * const result = await wapiClient.getFlags();\n * expect(result.flags).toEqual({\n * production: true,\n * allow_timestamps: false,\n * });\n *\n * ```\n *\n * @param {GetFlagsFnInput} [input]\n * @param {GetFlagsFnOptions} [options]\n * @returns {StreamPromise<GetFlagsFnOutput>}\n *\n */\n getFlags(\n input?: GetFlagsFnInput,\n options?: GetFlagsFnOptions,\n ): StreamPromise<GetFlagsFnOutput> {\n return ClientFunctions.getFlags({ client: this }, input, options);\n }\n\n /**\n *\n * Get aggregated statistics about WAPI entities\n *\n * ```javascript\n *\n * const result = await wapiClient.getStatistics({\n * model: 'Transfer',\n * aggregator: 'count',\n * groups: [{\n * type: 'period',\n * field: {\n * period: 'month',\n * timezone: 'Europe/Tallinn',\n * },\n * }],\n * filter: {\n * end_time: (new Date(`${new Date().getFullYear() + 1}-01-01`)).toISOString(),\n * start_time: (new Date(`${new Date().getFullYear()}-01-01`)).toISOString(),\n * },\n * }, {\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n *\n * expect(result).toEqual({\n * rows: [\n * {\n * aggregate: 3,\n * period: `${new Date().getFullYear()}-${(new Date().getMonth() + 1 + '').padStart(2, '0')}`,\n * },\n * ],\n * });\n *\n * ```\n *\n * @param {GetStatisticsFnInput} [input]\n * @param {GetStatisticsFnOptions} [options]\n * @returns {StreamPromise<GetStatisticsFnOutput>}\n *\n */\n getStatistics(\n input?: GetStatisticsFnInput,\n options?: GetStatisticsFnOptions,\n ): StreamPromise<GetStatisticsFnOutput> {\n return ClientFunctions.getStatistics({ client: this }, input, options);\n }\n\n /**\n *\n * Get information about token\n *\n * ```javascript\n *\n * const result = await wapiClient.getToken({\n * foreign: 'EURO',\n * }, {\n * create_if_not_exists: true,\n * // return_only_id: true, // for example purposes we want more than id\n * ignore_cache: true,\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n *\n * expect(result).toEqual({\n * token: jasmine.objectContaining({\n * foreign: 'EURO',\n * metadata: null,\n * }),\n * });\n *\n * ```\n *\n * @param {GetTokenFnInput} [input]\n * @param {GetTokenFnOptions} [options]\n * @returns {StreamPromise<GetTokenFnOutput>}\n *\n */\n getToken(\n input?: GetTokenFnInput,\n options?: GetTokenFnOptions,\n ): StreamPromise<GetTokenFnOutput> {\n return ClientFunctions.getToken({ client: this }, input, options);\n }\n\n /**\n *\n * Get information about a specific transfer\n *\n * ```javascript\n *\n * const result = await wapiClient.getTransfer({\n * transfer: 'get-transfer-test',\n * }, {\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n * expect(result).toEqual({\n * transfer: jasmine.objectContaining({\n * identifier: 'get-transfer-test',\n * // ...\n * }),\n * });\n *\n * ```\n *\n * @param {GetTransferFnInput} input\n * @param {GetTransferFnOptions} [options]\n * @returns {StreamPromise<GetTransferFnOutput>}\n *\n */\n getTransfer(\n input: GetTransferFnInput,\n options?: GetTransferFnOptions,\n ): StreamPromise<GetTransferFnOutput> {\n return ClientFunctions.getTransfer({ client: this }, input, options);\n }\n\n /**\n *\n * Get TransferGroup information\n *\n * ```javascript\n *\n * const result = await wapiClient.getTransferGroup({\n * transfer_group: 'customIdentifier',\n * }, {\n * create_if_not_exists: true,\n * // return_only_id: true, // example requires more than just ID\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n * expect(result).toEqual({\n * transfer_group: jasmine.objectContaining({\n * identifier: 'customIdentifier',\n * metadata: null,\n * status: 'open',\n * transfer_status: 'pending',\n * status_finalized_at: null,\n * transfer_status_finalized_at: null,\n * reverses_id: null,\n * }),\n * });\n *\n * ```\n *\n * @param {GetTransferGroupFnInput} input\n * @param {GetTransferGroupFnOptions} [options]\n * @returns {StreamPromise<GetTransferGroupFnOutput>}\n *\n */\n getTransferGroup(\n input: GetTransferGroupFnInput,\n options?: GetTransferGroupFnOptions,\n ): StreamPromise<GetTransferGroupFnOutput> {\n return ClientFunctions.getTransferGroup({ client: this }, input, options);\n }\n\n /**\n *\n * Get information about wallet\n *\n * ```javascript\n *\n * const result = await wapiClient.getWallet({\n * wallet: WALLETS.withEURFunds0.foreign,\n * }, {\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * ignore_cache: true,\n * create_if_not_exists: true,\n * return_only_id: false,\n * });\n * expect(result).toEqual({\n * wallet: jasmine.objectContaining({\n * foreign: WALLETS.withEURFunds0.foreign,\n * }),\n * });\n *\n * ```\n *\n * @param {GetWalletFnInput} input\n * @param {GetWalletFnOptions} [options]\n * @returns {StreamPromise<GetWalletFnOutput>}\n *\n */\n getWallet(\n input: GetWalletFnInput,\n options?: GetWalletFnOptions,\n ): StreamPromise<GetWalletFnOutput> {\n return ClientFunctions.getWallet({ client: this }, input, options);\n }\n\n /**\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.importData().input(async (stream) => {\n * const fileStream = createReadStream(join(__dirname, '../lib/short-import.txt'));\n *\n * const rl = createInterface({\n * input: fileStream,\n * crlfDelay: Infinity\n * });\n * for await (const line of rl) {\n * // Each line in input.txt will be successively available here as `line`.\n * if (!line) {\n * continue;\n * }\n * const obj = JSON.parse(line);\n * stream.write(obj);\n * }\n * stream.end();\n * });\n *\n * ```\n *\n * @param {ImportDataFnInput} [input]\n * @param {ImportDataFnOptions} [options]\n * @returns {StreamPromise<ImportDataFnOutput>}\n *\n */\n importData(\n options?: ImportDataFnOptions,\n ): StreamPromiseInput<ImportDataFnOutput, ImportDataFnStreamChunk>;\n importData(\n input: ImportDataFnInput,\n options?: ImportDataFnOptions,\n ): StreamPromise<ImportDataFnOutput>;\n importData(\n input?: ImportDataFnInput | ImportDataFnOptions,\n options?: ImportDataFnOptions,\n ):\n | StreamPromise<ImportDataFnOutput>\n | StreamPromiseInput<ImportDataFnOutput, ImportDataFnStreamChunk> {\n if (input === undefined && options === undefined) {\n return ClientFunctions.importData({ client: this });\n }\n if (options === undefined && isImportDataFnOptions(input)) {\n return ClientFunctions.importData({ client: this }, input);\n }\n if (isImportDataFnInput(input)) {\n return ClientFunctions.importData({ client: this }, input, options);\n }\n throw new ValidationError({\n message: ERROR_MESSAGES.INPUT_INVALID,\n data: {\n input,\n options,\n },\n });\n }\n\n /**\n *\n * Reverse a transfer of value between two wallets\n * will cancel pending transfers and create opposite transfers for finished ones.\n *\n * ```javascript\n *\n * const result = await wapiClient.reverseTransfer({\n * transfer: 'MYDEPOSIT',\n * status: 'finished',\n * identifier: 'MYREVERSEDEPOSIT',\n * force: true,\n * // metadata: {},\n * metadata: {\n * extraCustomJSON: true,\n * },\n * }, {\n * reverse_deposit: true,\n * reverse_withdrawal: true,\n * return_to_balance: true,\n * return_from_balance: true,\n * metadata_action: 'extend',\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n * expect(result).toEqual({\n * transfer: jasmine.objectContaining({\n * identifier: 'MYREVERSEDEPOSIT',\n * amount: 10.01,\n * type: 'withdrawal',\n * status: 'finished',\n * force: true,\n * metadata: {\n * customJSON: true,\n * extraCustomJSON: true,\n * },\n * transfer_group_id: null,\n * reverses_id: DEPOSIT.id,\n * from_wallet_foreign: DEPOSIT.to_wallet_foreign,\n * to_wallet_foreign: DEPOSIT.from_wallet_foreign,\n * token_foreign: DEPOSIT.token_foreign,\n * // ...\n * }),\n * to_balance: jasmine.objectContaining({\n * token_foreign: DEPOSIT.token_foreign,\n * wallet_foreign: DEPOSIT.from_wallet_foreign,\n * // ...\n * }),\n * from_balance: jasmine.objectContaining({\n * token_foreign: DEPOSIT.token_foreign,\n * wallet_foreign: DEPOSIT.to_wallet_foreign,\n * // ...\n * }),\n * });\n *\n * ```\n *\n * @param {ReverseTransferFnInput} input\n * @param {ReverseTransferFnOptions} [options]\n * @returns {StreamPromise<ReverseTransferFnOutput>}\n *\n */\n reverseTransfer(\n input: ReverseTransferFnInput,\n options?: ReverseTransferFnOptions,\n ): StreamPromise<ReverseTransferFnOutput> {\n return ClientFunctions.reverseTransfer({ client: this }, input, options);\n }\n\n /**\n *\n * Similar to reverseTransfer will reverse value transfers, however it will reverse the whole\n * group with its children by creating a new group with opposite transfers.\n *\n * ```javascript\n *\n * // Should succeed if flag is set\n * const result = await wapiClient.reverseTransferGroup({\n * transfer_group: 'myCustom',\n * identifier: 'myCustomReverse',\n * metadata: {\n * extraCustomJSON: true,\n * },\n * transfer_status: 'finished',\n * }, {\n * validate_final_balance_only: true,\n * reverse_deposit: true,\n * reverse_withdrawal: true,\n * return_transfers: true,\n * metadata_action: 'extend',\n * transfer_metadata_action: 'extend',\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n *\n * expect(result).toEqual({\n * transfer_group: jasmine.objectContaining({\n * identifier: 'myCustomReverse',\n * status: 'closed',\n * metadata: {\n * customJSON: true,\n * extraCustomJSON: true,\n * },\n * transfer_status: 'finished',\n * }),\n * transfers: [\n * jasmine.objectContaining({\n * from_wallet_foreign: 'myWallet2',\n * to_wallet_foreign: 'myWallet1',\n * amount: 8,\n * type: 'transfer',\n * status: 'finished',\n * token_foreign: 'EUR',\n * }),\n * jasmine.objectContaining({\n * from_wallet_foreign: 'myWallet1',\n * to_wallet_foreign: 'EUR',\n * amount: 10,\n * type: 'withdrawal',\n * status: 'finished',\n * token_foreign: 'EUR',\n * }),\n * ],\n * });\n *\n * ```\n *\n * @param {ReverseTransferGroupFnInput} input\n * @param {ReverseTransferGroupFnOptions} [options]\n * @returns {StreamPromise<ReverseTransferGroupFnOutput>}\n *\n */\n reverseTransferGroup(\n input: ReverseTransferGroupFnInput,\n options?: ReverseTransferGroupFnOptions,\n ): StreamPromise<ReverseTransferGroupFnOutput> {\n return ClientFunctions.reverseTransferGroup(\n { client: this },\n input,\n options,\n );\n }\n\n /**\n *\n *\n * ```javascript\n *\n * const [[finishedTransfer1], [finishedTransfer2]] = await Promise.all([\n * TEST.knex('transfers').insert({\n * identifier: getTxIdSync(),\n * auto_hash: true,\n * amount: toNumberInput(10.12),\n * status: 'finished',\n * metadata: {\n * example: 'test'\n * },\n * from_wallet_id: WALLETS.withEURFunds0.id,\n * to_wallet_id: WALLETS.validId1,\n * token_id: TOKENS.EUR.id,\n * }).returning('*'),\n * TEST.knex('transfers').insert({\n * identifier: getTxIdSync(),\n * auto_hash: true,\n * amount: toNumberInput(10.12),\n * status: 'finished',\n * metadata: {\n * example: 'test'\n * },\n * from_wallet_id: WALLETS.withEURFunds0.id,\n * to_wallet_id: WALLETS.validId1,\n * token_id: TOKENS.EUR.id,\n * }).returning('*'),\n * ]);\n *\n * const result = await wapiClient.reverseTransfers({\n * metadata: {\n * example: 'test'\n * },\n * });\n *\n * const { transfers } = result;\n * expect(transfers.length).toEqual(2);\n *\n * expect(transfers[0].identifier).not.toEqual(finishedTransfer1.identifier);\n * expect(transfers[0].amount).toEqual(formatNumber(finishedTransfer1.amount));\n * expect(transfers[0].from_wallet_id).toEqual(finishedTransfer1.to_wallet_id);\n * expect(transfers[0].to_wallet_id).toEqual(finishedTransfer1.from_wallet_id);\n *\n * expect(transfers[1].identifier).not.toEqual(finishedTransfer2.identifier);\n * expect(transfers[1].amount).toEqual(formatNumber(finishedTransfer2.amount));\n * expect(transfers[1].from_wallet_id).toEqual(finishedTransfer2.to_wallet_id);\n * expect(transfers[1].to_wallet_id).toEqual(finishedTransfer2.from_wallet_id);\n *\n * ```\n *\n * @param {ReverseTransfersFnInput} [input]\n * @param {ReverseTransfersFnOptions} [options]\n * @returns {StreamPromise<ReverseTransfersFnOutput>}\n *\n */\n reverseTransfers(): ReverseQueryBuilder<\n ReverseTransfersFnFields,\n ReverseTransfersFnStringFields,\n ReverseTransfersFnMetadataFields,\n ReverseTransfersFnModifications,\n ReverseTransfersFnOutput\n >;\n reverseTransfers(\n input: ReverseTransfersFnInput,\n options?: ReverseTransfersFnOptions,\n ): StreamPromise<ReverseTransfersFnOutput>;\n reverseTransfers(\n input?: ReverseTransfersFnInput,\n options?: ReverseTransfersFnOptions,\n ):\n | StreamPromise<ReverseTransfersFnOutput>\n | ReverseQueryBuilder<\n ReverseTransfersFnFields,\n ReverseTransfersFnStringFields,\n ReverseTransfersFnMetadataFields,\n ReverseTransfersFnModifications,\n ReverseTransfersFnOutput\n > {\n if (input === undefined) {\n return ClientFunctions.reverseTransfers({ client: this });\n }\n return ClientFunctions.reverseTransfers({ client: this }, input, options);\n }\n\n /**\n *\n * Configure WAPI instance Flags\n *\n * ```javascript\n *\n * const result = await wapiClient.setFlags({\n * production: false,\n * allow_timestamps: true,\n * }, {\n * tracking_id: 'mylog',\n * });\n * expect(result).toEqual({\n * flags: {\n * production: false,\n * allow_timestamps: true,\n * },\n * message: 'flag updated, reconnect to apply',\n * });\n *\n * ```\n *\n * @param {SetFlagsFnInput} input\n * @param {SetFlagsFnOptions} [options]\n * @returns {StreamPromise<SetFlagsFnOutput>}\n *\n */\n setFlags(\n input: SetFlagsFnInput,\n options?: SetFlagsFnOptions,\n ): StreamPromise<SetFlagsFnOutput> {\n return ClientFunctions.setFlags({ client: this }, input, options);\n }\n\n /**\n * Update token object\n *\n * ```javascript\n *\n * const result = await wapiClient.updateToken(\n * {\n * token: TOKENS.EUR.foreign,\n * public: false,\n * metadata: {\n * metadata_field: 2,\n * },\n * status: 'disabled',\n * },\n * {\n * return_when_not_updated: true,\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * },\n * );\n * expect(result).toEqual({\n * token: jasmine.objectContaining({\n * belongs_to: TOKENS.EUR.belongs_to,\n * divisor: TOKENS.EUR.divisor,\n * id: TOKENS.EUR.id,\n * limit: TOKENS.EUR.limit,\n * metadata: {\n * metadata_field: 2,\n * },\n * type: TOKENS.EUR.type,\n * foreign: TOKENS.EUR.foreign,\n * public: false,\n * status: 'disabled',\n * }),\n * updated: true,\n * });\n *\n * ```\n *\n * @param {UpdateTokenFnInput} input\n * @param {UpdateTokenFnOptions} [options]\n * @returns {StreamPromise<UpdateTokenFnOutput>}\n *\n */\n updateToken(\n input: UpdateTokenFnInput,\n options?: UpdateTokenFnOptions,\n ): StreamPromise<UpdateTokenFnOutput> {\n return ClientFunctions.updateToken({ client: this }, input, options);\n }\n\n /**\n *\n * Update the status of a Transfer (pending to finished or cancelled)\n *\n * ```javascript\n *\n * const result = await wapiClient.updateTransfer({\n * transfer: 'myPendingDeposit',\n * status: 'cancelled',\n * metadata: {\n * meta: 'new',\n * was: true,\n * },\n * }, {\n * return_from_balance: true,\n * return_to_balance: true,\n * return_when_not_updated: true,\n * metadata_action: 'extend',\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n * expect(result).toEqual({\n * transfer: jasmine.objectContaining({\n * identifier: 'myPendingDeposit',\n * amount: 10.01,\n * type: 'deposit',\n * status: 'cancelled',\n * transfer_group_id: null,\n * reverses_id: null,\n * from_wallet_foreign: 'EURO',\n * to_wallet_foreign: 'myWallet',\n * token_foreign: 'EURO',\n * metadata: {\n * meta: 'new',\n * is: true,\n * was: true,\n * }\n * }),\n * to_balance: jasmine.objectContaining({\n * token_foreign: 'EURO',\n * wallet_foreign: 'myWallet',\n * pending_amount: 0,\n * finished_amount: 0,\n * amount: 0,\n * }),\n * from_balance: jasmine.objectContaining({\n * token_foreign: 'EURO',\n * wallet_foreign: 'EURO',\n * pending_amount: 0,\n * finished_amount: 0,\n * amount: 0,\n * }),\n * updated: true,\n * });\n *\n * ```\n *\n * @param {UpdateTransferFnInput} input\n * @param {UpdateTransferFnOptions} [options]\n * @returns {StreamPromise<UpdateTransferFnOutput>}\n *\n */\n updateTransfer(\n input: UpdateTransferFnInput,\n options?: UpdateTransferFnOptions,\n ): StreamPromise<UpdateTransferFnOutput> {\n return ClientFunctions.updateTransfer({ client: this }, input, options);\n }\n\n /**\n *\n * Update the status and transfer_status of a TransferGroup\n *\n * ```javascript\n *\n * const result = await wapiClient.updateTransferGroup({\n * transfer_group: 'myCustom',\n * status: 'closed',\n * transfer_status: 'finished',\n * }, {\n * return_transfers: true,\n * return_when_not_updated: true,\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * });\n * expect(result).toEqual({\n * transfer_group: jasmine.objectContaining({\n * identifier: 'myCustom',\n * status: 'closed',\n * transfer_status: 'finished',\n * }),\n * transfers: [\n * jasmine.objectContaining({\n * identifier: 'transferA',\n * type: 'deposit',\n * status: 'finished',\n * from_wallet_foreign: 'EUR',\n * to_wallet_foreign: 'myWallet1',\n * token_foreign: 'EUR',\n * }),\n * jasmine.objectContaining({\n * identifier: 'transferB',\n * type: 'transfer',\n * status: 'finished',\n * from_wallet_foreign: 'myWallet1',\n * to_wallet_foreign: 'myWallet2',\n * token_foreign: 'EUR',\n * }),\n * ],\n * updated: true,\n * });\n *\n * ```\n *\n * @param {UpdateTransferGroupFnInput} input\n * @param {UpdateTransferGroupFnOptions} [options]\n * @returns {StreamPromise<UpdateTransferGroupFnOutput>}\n *\n */\n updateTransferGroup(\n input: UpdateTransferGroupFnInput,\n options?: UpdateTransferGroupFnOptions,\n ): StreamPromise<UpdateTransferGroupFnOutput> {\n return ClientFunctions.updateTransferGroup(\n { client: this },\n input,\n options,\n );\n }\n\n /**\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.updateTransferGroups()\n * .where({\n * status: 'open',\n * })\n * .whereIn('identifier', ['transferGroup1', 'transferGroup2'])\n * .whereMetadata('old', 'data')\n * .update({\n * transfer_status: 'finished',\n * })\n * .options({\n * return_transfers: true,\n * });\n *\n * ```\n *\n * @param {UpdateTransferGroupsFnInput} [input]\n * @param {UpdateTransferGroupsFnOptions} [options]\n * @returns {StreamPromise<UpdateTransferGroupsFnOutput>}\n *\n */\n updateTransferGroups(): UpdateQueryBuilder<\n UpdateTransferGroupsFnFields,\n UpdateTransferGroupsFnStringFields,\n UpdateTransferGroupsFnMetadataFields,\n UpdateTransferGroupsFnResultFields,\n UpdateTransferGroupsFnUpdateFields,\n UpdateTransferGroupsFnOutput\n >;\n updateTransferGroups(\n input: UpdateTransferGroupsFnInput,\n options?: UpdateTransferGroupsFnOptions,\n ): StreamPromise<UpdateTransferGroupsFnOutput>;\n updateTransferGroups(\n input?: UpdateTransferGroupsFnInput,\n options?: UpdateTransferGroupsFnOptions,\n ):\n | StreamPromise<UpdateTransferGroupsFnOutput>\n | UpdateQueryBuilder<\n UpdateTransferGroupsFnFields,\n UpdateTransferGroupsFnStringFields,\n UpdateTransferGroupsFnMetadataFields,\n UpdateTransferGroupsFnResultFields,\n UpdateTransferGroupsFnUpdateFields,\n UpdateTransferGroupsFnOutput\n > {\n if (input === undefined) {\n return ClientFunctions.updateTransferGroups({ client: this });\n }\n return ClientFunctions.updateTransferGroups(\n { client: this },\n input,\n options,\n );\n }\n\n /**\n *\n *\n * ```javascript\n *\n * const result = await wapiClient.updateTransfers({\n * metadata: {\n * example: 'test',\n * },\n * wallet: WALLETS.validId1.foreign,\n * token: 'EUR',\n * update: {\n * status: 'finished',\n * },\n * });\n *\n * expect(result.transfers.length).toEqual(1);\n * expect(result.transfers[0].status).toEqual('finished');\n * expect(result.updated).toEqual(true);\n *\n * ```\n *\n * @param {UpdateTransfersFnInput} [input]\n * @param {UpdateTransfersFnOptions} [options]\n * @returns {StreamPromise<UpdateTransfersFnOutput>}\n *\n */\n updateTransfers(): UpdateQueryBuilder<\n UpdateTransfersFnFields,\n UpdateTransfersFnStringFields,\n UpdateTransfersFnMetadataFields,\n UpdateTransfersFnResultFields,\n UpdateTransfersFnUpdateFields,\n UpdateTransfersFnOutput\n >;\n updateTransfers(\n input: UpdateTransfersFnInput,\n options?: UpdateTransfersFnOptions,\n ): StreamPromise<UpdateTransfersFnOutput>;\n updateTransfers(\n input?: UpdateTransfersFnInput,\n options?: UpdateTransfersFnOptions,\n ):\n | StreamPromise<UpdateTransfersFnOutput>\n | UpdateQueryBuilder<\n UpdateTransfersFnFields,\n UpdateTransfersFnStringFields,\n UpdateTransfersFnMetadataFields,\n UpdateTransfersFnResultFields,\n UpdateTransfersFnUpdateFields,\n UpdateTransfersFnOutput\n > {\n if (input === undefined) {\n return ClientFunctions.updateTransfers({ client: this });\n }\n return ClientFunctions.updateTransfers({ client: this }, input, options);\n }\n\n /**\n * Update Wallet\n *\n * ```javascript\n *\n * const result = await wapiClient.updateWallet(\n * {\n * wallet: WALLETS.withEURFunds0.foreign,\n * name: 'WT4',\n * status: 'disabled',\n * metadata: {\n * metadata_number: 2,\n * },\n * },\n * {\n * return_when_not_updated: true,\n * tracking_id: 'mylogId',\n * // transaction_id: Transaction.identifier, // created transaction identifier\n * },\n * );\n * expect(result).toEqual({\n * wallet: jasmine.objectContaining({\n * id: WALLETS.withEURFunds0.id,\n * foreign: WALLETS.withEURFunds0.foreign,\n * name: 'WT4',\n * metadata: {metadata_number: 2},\n * type: WALLETS.withEURFunds0.type,\n * status: 'disabled',\n * default_allow_negative: false,\n * default_allow_positive: true,\n * default_dtw_from: '011',\n * default_dtw_to: '110',\n * }),\n * updated: true,\n * });\n *\n * ```\n *\n * @param {UpdateWalletFnInput} input\n * @param {UpdateWalletFnOptions} [options]\n * @returns {StreamPromise<UpdateWalletFnOutput>}\n *\n */\n updateWallet(\n input: UpdateWalletFnInput,\n options?: UpdateWalletFnOptions,\n ): StreamPromise<UpdateWalletFnOutput> {\n return ClientFunctions.updateWallet({ client: this }, input, options);\n }\n\n // CLIENTFNDEFS\n}\n\nexport function createClientWithWS(\n opts: WapiConnectionOptions,\n config?: ClientConfig,\n): Client {\n const wsClient = createWsClient(opts);\n return new Client(wsClient, config);\n}\n","import { WapiConnectionOptions } from './api';\nimport { Client, ClientConfig, createClientWithWS } from './client';\nimport {\n ERROR_MESSAGES as ErrorMessage,\n ERROR_TYPES as Errors,\n} from './lib/errors';\nimport { QueryBuilder } from './lib/query-builder';\nimport { StreamPromise } from './lib/stream-promise';\nimport { getIdentifier } from './lib/utils';\nimport { SchemaNames, Validator } from './lib/validator';\n\nconst validate = Validator.getValidator(SchemaNames.ClientOptions);\n// Still exporting for backwards compatibility\nexport enum WapiClientType {\n ws = 'ws',\n}\n\nexport interface WapiClientOptions {\n client: 'ws';\n connection: WapiConnectionOptions;\n config?: ClientConfig;\n}\n/**\n *\n * Create a WAPI Client\n *\n * ```javascript\n *\n * const client = WAPI.create({\n * client: WAPI.WapiClientType.ws,\n * connection: {\n * host: 'https://myhost',\n * apikey: 'apikey',\n * apisecret: 'myapisecret',\n * },\n * config: {\n * hooks: {\n * connected() {\n * console.log('connected');\n * },\n * disconnected() {\n * console.log('disconnected');\n * },\n * reconnect() {\n * console.log('reconnected');\n * },\n * preflight(msg) => {\n * console.log('sending msg', msg);\n * return true; // allow\n * },\n * message(msg) => {\n * console.log('got msg', msg);\n * },\n * },\n * token: 'EUR', // default token\n * }\n * });\n *\n * await client.$connect;\n *\n * ```\n *\n * @param {WapiClientOptions} options\n * @returns {Client}\n *\n */\nexport function create(options: WapiClientOptions): Client {\n // As we cant validate objects with functions\n // then we separate the config object\n const config = options.config;\n\n const { inputCopy, error } = validate(options);\n if (error) {\n throw error;\n }\n\n if (inputCopy.client === 'ws') {\n return createClientWithWS(inputCopy.connection, config);\n }\n\n throw new TypeError('Invalid client type');\n}\n\n/**\n * Utility functions\n */\nexport const utils = {\n /**\n * Return a uuidv4\n */\n getIdentifier,\n};\n\nexport { Validator, Client, Errors, ErrorMessage, QueryBuilder, StreamPromise };\nexport * from './db';\nexport * from './fns';\nexport * from './txs';\n"],"names":["ErrorMessage","inputValidator","optionsValidator","validate","chunkValidator","clientVersion","createWsClient"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}