@0xtorch/core 0.0.11 → 0.0.13

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 (98) hide show
  1. package/_cjs/actions/index.js +5 -3
  2. package/_cjs/actions/index.js.map +1 -1
  3. package/_cjs/actions/parsers/action.js +343 -0
  4. package/_cjs/actions/parsers/action.js.map +1 -0
  5. package/_cjs/actions/parsers/crossReplace/bridgeFrom.js +1 -0
  6. package/_cjs/actions/parsers/crossReplace/bridgeFrom.js.map +1 -1
  7. package/_cjs/actions/parsers/crossReplace/bridgeTo.js +1 -0
  8. package/_cjs/actions/parsers/crossReplace/bridgeTo.js.map +1 -1
  9. package/_cjs/actions/parsers/crossReplace/crossReplace.js +1 -0
  10. package/_cjs/actions/parsers/crossReplace/crossReplace.js.map +1 -1
  11. package/_cjs/actions/parsers/crossTrade/crossTrade.js +1 -0
  12. package/_cjs/actions/parsers/crossTrade/crossTrade.js.map +1 -1
  13. package/_cjs/actions/parsers/index.js +3 -1
  14. package/_cjs/actions/parsers/index.js.map +1 -1
  15. package/_cjs/actions/schemas/default/accountAction.js +1 -0
  16. package/_cjs/actions/schemas/default/accountAction.js.map +1 -1
  17. package/_cjs/actions/schemas/default/index.js +3 -1
  18. package/_cjs/actions/schemas/default/index.js.map +1 -1
  19. package/_cjs/actions/schemas/default/normalAction.js +1 -0
  20. package/_cjs/actions/schemas/default/normalAction.js.map +1 -1
  21. package/_cjs/actions/schemas/default/unions.js +3 -1
  22. package/_cjs/actions/schemas/default/unions.js.map +1 -1
  23. package/_cjs/actions/schemas/index.js +4 -3
  24. package/_cjs/actions/schemas/index.js.map +1 -1
  25. package/_cjs/index.js +5 -3
  26. package/_cjs/index.js.map +1 -1
  27. package/_esm/actions/index.js +2 -2
  28. package/_esm/actions/index.js.map +1 -1
  29. package/_esm/actions/parsers/action.js +339 -0
  30. package/_esm/actions/parsers/action.js.map +1 -0
  31. package/_esm/actions/parsers/crossReplace/bridgeFrom.js +1 -0
  32. package/_esm/actions/parsers/crossReplace/bridgeFrom.js.map +1 -1
  33. package/_esm/actions/parsers/crossReplace/bridgeTo.js +1 -0
  34. package/_esm/actions/parsers/crossReplace/bridgeTo.js.map +1 -1
  35. package/_esm/actions/parsers/crossReplace/crossReplace.js +1 -0
  36. package/_esm/actions/parsers/crossReplace/crossReplace.js.map +1 -1
  37. package/_esm/actions/parsers/crossTrade/crossTrade.js +1 -0
  38. package/_esm/actions/parsers/crossTrade/crossTrade.js.map +1 -1
  39. package/_esm/actions/parsers/index.js +1 -0
  40. package/_esm/actions/parsers/index.js.map +1 -1
  41. package/_esm/actions/schemas/default/accountAction.js +2 -1
  42. package/_esm/actions/schemas/default/accountAction.js.map +1 -1
  43. package/_esm/actions/schemas/default/index.js +1 -0
  44. package/_esm/actions/schemas/default/index.js.map +1 -1
  45. package/_esm/actions/schemas/default/normalAction.js +2 -1
  46. package/_esm/actions/schemas/default/normalAction.js.map +1 -1
  47. package/_esm/actions/schemas/default/unions.js +2 -0
  48. package/_esm/actions/schemas/default/unions.js.map +1 -1
  49. package/_esm/actions/schemas/index.js +1 -1
  50. package/_esm/actions/schemas/index.js.map +1 -1
  51. package/_esm/index.js +1 -1
  52. package/_esm/index.js.map +1 -1
  53. package/_types/actions/index.d.ts +2 -2
  54. package/_types/actions/index.d.ts.map +1 -1
  55. package/_types/actions/parsers/action.d.ts +4 -0
  56. package/_types/actions/parsers/action.d.ts.map +1 -0
  57. package/_types/actions/parsers/crossReplace/bridgeFrom.d.ts.map +1 -1
  58. package/_types/actions/parsers/crossReplace/bridgeTo.d.ts.map +1 -1
  59. package/_types/actions/parsers/crossReplace/crossReplace.d.ts.map +1 -1
  60. package/_types/actions/parsers/crossTrade/crossTrade.d.ts.map +1 -1
  61. package/_types/actions/parsers/index.d.ts +1 -0
  62. package/_types/actions/parsers/index.d.ts.map +1 -1
  63. package/_types/actions/schemas/action.d.ts +40 -0
  64. package/_types/actions/schemas/action.d.ts.map +1 -1
  65. package/_types/actions/schemas/crossReplace/bridgeFrom.d.ts +10 -0
  66. package/_types/actions/schemas/crossReplace/bridgeFrom.d.ts.map +1 -1
  67. package/_types/actions/schemas/crossReplace/bridgeTo.d.ts +10 -0
  68. package/_types/actions/schemas/crossReplace/bridgeTo.d.ts.map +1 -1
  69. package/_types/actions/schemas/crossReplace/crossReplace.d.ts +10 -0
  70. package/_types/actions/schemas/crossReplace/crossReplace.d.ts.map +1 -1
  71. package/_types/actions/schemas/crossTrade/crossTrade.d.ts +10 -0
  72. package/_types/actions/schemas/crossTrade/crossTrade.d.ts.map +1 -1
  73. package/_types/actions/schemas/default/accountAction.d.ts +3 -0
  74. package/_types/actions/schemas/default/accountAction.d.ts.map +1 -1
  75. package/_types/actions/schemas/default/index.d.ts +1 -0
  76. package/_types/actions/schemas/default/index.d.ts.map +1 -1
  77. package/_types/actions/schemas/default/normalAction.d.ts +3 -0
  78. package/_types/actions/schemas/default/normalAction.d.ts.map +1 -1
  79. package/_types/actions/schemas/default/unions.d.ts +1 -0
  80. package/_types/actions/schemas/default/unions.d.ts.map +1 -1
  81. package/_types/actions/schemas/index.d.ts +1 -1
  82. package/_types/actions/schemas/index.d.ts.map +1 -1
  83. package/_types/index.d.ts +1 -1
  84. package/_types/index.d.ts.map +1 -1
  85. package/actions/index.ts +2 -0
  86. package/actions/parsers/action.ts +392 -0
  87. package/actions/parsers/crossReplace/bridgeFrom.ts +1 -0
  88. package/actions/parsers/crossReplace/bridgeTo.ts +1 -0
  89. package/actions/parsers/crossReplace/crossReplace.ts +1 -0
  90. package/actions/parsers/crossTrade/crossTrade.ts +1 -0
  91. package/actions/parsers/index.ts +1 -0
  92. package/actions/schemas/default/accountAction.ts +6 -1
  93. package/actions/schemas/default/index.ts +1 -0
  94. package/actions/schemas/default/normalAction.ts +6 -1
  95. package/actions/schemas/default/unions.ts +3 -0
  96. package/actions/schemas/index.ts +1 -0
  97. package/index.ts +2 -0
  98. package/package.json +1 -1
@@ -0,0 +1,392 @@
1
+ import type { AccountAction, NormalAction } from '../types'
2
+ import {
3
+ parseNormalActionBorrowToAccountActions,
4
+ parseNormalActionBorrowWithDebtToAccountActions,
5
+ } from './borrow'
6
+ import {
7
+ parseNormalActionBridgeFromToAccountActions,
8
+ parseNormalActionBridgeToToAccountActions,
9
+ parseNormalActionCrossReplaceToAccountActions,
10
+ } from './crossReplace'
11
+ import { parseNormalActionCrossTradeToAccountActions } from './crossTrade'
12
+ import {
13
+ parseNormalActionAddLiquidityToAccountActions,
14
+ parseNormalActionDepositToAccountActions,
15
+ parseNormalActionDepositWithBondToAccountActions,
16
+ parseNormalActionStakeToAccountActions,
17
+ } from './deposit'
18
+ import {
19
+ parseNormalActionFeeToAccountActions,
20
+ parseNormalActionTransactionFeeToAccountActions,
21
+ } from './fee'
22
+ import {
23
+ parseNormalActionApproveToAccountActions,
24
+ parseNormalActionFailTxToAccountActions,
25
+ parseNormalActionReceiveFromCexToAccountActions,
26
+ parseNormalActionRevokeToAccountActions,
27
+ parseNormalActionSendToCexToAccountActions,
28
+ parseNormalActionSpamToAccountActions,
29
+ } from './ignore'
30
+ import {
31
+ parseNormalActionAtomicArbitrageToAccountActions,
32
+ parseNormalActionFreeMintNftToAccountActions,
33
+ parseNormalActionIncomeToAccountActions,
34
+ } from './income'
35
+ import {
36
+ parseNormalActionRepaymentToAccountActions,
37
+ parseNormalActionRepaymentWithDebtToAccountActions,
38
+ } from './repayment'
39
+ import {
40
+ parseNormalActionReplaceToAccountActions,
41
+ parseNormalActionSwapNftToAccountActions,
42
+ parseNormalActionUnwrapToAccountActions,
43
+ parseNormalActionWrapToAccountActions,
44
+ } from './replace'
45
+ import {
46
+ parseNormalActionBuyCryptoToAccountActions,
47
+ parseNormalActionBuyNftToAccountActions,
48
+ parseNormalActionMintNftToAccountActions,
49
+ parseNormalActionSellCryptoToAccountActions,
50
+ parseNormalActionSellNftToAccountActions,
51
+ parseNormalActionTradeToAccountActions,
52
+ } from './trade'
53
+ import { parseNormalActionTransferToAccountActions } from './transfer'
54
+ import type { ParseNormalActionToAccountActionsParameters } from './types'
55
+ import { parseNormalActionValuedownToAccountActions } from './valuedown'
56
+ import { parseNormalActionValueupToAccountActions } from './valueup'
57
+ import {
58
+ parseNormalActionRemoveLiquidityToAccountActions,
59
+ parseNormalActionUnstakeToAccountActions,
60
+ parseNormalActionWithdrawToAccountActions,
61
+ parseNormalActionWithdrawWithBondToAccountActions,
62
+ } from './withdraw'
63
+
64
+ export const parseNormalActionToAccountActions = ({
65
+ action,
66
+ accountIds,
67
+ source,
68
+ cexAccountIds,
69
+ }: ParseNormalActionToAccountActionsParameters<NormalAction>): readonly AccountAction[] => {
70
+ switch (action.action) {
71
+ case 'add-liquidity': {
72
+ return parseNormalActionAddLiquidityToAccountActions({
73
+ action,
74
+ accountIds,
75
+ source,
76
+ cexAccountIds,
77
+ })
78
+ }
79
+ case 'approve': {
80
+ return parseNormalActionApproveToAccountActions({
81
+ action,
82
+ accountIds,
83
+ source,
84
+ cexAccountIds,
85
+ })
86
+ }
87
+ case 'atomic-arbitrage': {
88
+ return parseNormalActionAtomicArbitrageToAccountActions({
89
+ action,
90
+ accountIds,
91
+ source,
92
+ cexAccountIds,
93
+ })
94
+ }
95
+ case 'borrow': {
96
+ return parseNormalActionBorrowToAccountActions({
97
+ action,
98
+ accountIds,
99
+ source,
100
+ cexAccountIds,
101
+ })
102
+ }
103
+ case 'bridge-from': {
104
+ return parseNormalActionBridgeFromToAccountActions({
105
+ action,
106
+ accountIds,
107
+ source,
108
+ cexAccountIds,
109
+ })
110
+ }
111
+ case 'bridge-to': {
112
+ return parseNormalActionBridgeToToAccountActions({
113
+ action,
114
+ accountIds,
115
+ source,
116
+ cexAccountIds,
117
+ })
118
+ }
119
+ case 'buy-crypto': {
120
+ return parseNormalActionBuyCryptoToAccountActions({
121
+ action,
122
+ accountIds,
123
+ source,
124
+ cexAccountIds,
125
+ })
126
+ }
127
+ case 'buy-nft': {
128
+ return parseNormalActionBuyNftToAccountActions({
129
+ action,
130
+ accountIds,
131
+ source,
132
+ cexAccountIds,
133
+ })
134
+ }
135
+ case 'cross-replace': {
136
+ return parseNormalActionCrossReplaceToAccountActions({
137
+ action,
138
+ accountIds,
139
+ source,
140
+ cexAccountIds,
141
+ })
142
+ }
143
+ case 'cross-trade': {
144
+ return parseNormalActionCrossTradeToAccountActions({
145
+ action,
146
+ accountIds,
147
+ source,
148
+ cexAccountIds,
149
+ })
150
+ }
151
+ case 'deposit': {
152
+ return parseNormalActionDepositToAccountActions({
153
+ action,
154
+ accountIds,
155
+ source,
156
+ cexAccountIds,
157
+ })
158
+ }
159
+ case 'fail-tx': {
160
+ return parseNormalActionFailTxToAccountActions({
161
+ action,
162
+ accountIds,
163
+ source,
164
+ cexAccountIds,
165
+ })
166
+ }
167
+ case 'fee': {
168
+ return parseNormalActionFeeToAccountActions({
169
+ action,
170
+ accountIds,
171
+ source,
172
+ cexAccountIds,
173
+ })
174
+ }
175
+ case 'free-mint-nft': {
176
+ return parseNormalActionFreeMintNftToAccountActions({
177
+ action,
178
+ accountIds,
179
+ source,
180
+ cexAccountIds,
181
+ })
182
+ }
183
+ case 'income': {
184
+ return parseNormalActionIncomeToAccountActions({
185
+ action,
186
+ accountIds,
187
+ source,
188
+ cexAccountIds,
189
+ })
190
+ }
191
+ case 'mint-nft': {
192
+ return parseNormalActionMintNftToAccountActions({
193
+ action,
194
+ accountIds,
195
+ source,
196
+ cexAccountIds,
197
+ })
198
+ }
199
+ case 'receive-from-cex': {
200
+ return parseNormalActionReceiveFromCexToAccountActions({
201
+ action,
202
+ accountIds,
203
+ source,
204
+ cexAccountIds,
205
+ })
206
+ }
207
+ case 'repayment': {
208
+ return parseNormalActionRepaymentToAccountActions({
209
+ action,
210
+ accountIds,
211
+ source,
212
+ cexAccountIds,
213
+ })
214
+ }
215
+ case 'repayment-with-debt': {
216
+ return parseNormalActionRepaymentWithDebtToAccountActions({
217
+ action,
218
+ accountIds,
219
+ source,
220
+ cexAccountIds,
221
+ })
222
+ }
223
+ case 'replace': {
224
+ return parseNormalActionReplaceToAccountActions({
225
+ action,
226
+ accountIds,
227
+ source,
228
+ cexAccountIds,
229
+ })
230
+ }
231
+ case 'sell-crypto': {
232
+ return parseNormalActionSellCryptoToAccountActions({
233
+ action,
234
+ accountIds,
235
+ source,
236
+ cexAccountIds,
237
+ })
238
+ }
239
+ case 'sell-nft': {
240
+ return parseNormalActionSellNftToAccountActions({
241
+ action,
242
+ accountIds,
243
+ source,
244
+ cexAccountIds,
245
+ })
246
+ }
247
+ case 'spam': {
248
+ return parseNormalActionSpamToAccountActions({
249
+ action,
250
+ accountIds,
251
+ source,
252
+ cexAccountIds,
253
+ })
254
+ }
255
+ case 'stake': {
256
+ return parseNormalActionStakeToAccountActions({
257
+ action,
258
+ accountIds,
259
+ source,
260
+ cexAccountIds,
261
+ })
262
+ }
263
+ case 'borrow-with-debt': {
264
+ return parseNormalActionBorrowWithDebtToAccountActions({
265
+ action,
266
+ accountIds,
267
+ source,
268
+ cexAccountIds,
269
+ })
270
+ }
271
+ case 'swap-nft': {
272
+ return parseNormalActionSwapNftToAccountActions({
273
+ action,
274
+ accountIds,
275
+ source,
276
+ cexAccountIds,
277
+ })
278
+ }
279
+ case 'transaction-fee': {
280
+ return parseNormalActionTransactionFeeToAccountActions({
281
+ action,
282
+ accountIds,
283
+ source,
284
+ cexAccountIds,
285
+ })
286
+ }
287
+ case 'trade': {
288
+ return parseNormalActionTradeToAccountActions({
289
+ action,
290
+ accountIds,
291
+ source,
292
+ cexAccountIds,
293
+ })
294
+ }
295
+ case 'transfer': {
296
+ return parseNormalActionTransferToAccountActions({
297
+ action,
298
+ accountIds,
299
+ source,
300
+ cexAccountIds,
301
+ })
302
+ }
303
+ case 'unstake': {
304
+ return parseNormalActionUnstakeToAccountActions({
305
+ action,
306
+ accountIds,
307
+ source,
308
+ cexAccountIds,
309
+ })
310
+ }
311
+ case 'unwrap': {
312
+ return parseNormalActionUnwrapToAccountActions({
313
+ action,
314
+ accountIds,
315
+ source,
316
+ cexAccountIds,
317
+ })
318
+ }
319
+ case 'valuedown': {
320
+ return parseNormalActionValuedownToAccountActions({
321
+ action,
322
+ accountIds,
323
+ source,
324
+ cexAccountIds,
325
+ })
326
+ }
327
+ case 'valueup': {
328
+ return parseNormalActionValueupToAccountActions({
329
+ action,
330
+ accountIds,
331
+ source,
332
+ cexAccountIds,
333
+ })
334
+ }
335
+ case 'withdraw': {
336
+ return parseNormalActionWithdrawToAccountActions({
337
+ action,
338
+ accountIds,
339
+ source,
340
+ cexAccountIds,
341
+ })
342
+ }
343
+ case 'withdraw-with-bond': {
344
+ return parseNormalActionWithdrawWithBondToAccountActions({
345
+ action,
346
+ accountIds,
347
+ source,
348
+ cexAccountIds,
349
+ })
350
+ }
351
+ case 'wrap': {
352
+ return parseNormalActionWrapToAccountActions({
353
+ action,
354
+ accountIds,
355
+ source,
356
+ cexAccountIds,
357
+ })
358
+ }
359
+ case 'revoke': {
360
+ return parseNormalActionRevokeToAccountActions({
361
+ action,
362
+ accountIds,
363
+ source,
364
+ cexAccountIds,
365
+ })
366
+ }
367
+ case 'send-to-cex': {
368
+ return parseNormalActionSendToCexToAccountActions({
369
+ action,
370
+ accountIds,
371
+ source,
372
+ cexAccountIds,
373
+ })
374
+ }
375
+ case 'remove-liquidity': {
376
+ return parseNormalActionRemoveLiquidityToAccountActions({
377
+ action,
378
+ accountIds,
379
+ source,
380
+ cexAccountIds,
381
+ })
382
+ }
383
+ case 'deposit-with-bond': {
384
+ return parseNormalActionDepositWithBondToAccountActions({
385
+ action,
386
+ accountIds,
387
+ source,
388
+ cexAccountIds,
389
+ })
390
+ }
391
+ }
392
+ }
@@ -35,6 +35,7 @@ export const parseNormalActionBridgeFromToAccountActions = ({
35
35
  type: 'CrossAccountAction',
36
36
  action: 'bridge-from',
37
37
  crossId: action.crossId,
38
+ crossType: action.crossType,
38
39
  transfers: action.transfers,
39
40
  },
40
41
  ]
@@ -35,6 +35,7 @@ export const parseNormalActionBridgeToToAccountActions = ({
35
35
  type: 'CrossAccountAction',
36
36
  action: 'bridge-to',
37
37
  crossId: action.crossId,
38
+ crossType: action.crossType,
38
39
  transfers: action.transfers,
39
40
  },
40
41
  ]
@@ -35,6 +35,7 @@ export const parseNormalActionCrossReplaceToAccountActions = ({
35
35
  type: 'CrossAccountAction',
36
36
  action: 'cross-replace',
37
37
  crossId: action.crossId,
38
+ crossType: action.crossType,
38
39
  transfers: action.transfers,
39
40
  },
40
41
  ]
@@ -35,6 +35,7 @@ export const parseNormalActionCrossTradeToAccountActions = ({
35
35
  type: 'CrossAccountAction',
36
36
  action: 'cross-trade',
37
37
  crossId: action.crossId,
38
+ crossType: action.crossType,
38
39
  transfers: action.transfers,
39
40
  },
40
41
  ]
@@ -1,3 +1,4 @@
1
+ export { parseNormalActionToAccountActions } from './action'
1
2
  export {
2
3
  parseNormalActionBorrowToAccountActions,
3
4
  parseNormalActionBorrowWithDebtToAccountActions,
@@ -1,7 +1,11 @@
1
1
  import { z } from 'zod'
2
2
  import { appSchema } from '../../../apps'
3
3
  import { transferSchema } from './transfer'
4
- import { accountActionUnionSchema, evidenceUnionSchema } from './unions'
4
+ import {
5
+ accountActionUnionSchema,
6
+ crossTypeSchema,
7
+ evidenceUnionSchema,
8
+ } from './unions'
5
9
 
6
10
  const accountActionDefaultSchema = z.object({
7
11
  action: accountActionUnionSchema,
@@ -23,6 +27,7 @@ export const crossAccountActionDefaultSchema =
23
27
  accountActionDefaultSchema.extend({
24
28
  type: z.literal('CrossAccountAction'),
25
29
  crossId: z.string(),
30
+ crossType: crossTypeSchema,
26
31
  })
27
32
 
28
33
  export const loanAccountActionDefaultSchema = accountActionDefaultSchema.extend(
@@ -24,3 +24,4 @@ export {
24
24
  transferOutSchema,
25
25
  transferSchema,
26
26
  } from './transfer'
27
+ export { crossTypeSchema } from './unions'
@@ -1,7 +1,11 @@
1
1
  import { z } from 'zod'
2
2
  import { appSchema } from '../../../apps'
3
3
  import { transferSchema } from './transfer'
4
- import { evidenceUnionSchema, normalActionUnionSchema } from './unions'
4
+ import {
5
+ crossTypeSchema,
6
+ evidenceUnionSchema,
7
+ normalActionUnionSchema,
8
+ } from './unions'
5
9
 
6
10
  export const normalActionDefaultSchema = z.object({
7
11
  type: z.literal('NormalAction'),
@@ -16,6 +20,7 @@ export const normalActionDefaultSchema = z.object({
16
20
  export const crossNormalActionDefaultSchema = normalActionDefaultSchema.extend({
17
21
  type: z.literal('CrossNormalAction'),
18
22
  crossId: z.string(),
23
+ crossType: crossTypeSchema,
19
24
  })
20
25
 
21
26
  export const loanNormalActionDefaultSchema = normalActionDefaultSchema.extend({
@@ -96,3 +96,6 @@ const evidences = [
96
96
  'none',
97
97
  ] as const
98
98
  export const evidenceUnionSchema = createUnionSchema(evidences)
99
+
100
+ const crossTypes = ['start', 'middle', 'end'] as const
101
+ export const crossTypeSchema = createUnionSchema(crossTypes)
@@ -23,6 +23,7 @@ export {
23
23
  normalActionCrossTradeSchema,
24
24
  } from './crossTrade'
25
25
  export {
26
+ crossTypeSchema,
26
27
  transferCryptoCurrencyInSchema,
27
28
  transferCryptoCurrencyNoneSchema,
28
29
  transferCryptoCurrencyOutSchema,
package/index.ts CHANGED
@@ -48,6 +48,7 @@ export {
48
48
  accountActionWithdrawWithBondSchema,
49
49
  accountActionWrapSchema,
50
50
  crossActionBundleSchema,
51
+ crossTypeSchema,
51
52
  isTransferCryptoCurrencyIn,
52
53
  isTransferCryptoCurrencyNone,
53
54
  isTransferCryptoCurrencyOut,
@@ -99,6 +100,7 @@ export {
99
100
  normalActionWithdrawSchema,
100
101
  normalActionWithdrawWithBondSchema,
101
102
  normalActionWrapSchema,
103
+ parseNormalActionToAccountActions,
102
104
  } from './actions'
103
105
  export type {
104
106
  AccountAction,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xtorch/core",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "description": "Cryptorch | TypeScript Analyze Interface for Crypto Data.",
5
5
  "keywords": [
6
6
  "cryptorch",