@ledgerhq/revault-api 1.43.1 → 1.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{app-types-C5PTn2QL.d.mts → app-types-B3k1Ubuj.d.mts} +314 -184
- package/lib/fakes.d.mts +63 -27
- package/lib/fakes.mjs +1105 -56
- package/lib/fakes.mjs.map +1 -1
- package/lib/index.d.mts +726 -526
- package/package.json +3 -4
package/lib/fakes.mjs
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { __export } from './chunk-J5LGTIGS.mjs';
|
|
2
2
|
import { faker } from '@faker-js/faker';
|
|
3
|
-
import {
|
|
4
|
-
import 'ts-pattern';
|
|
3
|
+
import { ChallengeType, PsdModel, UserRole, UserRegistrationState, AllowedAction, AdminPermission, RequestType, AccountGovernanceType, ActivationStatus, AccountType, MessageType, WhitelistType, UserDeviceType, RequestReviewStatus, RequestState, GateAccountType, GateUserType } from '@prisma/client';
|
|
4
|
+
import { match, P } from 'ts-pattern';
|
|
5
5
|
import z14, { z } from 'zod';
|
|
6
|
-
import { omit, times, get, isPlainObject } from 'lodash';
|
|
7
6
|
import invariant8 from 'invariant';
|
|
7
|
+
import elliptic from 'elliptic';
|
|
8
|
+
import { omit, times, get, isPlainObject } from 'lodash-es';
|
|
8
9
|
import 'axios';
|
|
9
10
|
|
|
10
11
|
var zHexString = z.string().regex(/^[0-9a-fA-F]+$/);
|
|
@@ -27,7 +28,21 @@ z.codec(z.iso.datetime(), z.date(), {
|
|
|
27
28
|
});
|
|
28
29
|
|
|
29
30
|
// src/networks/common.ts
|
|
30
|
-
var NetworkFamily =
|
|
31
|
+
var NetworkFamily = {
|
|
32
|
+
BITCOIN_LIKE: "BITCOIN_LIKE",
|
|
33
|
+
CANTON_LIKE: "CANTON_LIKE",
|
|
34
|
+
CARDANO_LIKE: "CARDANO_LIKE",
|
|
35
|
+
ETHEREUM_LIKE: "ETHEREUM_LIKE",
|
|
36
|
+
GENERIC_LIKE: "GENERIC_LIKE",
|
|
37
|
+
HEDERA_LIKE: "HEDERA_LIKE",
|
|
38
|
+
POLKADOT_LIKE: "POLKADOT_LIKE",
|
|
39
|
+
RIPPLE_LIKE: "RIPPLE_LIKE",
|
|
40
|
+
SOLANA_LIKE: "SOLANA_LIKE",
|
|
41
|
+
STELLAR_LIKE: "STELLAR_LIKE",
|
|
42
|
+
SUI_LIKE: "SUI_LIKE",
|
|
43
|
+
TEZOS_LIKE: "TEZOS_LIKE",
|
|
44
|
+
TRON_LIKE: "TRON_LIKE"
|
|
45
|
+
};
|
|
31
46
|
var zHexDataString = z14.codec(z14.string().regex(/^(?:0x|0X)?[a-fA-F0-9]+$/), z14.string(), {
|
|
32
47
|
decode: (hex) => `0x${hex.toLowerCase().replace("0x", "")}`,
|
|
33
48
|
encode: (hex) => hex
|
|
@@ -89,19 +104,22 @@ var zBitcoinLikeSendData = zCommonTransactionData.extend({
|
|
|
89
104
|
id: "BitcoinLikeSendData"
|
|
90
105
|
});
|
|
91
106
|
var zBitcoinLikeTransactionData = z14.discriminatedUnion("type", [zBitcoinLikeSendData]);
|
|
107
|
+
var zBitcoinLikeEstimatedFees = z14.object({
|
|
108
|
+
type: z14.literal(NetworkFamily.BITCOIN_LIKE),
|
|
109
|
+
fee: zIntString
|
|
110
|
+
}).meta({ description: "Bitcoin-like fees" });
|
|
92
111
|
var zBitcoinLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
93
112
|
zCommonTransactionResponse.extend({ type: zBitcoinLikeTransactionType }).meta({ description: "Bitcoin-like transaction" })
|
|
94
113
|
]);
|
|
95
114
|
|
|
96
115
|
// src/networks/bitcoin/index.ts
|
|
97
116
|
var BITCOIN_SPEC = {
|
|
98
|
-
family: NetworkFamily.BITCOIN_LIKE,
|
|
99
117
|
zAssetFields: zBitcoinLikeAssetFields,
|
|
100
118
|
zLiveData: zBitcoinLikeLiveData,
|
|
101
119
|
zTransactionType: zBitcoinLikeTransactionType,
|
|
102
120
|
zTransactionData: zBitcoinLikeTransactionData,
|
|
103
121
|
zSendTransactionData: zBitcoinLikeSendData,
|
|
104
|
-
zEstimatedFees:
|
|
122
|
+
zEstimatedFees: zBitcoinLikeEstimatedFees,
|
|
105
123
|
zTransactionResponse: zBitcoinLikeTransactionResponse,
|
|
106
124
|
zStakingFields: z14.never()};
|
|
107
125
|
var zCantonTransferProposal = z14.object({
|
|
@@ -204,7 +222,6 @@ var zCantonLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
204
222
|
|
|
205
223
|
// src/networks/canton/index.ts
|
|
206
224
|
var CANTON_SPEC = {
|
|
207
|
-
family: NetworkFamily.CANTON_LIKE,
|
|
208
225
|
zAssetFields: zCantonLikeAssetFields,
|
|
209
226
|
zLiveData: zCantonLikeLiveData,
|
|
210
227
|
zTransactionType: zCantonLikeTransactionType,
|
|
@@ -301,7 +318,6 @@ var zCardanoLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
301
318
|
|
|
302
319
|
// src/networks/cardano/index.ts
|
|
303
320
|
var CARDANO_SPEC = {
|
|
304
|
-
family: NetworkFamily.CARDANO_LIKE,
|
|
305
321
|
zAssetFields: zCardanoLikeAssetFields,
|
|
306
322
|
zLiveData: zCardanoLikeLiveData,
|
|
307
323
|
zTransactionType: zCardanoLikeTransactionType,
|
|
@@ -403,7 +419,6 @@ var zEthereumLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
403
419
|
|
|
404
420
|
// src/networks/ethereum/index.ts
|
|
405
421
|
var ETHEREUM_SPEC = {
|
|
406
|
-
family: NetworkFamily.ETHEREUM_LIKE,
|
|
407
422
|
zAssetFields: zEthereumLikeAssetFields,
|
|
408
423
|
zLiveData: zEthereumLikeLiveData,
|
|
409
424
|
zTransactionType: zEthereumLikeTransactionType,
|
|
@@ -433,7 +448,6 @@ var zGenericTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
433
448
|
|
|
434
449
|
// src/networks/generic/index.ts
|
|
435
450
|
var GENERIC_SPEC = {
|
|
436
|
-
family: NetworkFamily.GENERIC_LIKE,
|
|
437
451
|
zAssetFields: zGenericAssetFields,
|
|
438
452
|
zLiveData: zGenericLiveData,
|
|
439
453
|
zTransactionType: zGenericTransactionType,
|
|
@@ -444,7 +458,8 @@ var GENERIC_SPEC = {
|
|
|
444
458
|
zStakingFields: z14.never()};
|
|
445
459
|
var zHederaLikeAssetFields = z14.object({
|
|
446
460
|
type: z14.literal(NetworkFamily.HEDERA_LIKE).meta({ description: "Account type" }),
|
|
447
|
-
address: z14.string().nullable().meta({ description: "Account address" })
|
|
461
|
+
address: z14.string().nullable().meta({ description: "Account address" }),
|
|
462
|
+
isActivated: z14.boolean().meta({ description: "Indicates if the account is activated" })
|
|
448
463
|
}).meta({ description: "Hedera-like" });
|
|
449
464
|
var zHederaLikeEstimatedFees = z14.object({
|
|
450
465
|
type: z14.literal(NetworkFamily.HEDERA_LIKE),
|
|
@@ -485,7 +500,6 @@ var zHederaLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
485
500
|
|
|
486
501
|
// src/networks/hedera/index.ts
|
|
487
502
|
var HEDERA_SPEC = {
|
|
488
|
-
family: NetworkFamily.HEDERA_LIKE,
|
|
489
503
|
zAssetFields: zHederaLikeAssetFields,
|
|
490
504
|
zLiveData: zHederaLikeLiveData,
|
|
491
505
|
zTransactionType: zHederaLikeTransactionType,
|
|
@@ -681,7 +695,6 @@ var zPolkadotLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
681
695
|
|
|
682
696
|
// src/networks/polkadot/index.ts
|
|
683
697
|
var POLKADOT_SPEC = {
|
|
684
|
-
family: NetworkFamily.POLKADOT_LIKE,
|
|
685
698
|
zAssetFields: zPolkadotLikeAssetFields,
|
|
686
699
|
zLiveData: zPolkadotLikeLiveData,
|
|
687
700
|
zTransactionType: zPolkadotLikeTransactionType,
|
|
@@ -721,7 +734,6 @@ var zRippleLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
721
734
|
|
|
722
735
|
// src/networks/ripple/index.ts
|
|
723
736
|
var RIPPLE_SPEC = {
|
|
724
|
-
family: NetworkFamily.RIPPLE_LIKE,
|
|
725
737
|
zAssetFields: zRippleLikeAssetFields,
|
|
726
738
|
zLiveData: zRippleLikeLiveData,
|
|
727
739
|
zTransactionType: zRippleLikeTransactionType,
|
|
@@ -917,7 +929,6 @@ var zSolanaLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
917
929
|
|
|
918
930
|
// src/networks/solana/index.ts
|
|
919
931
|
var SOLANA_SPEC = {
|
|
920
|
-
family: NetworkFamily.SOLANA_LIKE,
|
|
921
932
|
zAssetFields: zSolanaLikeAssetFields,
|
|
922
933
|
zLiveData: zSolanaLikeLiveData,
|
|
923
934
|
zTransactionType: zSolanaLikeTransactionType,
|
|
@@ -938,16 +949,22 @@ var zStellarLikeEstimatedFees = z14.object({
|
|
|
938
949
|
fee: zIntString
|
|
939
950
|
}).meta({ description: "Stellar-like fees" });
|
|
940
951
|
var zStellarLikeTransactionType = z14.enum(["STELLAR_LIKE_SEND", "STELLAR_LIKE_RECEIVE"]).meta({ description: "Stellar-like transaction type" });
|
|
941
|
-
var zStellarMemo = z14.
|
|
952
|
+
var zStellarMemo = z14.discriminatedUnion("type", [
|
|
942
953
|
z14.object({
|
|
943
|
-
|
|
954
|
+
type: z14.literal("MEMO_TEXT"),
|
|
955
|
+
value: z14.string().max(28).meta({ description: "Text memo (at most a 28 bytes string)" })
|
|
944
956
|
}).meta({ description: "Text memo" }),
|
|
945
|
-
z14.object({ MEMO_ID: zIntString.meta({ description: "Id memo (unsigned 64 bits integer)" }) }).meta({ description: "Id memo" }),
|
|
946
957
|
z14.object({
|
|
947
|
-
|
|
958
|
+
type: z14.literal("MEMO_ID"),
|
|
959
|
+
value: zIntString.meta({ description: "Id memo (unsigned 64 bits integer)" })
|
|
960
|
+
}).meta({ description: "Id memo" }),
|
|
961
|
+
z14.object({
|
|
962
|
+
type: z14.literal("MEMO_HASH"),
|
|
963
|
+
value: z14.string().max(128).regex(/^[a-fA-F0-9]+$/).meta({ description: "Transaction hash memo (64 bytes hexadecimal string)" })
|
|
948
964
|
}).meta({ description: "Hash memo" }),
|
|
949
965
|
z14.object({
|
|
950
|
-
|
|
966
|
+
type: z14.literal("MEMO_RETURN"),
|
|
967
|
+
value: z14.string().max(128).regex(/^[a-fA-F0-9]+$/).meta({
|
|
951
968
|
description: "A 64 bytes hexadecimal string intended to be interpreted as the hash of the transaction the sender is refunding."
|
|
952
969
|
})
|
|
953
970
|
}).meta({ description: "Return memo" })
|
|
@@ -967,7 +984,6 @@ var zStellarLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
967
984
|
|
|
968
985
|
// src/networks/stellar/index.ts
|
|
969
986
|
var STELLAR_SPEC = {
|
|
970
|
-
family: NetworkFamily.STELLAR_LIKE,
|
|
971
987
|
zAssetFields: zStellarLikeAssetFields,
|
|
972
988
|
zLiveData: zStellarLikeLiveData,
|
|
973
989
|
zTransactionType: zStellarLikeTransactionType,
|
|
@@ -1057,7 +1073,6 @@ var zSuiLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
1057
1073
|
|
|
1058
1074
|
// src/networks/sui/index.ts
|
|
1059
1075
|
var SUI_SPEC = {
|
|
1060
|
-
family: NetworkFamily.SUI_LIKE,
|
|
1061
1076
|
zAssetFields: zSuiLikeAssetFields,
|
|
1062
1077
|
zLiveData: zSuiLikeLiveData,
|
|
1063
1078
|
zTransactionType: zSuiLikeTransactionType,
|
|
@@ -1134,7 +1149,6 @@ var zTezosLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
1134
1149
|
|
|
1135
1150
|
// src/networks/tezos/index.ts
|
|
1136
1151
|
var TEZOS_SPEC = {
|
|
1137
|
-
family: NetworkFamily.TEZOS_LIKE,
|
|
1138
1152
|
zAssetFields: zTezosLikeAssetFields,
|
|
1139
1153
|
zLiveData: zTezosLikeLiveData,
|
|
1140
1154
|
zTransactionType: zTezosLikeTransactionType,
|
|
@@ -1182,7 +1196,6 @@ var zTronLikeTransactionResponse = z14.discriminatedUnion("type", [
|
|
|
1182
1196
|
|
|
1183
1197
|
// src/networks/tron/index.ts
|
|
1184
1198
|
var TRON_SPEC = {
|
|
1185
|
-
family: NetworkFamily.TRON_LIKE,
|
|
1186
1199
|
zAssetFields: zTronLikeAssetFields,
|
|
1187
1200
|
zLiveData: zTronLikeLiveData,
|
|
1188
1201
|
zTransactionType: zTronLikeTransactionType,
|
|
@@ -1232,6 +1245,7 @@ z14.discriminatedUnion("type", [
|
|
|
1232
1245
|
TEZOS_SPEC.zStakingFields
|
|
1233
1246
|
]);
|
|
1234
1247
|
z14.discriminatedUnion("type", [
|
|
1248
|
+
BITCOIN_SPEC.zEstimatedFees,
|
|
1235
1249
|
ETHEREUM_SPEC.zEstimatedFees,
|
|
1236
1250
|
HEDERA_SPEC.zEstimatedFees,
|
|
1237
1251
|
RIPPLE_SPEC.zEstimatedFees,
|
|
@@ -1270,11 +1284,6 @@ z14.union([
|
|
|
1270
1284
|
...TEZOS_SPEC.zTransactionType.enum,
|
|
1271
1285
|
...TRON_SPEC.zTransactionType.enum
|
|
1272
1286
|
});
|
|
1273
|
-
({
|
|
1274
|
-
...NetworkFamily,
|
|
1275
|
-
// TODO: Sometimes `NetworkFamily` is not a `TransactionType` prefix - but why?
|
|
1276
|
-
[NetworkFamily.GENERIC_LIKE]: "GENERIC"
|
|
1277
|
-
});
|
|
1278
1287
|
var zTransactionData = z14.discriminatedUnion("type", [
|
|
1279
1288
|
...BITCOIN_SPEC.zTransactionData.options,
|
|
1280
1289
|
...CANTON_SPEC.zTransactionData.options,
|
|
@@ -1334,6 +1343,14 @@ var buildGateSyncId = (workspaceName, gateType, gateId) => {
|
|
|
1334
1343
|
|
|
1335
1344
|
// src/utils.ts
|
|
1336
1345
|
var isRecord = (value) => isPlainObject(value);
|
|
1346
|
+
var randomHex = (length) => {
|
|
1347
|
+
const hexBytes = times(length, () => {
|
|
1348
|
+
const randomByte = Math.floor(Math.random() * 256);
|
|
1349
|
+
return randomByte.toString(16).padStart(2, "0");
|
|
1350
|
+
});
|
|
1351
|
+
return hexBytes.join("").toUpperCase();
|
|
1352
|
+
};
|
|
1353
|
+
var genAuthUserId = () => randomHex(20);
|
|
1337
1354
|
var ensureNonEmptyArray = (values, message) => {
|
|
1338
1355
|
invariant8(
|
|
1339
1356
|
values.length > 0,
|
|
@@ -1346,9 +1363,11 @@ function unreachable(value) {
|
|
|
1346
1363
|
}
|
|
1347
1364
|
|
|
1348
1365
|
// src/__fakes__/faker-utils.ts
|
|
1366
|
+
var { ec: EC } = elliptic;
|
|
1349
1367
|
var fakeUniqueName = (length = 20) => faker.string.alphanumeric({ length, casing: "lower" });
|
|
1350
1368
|
var fakeHexString = (length, casing = "upper") => faker.string.hexadecimal({ prefix: "", casing, length });
|
|
1351
|
-
var fakePubKey = () =>
|
|
1369
|
+
var fakePubKey = () => new EC("p256").genKeyPair().getPublic(false, "hex");
|
|
1370
|
+
var fakeDeviceUserId = () => faker.string.hexadecimal({ prefix: "", casing: "upper", length: 16 });
|
|
1352
1371
|
var fakeIntegerId = () => faker.number.int({ min: 1, max: 2e9 });
|
|
1353
1372
|
var fakeGateId = fakeIntegerId;
|
|
1354
1373
|
var fakeBase64String = (length) => btoa(faker.string.sample(length));
|
|
@@ -1373,6 +1392,8 @@ var fakeWorkspaceName = () => faker.string.alphanumeric({ length: 16, casing: "l
|
|
|
1373
1392
|
// src/__fakes__/canton.ts
|
|
1374
1393
|
var fakeCantonAddress = (role) => `${role}-${faker.lorem.word()}::${fakeHexString(68, "lower")}`;
|
|
1375
1394
|
var fakeCantonPartyId = () => fakeCantonAddress("party");
|
|
1395
|
+
var fakeCantonContractId = () => fakeHexString(138, "lower");
|
|
1396
|
+
var fakeCantonInstrumentId = () => fakeHexString(10, "lower");
|
|
1376
1397
|
var injectSyncId = (obj) => {
|
|
1377
1398
|
let { syncId } = obj;
|
|
1378
1399
|
if (syncId === void 0) {
|
|
@@ -1652,6 +1673,488 @@ var genAccount = (opts) => {
|
|
|
1652
1673
|
...rest
|
|
1653
1674
|
});
|
|
1654
1675
|
};
|
|
1676
|
+
var genSignMessageData = (opts) => ({
|
|
1677
|
+
message: {
|
|
1678
|
+
type: "EIP191",
|
|
1679
|
+
data: fakeHexString(10, "upper")
|
|
1680
|
+
},
|
|
1681
|
+
accountId: faker.string.uuid(),
|
|
1682
|
+
address: faker.finance.ethereumAddress(),
|
|
1683
|
+
derivationPath: "44'/60'/0'/0/0",
|
|
1684
|
+
...opts
|
|
1685
|
+
});
|
|
1686
|
+
var genBitcoinLikeSendData = (opts) => {
|
|
1687
|
+
return {
|
|
1688
|
+
type: "BITCOIN_LIKE_SEND",
|
|
1689
|
+
currency: "bitcoin",
|
|
1690
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1691
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1692
|
+
recipient: faker.finance.bitcoinAddress(),
|
|
1693
|
+
feeStrategy: {
|
|
1694
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST", "CUSTOM"]),
|
|
1695
|
+
feePerByte: faker.number.bigInt({ min: 1 }).toString()
|
|
1696
|
+
},
|
|
1697
|
+
...opts
|
|
1698
|
+
};
|
|
1699
|
+
};
|
|
1700
|
+
var genCardanoLikeTxData = (txType) => {
|
|
1701
|
+
switch (txType) {
|
|
1702
|
+
case "CARDANO_LIKE_SEND":
|
|
1703
|
+
return {
|
|
1704
|
+
type: txType,
|
|
1705
|
+
currency: "cardano",
|
|
1706
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1707
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1708
|
+
recipient: faker.string.alphanumeric({ length: 30 }),
|
|
1709
|
+
feeStrategy: {
|
|
1710
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1711
|
+
}
|
|
1712
|
+
};
|
|
1713
|
+
case "CARDANO_LIKE_STAKING_DELEGATE":
|
|
1714
|
+
return {
|
|
1715
|
+
type: txType,
|
|
1716
|
+
currency: "cardano",
|
|
1717
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1718
|
+
stakePoolId: `pool${faker.string.alphanumeric({ length: 52 })}`,
|
|
1719
|
+
feeStrategy: {
|
|
1720
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1721
|
+
}
|
|
1722
|
+
};
|
|
1723
|
+
case "CARDANO_LIKE_STAKING_REGISTER":
|
|
1724
|
+
case "CARDANO_LIKE_STAKING_DEREGISTER":
|
|
1725
|
+
case "CARDANO_LIKE_STAKING_WITHDRAW":
|
|
1726
|
+
return {
|
|
1727
|
+
type: txType,
|
|
1728
|
+
currency: "cardano",
|
|
1729
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1730
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1731
|
+
feeStrategy: {
|
|
1732
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1733
|
+
}
|
|
1734
|
+
};
|
|
1735
|
+
}
|
|
1736
|
+
};
|
|
1737
|
+
var genEthereumLikeSendData = (opts) => {
|
|
1738
|
+
const gasLimit = faker.number.bigInt({ min: 1 });
|
|
1739
|
+
const gasPrice = faker.number.bigInt({ min: 1 });
|
|
1740
|
+
const maxFee = gasLimit * gasPrice;
|
|
1741
|
+
return {
|
|
1742
|
+
type: "ETHEREUM_LIKE_SEND",
|
|
1743
|
+
currency: "ethereum",
|
|
1744
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1745
|
+
maxFee: maxFee.toString(),
|
|
1746
|
+
recipient: faker.finance.bitcoinAddress(),
|
|
1747
|
+
feeStrategy: {
|
|
1748
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST", "CUSTOM"]),
|
|
1749
|
+
gasLimit: gasLimit.toString(),
|
|
1750
|
+
gasPrice: gasPrice.toString()
|
|
1751
|
+
},
|
|
1752
|
+
...opts
|
|
1753
|
+
};
|
|
1754
|
+
};
|
|
1755
|
+
var genEthereumLikeExecuteContractData = (opts) => {
|
|
1756
|
+
const sendData = genEthereumLikeSendData();
|
|
1757
|
+
return {
|
|
1758
|
+
...omit(sendData, ["type"]),
|
|
1759
|
+
type: "ETHEREUM_LIKE_EXECUTE_CONTRACT",
|
|
1760
|
+
contractData: faker.string.hexadecimal({ prefix: "", casing: "lower", length: 128 }),
|
|
1761
|
+
...opts
|
|
1762
|
+
};
|
|
1763
|
+
};
|
|
1764
|
+
var genEthereumLikeDeployContractData = (opts) => {
|
|
1765
|
+
const sendData = genEthereumLikeSendData();
|
|
1766
|
+
return {
|
|
1767
|
+
...omit(sendData, ["type"]),
|
|
1768
|
+
type: "ETHEREUM_LIKE_DEPLOY_CONTRACT",
|
|
1769
|
+
recipient: "0x0000000000000000000000000000000000000000",
|
|
1770
|
+
contractData: faker.string.hexadecimal({ prefix: "", casing: "lower", length: 128 }),
|
|
1771
|
+
...opts
|
|
1772
|
+
};
|
|
1773
|
+
};
|
|
1774
|
+
var genGenericTransactionData = () => {
|
|
1775
|
+
return {
|
|
1776
|
+
type: "GENERIC_TRANSACTION",
|
|
1777
|
+
currency: "tron",
|
|
1778
|
+
rawTx: faker.string.alphanumeric({ length: 100 })
|
|
1779
|
+
};
|
|
1780
|
+
};
|
|
1781
|
+
var genHederaLikeSendData = (txType) => {
|
|
1782
|
+
return {
|
|
1783
|
+
type: txType,
|
|
1784
|
+
currency: "hedera",
|
|
1785
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1786
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1787
|
+
recipient: `0.0.${faker.number.int({ min: 1e7, max: 99999999 }).toString()}`,
|
|
1788
|
+
feeStrategy: {
|
|
1789
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1790
|
+
}
|
|
1791
|
+
};
|
|
1792
|
+
};
|
|
1793
|
+
var genPolkadotLikeTxData = (txType) => {
|
|
1794
|
+
switch (txType) {
|
|
1795
|
+
case "POLKADOT_LIKE_SEND":
|
|
1796
|
+
return {
|
|
1797
|
+
type: txType,
|
|
1798
|
+
currency: "polkadot",
|
|
1799
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1800
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1801
|
+
recipient: faker.string.alphanumeric({ length: 30 })
|
|
1802
|
+
};
|
|
1803
|
+
case "POLKADOT_LIKE_ADDPROXY":
|
|
1804
|
+
case "POLKADOT_LIKE_REMOVEPROXY":
|
|
1805
|
+
return {
|
|
1806
|
+
type: txType,
|
|
1807
|
+
currency: "polkadot",
|
|
1808
|
+
kind: "Staking",
|
|
1809
|
+
proxy: faker.string.alphanumeric({ length: 30 })
|
|
1810
|
+
};
|
|
1811
|
+
case "POLKADOT_LIKE_BOND":
|
|
1812
|
+
return {
|
|
1813
|
+
type: txType,
|
|
1814
|
+
currency: "polkadot",
|
|
1815
|
+
payee: faker.helpers.arrayElement(["Staked", "Stash"]),
|
|
1816
|
+
amount: faker.number.bigInt({ min: 0 }).toString()
|
|
1817
|
+
};
|
|
1818
|
+
case "POLKADOT_LIKE_REBOND":
|
|
1819
|
+
case "POLKADOT_LIKE_UNBOND":
|
|
1820
|
+
return {
|
|
1821
|
+
type: txType,
|
|
1822
|
+
currency: "polkadot",
|
|
1823
|
+
amount: faker.number.bigInt({ min: 0 }).toString()
|
|
1824
|
+
};
|
|
1825
|
+
case "POLKADOT_LIKE_BONDEXTRA":
|
|
1826
|
+
return {
|
|
1827
|
+
type: txType,
|
|
1828
|
+
currency: "polkadot",
|
|
1829
|
+
amount: faker.number.bigInt({ min: 0 }).toString()
|
|
1830
|
+
};
|
|
1831
|
+
case "POLKADOT_LIKE_WITHDRAWUNBONDED":
|
|
1832
|
+
case "POLKADOT_LIKE_CHILL":
|
|
1833
|
+
return {
|
|
1834
|
+
type: txType,
|
|
1835
|
+
currency: "polkadot"
|
|
1836
|
+
};
|
|
1837
|
+
case "POLKADOT_LIKE_SETPAYEE":
|
|
1838
|
+
return {
|
|
1839
|
+
type: txType,
|
|
1840
|
+
currency: "polkadot",
|
|
1841
|
+
payee: faker.helpers.arrayElement(["Staked", "Stash"])
|
|
1842
|
+
};
|
|
1843
|
+
case "POLKADOT_LIKE_ANONYMOUSPROXY":
|
|
1844
|
+
case "POLKADOT_LIKE_KILLANONYMOUS":
|
|
1845
|
+
return {
|
|
1846
|
+
type: txType,
|
|
1847
|
+
currency: "polkadot"
|
|
1848
|
+
};
|
|
1849
|
+
}
|
|
1850
|
+
};
|
|
1851
|
+
var genRippleLikeSendData = (txType) => {
|
|
1852
|
+
return {
|
|
1853
|
+
type: txType,
|
|
1854
|
+
currency: "ripple",
|
|
1855
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1856
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1857
|
+
recipient: faker.string.alphanumeric({ length: 30 }),
|
|
1858
|
+
destinationTag: faker.helpers.arrayElement([faker.number.int().toString(), null]),
|
|
1859
|
+
feeStrategy: {
|
|
1860
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1861
|
+
}
|
|
1862
|
+
};
|
|
1863
|
+
};
|
|
1864
|
+
var genSolanaLikeTxData = (txType) => {
|
|
1865
|
+
switch (txType) {
|
|
1866
|
+
case "SOLANA_LIKE_SEND":
|
|
1867
|
+
case "SOLANA_LIKE_CREATE_DELEGATE_STAKE":
|
|
1868
|
+
case "SOLANA_LIKE_SEND_TOKEN":
|
|
1869
|
+
case "SOLANA_LIKE_FUND_AND_SEND_TOKEN":
|
|
1870
|
+
return {
|
|
1871
|
+
type: txType,
|
|
1872
|
+
currency: "solana",
|
|
1873
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1874
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1875
|
+
recipient: faker.string.alphanumeric({ length: 30 }),
|
|
1876
|
+
feeStrategy: {
|
|
1877
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1878
|
+
}
|
|
1879
|
+
};
|
|
1880
|
+
case "SOLANA_LIKE_DELEGATE_STAKE":
|
|
1881
|
+
return {
|
|
1882
|
+
type: txType,
|
|
1883
|
+
currency: "solana",
|
|
1884
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1885
|
+
recipient: faker.string.alphanumeric({ length: 30 }),
|
|
1886
|
+
stakeAccount: faker.string.alphanumeric({ length: 30 }),
|
|
1887
|
+
feeStrategy: {
|
|
1888
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1889
|
+
}
|
|
1890
|
+
};
|
|
1891
|
+
case "SOLANA_LIKE_DEACTIVATE_STAKE":
|
|
1892
|
+
return {
|
|
1893
|
+
type: txType,
|
|
1894
|
+
currency: "solana",
|
|
1895
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1896
|
+
stakeAccount: faker.string.alphanumeric({ length: 30 }),
|
|
1897
|
+
feeStrategy: {
|
|
1898
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1899
|
+
}
|
|
1900
|
+
};
|
|
1901
|
+
case "SOLANA_LIKE_SPLIT_DEACTIVATE_STAKE":
|
|
1902
|
+
case "SOLANA_LIKE_SPLIT_STAKE":
|
|
1903
|
+
case "SOLANA_LIKE_WITHDRAW_STAKE":
|
|
1904
|
+
return {
|
|
1905
|
+
type: txType,
|
|
1906
|
+
currency: "solana",
|
|
1907
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1908
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1909
|
+
stakeAccount: faker.string.alphanumeric({ length: 30 }),
|
|
1910
|
+
feeStrategy: {
|
|
1911
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1912
|
+
}
|
|
1913
|
+
};
|
|
1914
|
+
case "SOLANA_LIKE_MERGE_STAKE":
|
|
1915
|
+
return {
|
|
1916
|
+
type: txType,
|
|
1917
|
+
currency: "solana",
|
|
1918
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1919
|
+
mergeSrcAccount: faker.string.alphanumeric({ length: 30 }),
|
|
1920
|
+
mergeDstAccount: faker.string.alphanumeric({ length: 30 }),
|
|
1921
|
+
feeStrategy: {
|
|
1922
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1923
|
+
}
|
|
1924
|
+
};
|
|
1925
|
+
case "SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT":
|
|
1926
|
+
return {
|
|
1927
|
+
type: txType,
|
|
1928
|
+
currency: "solana",
|
|
1929
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1930
|
+
feeStrategy: {
|
|
1931
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1932
|
+
}
|
|
1933
|
+
};
|
|
1934
|
+
}
|
|
1935
|
+
};
|
|
1936
|
+
var genStellarLikeSendData = (txType) => {
|
|
1937
|
+
return {
|
|
1938
|
+
type: txType,
|
|
1939
|
+
currency: "stellar",
|
|
1940
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1941
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1942
|
+
recipient: faker.string.alphanumeric({ length: 30 }),
|
|
1943
|
+
memo: faker.helpers.arrayElement([
|
|
1944
|
+
{ type: "MEMO_ID", value: faker.number.bigInt({ min: 0 }).toString() },
|
|
1945
|
+
{ type: "MEMO_TEXT", value: faker.word.conjunction(28) },
|
|
1946
|
+
{
|
|
1947
|
+
type: "MEMO_HASH",
|
|
1948
|
+
value: faker.string.hexadecimal({ prefix: "", casing: "lower", length: 64 })
|
|
1949
|
+
},
|
|
1950
|
+
{
|
|
1951
|
+
type: "MEMO_RETURN",
|
|
1952
|
+
value: faker.string.hexadecimal({ prefix: "", casing: "lower", length: 64 })
|
|
1953
|
+
},
|
|
1954
|
+
null
|
|
1955
|
+
]),
|
|
1956
|
+
feeStrategy: {
|
|
1957
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1958
|
+
}
|
|
1959
|
+
};
|
|
1960
|
+
};
|
|
1961
|
+
var genSuiLikeTxData = (txType) => {
|
|
1962
|
+
return {
|
|
1963
|
+
currency: "sui",
|
|
1964
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1965
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1966
|
+
feeStrategy: {
|
|
1967
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
1968
|
+
},
|
|
1969
|
+
...match(txType).with("SUI_LIKE_STAKE", (type) => ({
|
|
1970
|
+
type,
|
|
1971
|
+
validator: faker.string.alphanumeric({ length: 30 })
|
|
1972
|
+
})).with("SUI_LIKE_UNSTAKE", (type) => ({
|
|
1973
|
+
type,
|
|
1974
|
+
stakedSuiId: faker.string.alphanumeric({ length: 30 }),
|
|
1975
|
+
useAllAmount: faker.datatype.boolean()
|
|
1976
|
+
})).with(P.union("SUI_LIKE_SEND", "SUI_LIKE_SEND_TOKEN"), (type) => ({
|
|
1977
|
+
type,
|
|
1978
|
+
recipient: faker.string.alphanumeric({ length: 30 })
|
|
1979
|
+
})).exhaustive()
|
|
1980
|
+
};
|
|
1981
|
+
};
|
|
1982
|
+
var genTezosLikeTxData = (txType) => {
|
|
1983
|
+
return {
|
|
1984
|
+
type: txType,
|
|
1985
|
+
currency: "tezos",
|
|
1986
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1987
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
1988
|
+
recipient: faker.string.alphanumeric({ length: 30 }),
|
|
1989
|
+
feeStrategy: {
|
|
1990
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST", "CUSTOM"])
|
|
1991
|
+
}
|
|
1992
|
+
};
|
|
1993
|
+
};
|
|
1994
|
+
var genTronLikeTxData = (txType) => {
|
|
1995
|
+
return {
|
|
1996
|
+
type: txType,
|
|
1997
|
+
currency: "tron",
|
|
1998
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
1999
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
2000
|
+
recipient: faker.string.alphanumeric({ length: 30 }),
|
|
2001
|
+
feeStrategy: {
|
|
2002
|
+
type: faker.helpers.arrayElement(["SLOW", "NORMAL", "FAST"])
|
|
2003
|
+
}
|
|
2004
|
+
};
|
|
2005
|
+
};
|
|
2006
|
+
var genCantonTransferProposal = () => ({
|
|
2007
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
2008
|
+
contractId: fakeCantonContractId(),
|
|
2009
|
+
instrumentId: fakeCantonInstrumentId(),
|
|
2010
|
+
expiresAtMicros: faker.date.future().getTime() * 1e3,
|
|
2011
|
+
memo: faker.lorem.sentence(),
|
|
2012
|
+
sender: fakeCantonPartyId(),
|
|
2013
|
+
recipient: fakeCantonPartyId()
|
|
2014
|
+
});
|
|
2015
|
+
var genCantonLikeTxData = (txType) => {
|
|
2016
|
+
switch (txType) {
|
|
2017
|
+
case "CANTON_LIKE_SEND":
|
|
2018
|
+
case "CANTON_LIKE_SEND_TOKEN":
|
|
2019
|
+
return {
|
|
2020
|
+
type: txType,
|
|
2021
|
+
currency: "canton_network",
|
|
2022
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
2023
|
+
recipient: fakeCantonPartyId()
|
|
2024
|
+
};
|
|
2025
|
+
case "CANTON_LIKE_WITHDRAW":
|
|
2026
|
+
return {
|
|
2027
|
+
type: txType,
|
|
2028
|
+
currency: "canton_network",
|
|
2029
|
+
transferProposal: genCantonTransferProposal(),
|
|
2030
|
+
reason: faker.lorem.sentence()
|
|
2031
|
+
};
|
|
2032
|
+
case "CANTON_LIKE_RECEIVE":
|
|
2033
|
+
return {
|
|
2034
|
+
type: txType,
|
|
2035
|
+
currency: "canton_network",
|
|
2036
|
+
transferProposal: genCantonTransferProposal(),
|
|
2037
|
+
verdict: "ACCEPT",
|
|
2038
|
+
reason: faker.lorem.sentence()
|
|
2039
|
+
};
|
|
2040
|
+
case "CANTON_LIKE_PRE_APPROVAL":
|
|
2041
|
+
return {
|
|
2042
|
+
type: txType,
|
|
2043
|
+
currency: "canton_network",
|
|
2044
|
+
recipient: fakeCantonPartyId()
|
|
2045
|
+
};
|
|
2046
|
+
case "CANTON_LIKE_TAP":
|
|
2047
|
+
return {
|
|
2048
|
+
type: txType,
|
|
2049
|
+
currency: "canton_network",
|
|
2050
|
+
amount: faker.number.bigInt({ min: 0 }).toString(),
|
|
2051
|
+
maxFee: null,
|
|
2052
|
+
recipient: fakeCantonPartyId()
|
|
2053
|
+
};
|
|
2054
|
+
}
|
|
2055
|
+
};
|
|
2056
|
+
var mergeTransactionData = (defaults, custom) => {
|
|
2057
|
+
const merged = {
|
|
2058
|
+
...defaults,
|
|
2059
|
+
...custom,
|
|
2060
|
+
type: defaults.type
|
|
2061
|
+
// make sure `type` comes from `defaults`
|
|
2062
|
+
};
|
|
2063
|
+
return zTransactionData.parse(merged);
|
|
2064
|
+
};
|
|
2065
|
+
var genCreateTransactionData = (opts) => {
|
|
2066
|
+
const { accountId, transaction } = opts ?? {};
|
|
2067
|
+
const transactionType = transaction?.type ?? "ETHEREUM_LIKE_SEND";
|
|
2068
|
+
let transactionDefaults;
|
|
2069
|
+
switch (transactionType) {
|
|
2070
|
+
case "BITCOIN_LIKE_SEND":
|
|
2071
|
+
transactionDefaults = genBitcoinLikeSendData();
|
|
2072
|
+
break;
|
|
2073
|
+
case "CANTON_LIKE_SEND":
|
|
2074
|
+
case "CANTON_LIKE_SEND_TOKEN":
|
|
2075
|
+
case "CANTON_LIKE_WITHDRAW":
|
|
2076
|
+
case "CANTON_LIKE_RECEIVE":
|
|
2077
|
+
case "CANTON_LIKE_PRE_APPROVAL":
|
|
2078
|
+
case "CANTON_LIKE_TAP":
|
|
2079
|
+
transactionDefaults = genCantonLikeTxData(transactionType);
|
|
2080
|
+
break;
|
|
2081
|
+
case "CARDANO_LIKE_SEND":
|
|
2082
|
+
case "CARDANO_LIKE_STAKING_REGISTER":
|
|
2083
|
+
case "CARDANO_LIKE_STAKING_DEREGISTER":
|
|
2084
|
+
case "CARDANO_LIKE_STAKING_DELEGATE":
|
|
2085
|
+
case "CARDANO_LIKE_STAKING_WITHDRAW":
|
|
2086
|
+
transactionDefaults = genCardanoLikeTxData(transactionType);
|
|
2087
|
+
break;
|
|
2088
|
+
case "ETHEREUM_LIKE_SEND":
|
|
2089
|
+
transactionDefaults = genEthereumLikeSendData();
|
|
2090
|
+
break;
|
|
2091
|
+
case "ETHEREUM_LIKE_EXECUTE_CONTRACT":
|
|
2092
|
+
transactionDefaults = genEthereumLikeExecuteContractData();
|
|
2093
|
+
break;
|
|
2094
|
+
case "ETHEREUM_LIKE_DEPLOY_CONTRACT":
|
|
2095
|
+
transactionDefaults = genEthereumLikeDeployContractData();
|
|
2096
|
+
break;
|
|
2097
|
+
case "GENERIC_TRANSACTION":
|
|
2098
|
+
transactionDefaults = genGenericTransactionData();
|
|
2099
|
+
break;
|
|
2100
|
+
case "HEDERA_LIKE_SEND":
|
|
2101
|
+
case "HEDERA_LIKE_SEND_TOKEN":
|
|
2102
|
+
transactionDefaults = genHederaLikeSendData(transactionType);
|
|
2103
|
+
break;
|
|
2104
|
+
case "POLKADOT_LIKE_SEND":
|
|
2105
|
+
case "POLKADOT_LIKE_ADDPROXY":
|
|
2106
|
+
case "POLKADOT_LIKE_REMOVEPROXY":
|
|
2107
|
+
case "POLKADOT_LIKE_BOND":
|
|
2108
|
+
case "POLKADOT_LIKE_REBOND":
|
|
2109
|
+
case "POLKADOT_LIKE_BONDEXTRA":
|
|
2110
|
+
case "POLKADOT_LIKE_UNBOND":
|
|
2111
|
+
case "POLKADOT_LIKE_WITHDRAWUNBONDED":
|
|
2112
|
+
case "POLKADOT_LIKE_SETPAYEE":
|
|
2113
|
+
case "POLKADOT_LIKE_ANONYMOUSPROXY":
|
|
2114
|
+
case "POLKADOT_LIKE_KILLANONYMOUS":
|
|
2115
|
+
case "POLKADOT_LIKE_CHILL":
|
|
2116
|
+
transactionDefaults = genPolkadotLikeTxData(transactionType);
|
|
2117
|
+
break;
|
|
2118
|
+
case "RIPPLE_LIKE_SEND":
|
|
2119
|
+
transactionDefaults = genRippleLikeSendData(transactionType);
|
|
2120
|
+
break;
|
|
2121
|
+
case "SOLANA_LIKE_SEND":
|
|
2122
|
+
case "SOLANA_LIKE_CREATE_DELEGATE_STAKE":
|
|
2123
|
+
case "SOLANA_LIKE_DELEGATE_STAKE":
|
|
2124
|
+
case "SOLANA_LIKE_WITHDRAW_STAKE":
|
|
2125
|
+
case "SOLANA_LIKE_DEACTIVATE_STAKE":
|
|
2126
|
+
case "SOLANA_LIKE_SPLIT_STAKE":
|
|
2127
|
+
case "SOLANA_LIKE_SPLIT_DEACTIVATE_STAKE":
|
|
2128
|
+
case "SOLANA_LIKE_MERGE_STAKE":
|
|
2129
|
+
case "SOLANA_LIKE_SEND_TOKEN":
|
|
2130
|
+
case "SOLANA_LIKE_FUND_AND_SEND_TOKEN":
|
|
2131
|
+
case "SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT":
|
|
2132
|
+
transactionDefaults = genSolanaLikeTxData(transactionType);
|
|
2133
|
+
break;
|
|
2134
|
+
case "STELLAR_LIKE_SEND":
|
|
2135
|
+
transactionDefaults = genStellarLikeSendData(transactionType);
|
|
2136
|
+
break;
|
|
2137
|
+
case "TEZOS_LIKE_SEND":
|
|
2138
|
+
case "TEZOS_LIKE_DELEGATE":
|
|
2139
|
+
case "TEZOS_LIKE_UNDELEGATE":
|
|
2140
|
+
transactionDefaults = genTezosLikeTxData(transactionType);
|
|
2141
|
+
break;
|
|
2142
|
+
case "SUI_LIKE_SEND":
|
|
2143
|
+
case "SUI_LIKE_SEND_TOKEN":
|
|
2144
|
+
case "SUI_LIKE_STAKE":
|
|
2145
|
+
case "SUI_LIKE_UNSTAKE":
|
|
2146
|
+
transactionDefaults = genSuiLikeTxData(transactionType);
|
|
2147
|
+
break;
|
|
2148
|
+
case "TRON_LIKE_SEND":
|
|
2149
|
+
case "TRON_LIKE_SEND_TOKEN":
|
|
2150
|
+
transactionDefaults = genTronLikeTxData(transactionType);
|
|
2151
|
+
break;
|
|
2152
|
+
}
|
|
2153
|
+
return {
|
|
2154
|
+
accountId: accountId ?? faker.string.uuid(),
|
|
2155
|
+
transaction: mergeTransactionData(transactionDefaults, transaction)
|
|
2156
|
+
};
|
|
2157
|
+
};
|
|
1655
2158
|
var shouldHaveTargetHsmId = (request) => {
|
|
1656
2159
|
switch (request.type) {
|
|
1657
2160
|
case RequestType.CREATE_ENTITY:
|
|
@@ -1694,43 +2197,43 @@ var shouldHaveTargetHsmId = (request) => {
|
|
|
1694
2197
|
return true;
|
|
1695
2198
|
}
|
|
1696
2199
|
};
|
|
1697
|
-
var shouldHaveTargetId = (
|
|
1698
|
-
switch (
|
|
2200
|
+
var shouldHaveTargetId = (type) => {
|
|
2201
|
+
switch (type) {
|
|
1699
2202
|
case RequestType.CREATE_API_KEY:
|
|
1700
2203
|
case RequestType.EDIT_API_KEY:
|
|
1701
2204
|
case RequestType.REVOKE_API_KEY:
|
|
1702
2205
|
return false;
|
|
1703
2206
|
case RequestType.CREATE_TRANSACTION:
|
|
2207
|
+
// TODO: move to True when we resolved the MetaTransaction id being an int
|
|
1704
2208
|
case RequestType.SIGN_DIGESTS:
|
|
1705
2209
|
return false;
|
|
1706
2210
|
case RequestType.UPDATE_QUORUM:
|
|
1707
2211
|
case RequestType.CREATE_PSD_USER:
|
|
1708
2212
|
case RequestType.CREATE_API_USER:
|
|
2213
|
+
case RequestType.CREATE_SCICONFIG:
|
|
1709
2214
|
case RequestType.CREATE_ACCOUNT:
|
|
1710
|
-
case RequestType.
|
|
1711
|
-
case RequestType.CREATE_WHITELIST:
|
|
2215
|
+
case RequestType.CREATE_API_USER_ACCESS:
|
|
1712
2216
|
case RequestType.CREATE_ENTITY:
|
|
1713
|
-
case RequestType.
|
|
2217
|
+
case RequestType.CREATE_GROUP:
|
|
1714
2218
|
case RequestType.CREATE_POLICY:
|
|
1715
|
-
case RequestType.
|
|
1716
|
-
case RequestType.TRADELINK_CREATE_CUSTODIAN:
|
|
1717
|
-
case RequestType.TRADELINK_CREATE_EXCHANGE:
|
|
1718
|
-
case RequestType.TRADELINK_CREATE_ASSET_MANAGER:
|
|
1719
|
-
return request.state === RequestState.EXECUTED;
|
|
2219
|
+
case RequestType.CREATE_WHITELIST:
|
|
1720
2220
|
case RequestType.EDIT_WORKSPACE_RULE:
|
|
1721
2221
|
case RequestType.EDIT_ACCOUNT:
|
|
1722
|
-
case RequestType.TRADELINK_ACTIVATE_ACCOUNT:
|
|
1723
2222
|
case RequestType.EDIT_TOKEN_RULE:
|
|
1724
2223
|
// EDIT_TOKEN_RULE targetId is the parent account which must always exist, even when creating new token rule.
|
|
1725
2224
|
case RequestType.EDIT_GROUP:
|
|
1726
|
-
case RequestType.REVOKE_GROUP:
|
|
1727
|
-
case RequestType.EDIT_WHITELIST:
|
|
1728
2225
|
case RequestType.EDIT_ENTITY:
|
|
1729
|
-
case RequestType.REVOKE_ENTITY:
|
|
1730
|
-
case RequestType.CREATE_API_USER_ACCESS:
|
|
1731
|
-
case RequestType.REVOKE_USER:
|
|
1732
2226
|
case RequestType.EDIT_SCICONFIG:
|
|
1733
2227
|
case RequestType.EDIT_POLICY:
|
|
2228
|
+
case RequestType.EDIT_WHITELIST:
|
|
2229
|
+
case RequestType.REVOKE_ENTITY:
|
|
2230
|
+
case RequestType.REVOKE_GROUP:
|
|
2231
|
+
case RequestType.REVOKE_USER:
|
|
2232
|
+
case RequestType.SIGN_MESSAGE:
|
|
2233
|
+
case RequestType.TRADELINK_ACTIVATE_ACCOUNT:
|
|
2234
|
+
case RequestType.TRADELINK_CREATE_ASSET_MANAGER:
|
|
2235
|
+
case RequestType.TRADELINK_CREATE_CUSTODIAN:
|
|
2236
|
+
case RequestType.TRADELINK_CREATE_EXCHANGE:
|
|
1734
2237
|
case RequestType.TRADELINK_EDIT_CUSTODIAN:
|
|
1735
2238
|
case RequestType.TRADELINK_EDIT_EXCHANGE:
|
|
1736
2239
|
case RequestType.TRADELINK_EDIT_ASSET_MANAGER:
|
|
@@ -1743,13 +2246,373 @@ var shouldHaveTargetId = (request) => {
|
|
|
1743
2246
|
return true;
|
|
1744
2247
|
}
|
|
1745
2248
|
};
|
|
2249
|
+
var genCreateAccountData = (opts) => {
|
|
2250
|
+
return {
|
|
2251
|
+
name: fakeUniqueName(),
|
|
2252
|
+
type: "BITCOIN_LIKE",
|
|
2253
|
+
currency: "bitcoin",
|
|
2254
|
+
contractAddress: null,
|
|
2255
|
+
tokenIdentifier: null,
|
|
2256
|
+
governance: {
|
|
2257
|
+
type: "CLASSIC",
|
|
2258
|
+
policy: { rules: [] }
|
|
2259
|
+
// TODO: account gov rules should not be empty
|
|
2260
|
+
},
|
|
2261
|
+
index: 0,
|
|
2262
|
+
derivationPath: "m/84'/0'/0'",
|
|
2263
|
+
...opts
|
|
2264
|
+
};
|
|
2265
|
+
};
|
|
2266
|
+
var genEditAccountData = (opts) => {
|
|
2267
|
+
return {
|
|
2268
|
+
name: fakeUniqueName(),
|
|
2269
|
+
governance: {
|
|
2270
|
+
type: "CLASSIC",
|
|
2271
|
+
policy: { rules: [] }
|
|
2272
|
+
// TODO: account gov rules should not be empty
|
|
2273
|
+
},
|
|
2274
|
+
...opts
|
|
2275
|
+
};
|
|
2276
|
+
};
|
|
2277
|
+
var genEditTokenRuleData = (opts) => {
|
|
2278
|
+
return {
|
|
2279
|
+
parentAccountId: faker.string.uuid(),
|
|
2280
|
+
contractAddress: faker.string.alphanumeric({ length: 44 }),
|
|
2281
|
+
rules: [
|
|
2282
|
+
{
|
|
2283
|
+
operationType: "SEND",
|
|
2284
|
+
reviewSteps: [
|
|
2285
|
+
{
|
|
2286
|
+
quorum: 1,
|
|
2287
|
+
userIds: []
|
|
2288
|
+
}
|
|
2289
|
+
]
|
|
2290
|
+
}
|
|
2291
|
+
],
|
|
2292
|
+
...opts
|
|
2293
|
+
};
|
|
2294
|
+
};
|
|
2295
|
+
var genCreateApiKeyData = (opts) => {
|
|
2296
|
+
return {
|
|
2297
|
+
name: faker.company.name().slice(0, 19),
|
|
2298
|
+
entities: [],
|
|
2299
|
+
scopes: {},
|
|
2300
|
+
// FIXME what should we put there?
|
|
2301
|
+
...opts
|
|
2302
|
+
};
|
|
2303
|
+
};
|
|
2304
|
+
var genEditApiKeyData = (opts) => {
|
|
2305
|
+
return {
|
|
2306
|
+
name: faker.company.name().slice(0, 19),
|
|
2307
|
+
entities: [],
|
|
2308
|
+
scopes: {},
|
|
2309
|
+
// FIXME what should we put there?
|
|
2310
|
+
...opts
|
|
2311
|
+
};
|
|
2312
|
+
};
|
|
2313
|
+
var genSignDigestsData = (opts) => {
|
|
2314
|
+
const { accountId, digests } = opts ?? {};
|
|
2315
|
+
return {
|
|
2316
|
+
accountId: accountId ?? faker.string.uuid(),
|
|
2317
|
+
digests: digests ?? [
|
|
2318
|
+
{
|
|
2319
|
+
digest: faker.string.hexadecimal({ prefix: "", length: 64 }),
|
|
2320
|
+
derivationPath: "m/44'/60'/0'"
|
|
2321
|
+
}
|
|
2322
|
+
]
|
|
2323
|
+
};
|
|
2324
|
+
};
|
|
2325
|
+
var genCreateEntityData = (opts) => {
|
|
2326
|
+
return {
|
|
2327
|
+
name: faker.word.noun({ length: { min: 5, max: 19 } }),
|
|
2328
|
+
accountIds: [],
|
|
2329
|
+
memberIds: [],
|
|
2330
|
+
...opts
|
|
2331
|
+
};
|
|
2332
|
+
};
|
|
2333
|
+
var genEditEntityData = (opts) => {
|
|
2334
|
+
return {
|
|
2335
|
+
name: faker.word.noun({ length: { min: 5, max: 19 } }),
|
|
2336
|
+
accountIds: [],
|
|
2337
|
+
memberIds: [],
|
|
2338
|
+
...opts
|
|
2339
|
+
};
|
|
2340
|
+
};
|
|
2341
|
+
var genCreateGroupData = (opts) => {
|
|
2342
|
+
return {
|
|
2343
|
+
name: faker.word.noun({ length: { min: 5, max: 19 } }),
|
|
2344
|
+
description: faker.lorem.sentence(),
|
|
2345
|
+
members: [],
|
|
2346
|
+
...opts
|
|
2347
|
+
};
|
|
2348
|
+
};
|
|
2349
|
+
var genEditGroupData = (opts) => {
|
|
2350
|
+
return {
|
|
2351
|
+
name: faker.word.noun({ length: { min: 5, max: 19 } }),
|
|
2352
|
+
description: faker.lorem.sentence(),
|
|
2353
|
+
members: [],
|
|
2354
|
+
...opts
|
|
2355
|
+
};
|
|
2356
|
+
};
|
|
2357
|
+
var genCreatePolicyData = (opts) => {
|
|
2358
|
+
return {
|
|
2359
|
+
name: faker.word.noun({ length: { min: 5, max: 19 } }),
|
|
2360
|
+
description: faker.lorem.sentence(),
|
|
2361
|
+
currency: "bitcoin",
|
|
2362
|
+
govRules: [],
|
|
2363
|
+
...opts
|
|
2364
|
+
};
|
|
2365
|
+
};
|
|
2366
|
+
var genEditPolicyData = (opts) => {
|
|
2367
|
+
return {
|
|
2368
|
+
name: faker.word.noun({ length: { min: 5, max: 19 } }),
|
|
2369
|
+
description: faker.lorem.sentence(),
|
|
2370
|
+
govRules: [],
|
|
2371
|
+
...opts
|
|
2372
|
+
};
|
|
2373
|
+
};
|
|
2374
|
+
var genCreateSciConfigData = (opts) => {
|
|
2375
|
+
return {
|
|
2376
|
+
account: faker.string.uuid(),
|
|
2377
|
+
config: {
|
|
2378
|
+
dapps: times(faker.number.int({ min: 0, max: 5 }), () => faker.word.noun()),
|
|
2379
|
+
customContractCallEnabled: faker.datatype.boolean()
|
|
2380
|
+
},
|
|
2381
|
+
...opts
|
|
2382
|
+
};
|
|
2383
|
+
};
|
|
2384
|
+
var genEditSciConfigData = (opts) => {
|
|
2385
|
+
return {
|
|
2386
|
+
config: {
|
|
2387
|
+
dapps: times(faker.number.int({ min: 0, max: 5 }), () => faker.word.noun()),
|
|
2388
|
+
customContractCallEnabled: faker.datatype.boolean()
|
|
2389
|
+
},
|
|
2390
|
+
...opts
|
|
2391
|
+
};
|
|
2392
|
+
};
|
|
2393
|
+
var genCreatePledgeIncrementData = (opts) => ({
|
|
2394
|
+
accountId: faker.string.uuid(),
|
|
2395
|
+
exchangeId: faker.string.uuid(),
|
|
2396
|
+
amount: "42",
|
|
2397
|
+
...opts
|
|
2398
|
+
});
|
|
2399
|
+
var genRepledgeRequestData = (opts) => ({
|
|
2400
|
+
accountId: faker.string.uuid(),
|
|
2401
|
+
exchangeId: faker.string.uuid(),
|
|
2402
|
+
amount: "42",
|
|
2403
|
+
...opts
|
|
2404
|
+
});
|
|
2405
|
+
var genCreateSettlementData = (opts) => ({
|
|
2406
|
+
accountId: faker.string.uuid(),
|
|
2407
|
+
exchangeId: faker.string.uuid(),
|
|
2408
|
+
transaction: {
|
|
2409
|
+
type: "BITCOIN_LIKE_SEND",
|
|
2410
|
+
amount: "42",
|
|
2411
|
+
currency: "bitcoin",
|
|
2412
|
+
maxFee: "999",
|
|
2413
|
+
recipient: faker.finance.bitcoinAddress(),
|
|
2414
|
+
feeStrategy: { type: "NORMAL" }
|
|
2415
|
+
},
|
|
2416
|
+
...opts
|
|
2417
|
+
});
|
|
2418
|
+
var genForceUnpledgeData = (opts) => ({
|
|
2419
|
+
accountId: faker.string.uuid(),
|
|
2420
|
+
exchangeId: faker.string.uuid(),
|
|
2421
|
+
...opts
|
|
2422
|
+
});
|
|
2423
|
+
var genTradelinkWithdrawData = (opts) => ({
|
|
2424
|
+
accountId: faker.string.uuid(),
|
|
2425
|
+
transaction: {
|
|
2426
|
+
type: "ETHEREUM_LIKE_SEND",
|
|
2427
|
+
recipient: "0x63e4195AF1509490b430F3f5bCb85A82a24F5C82",
|
|
2428
|
+
amount: faker.number.bigInt({ min: 0, max: 99 }).toString(),
|
|
2429
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
2430
|
+
currency: "ethereum",
|
|
2431
|
+
feeStrategy: {
|
|
2432
|
+
type: "NORMAL",
|
|
2433
|
+
gasPrice: "2",
|
|
2434
|
+
gasLimit: "10"
|
|
2435
|
+
}
|
|
2436
|
+
},
|
|
2437
|
+
...opts
|
|
2438
|
+
});
|
|
2439
|
+
var genTradelinkArbitrationData = (opts) => ({
|
|
2440
|
+
accountId: faker.string.uuid(),
|
|
2441
|
+
transaction: {
|
|
2442
|
+
type: "ETHEREUM_LIKE_SEND",
|
|
2443
|
+
recipient: "0xcefd70CFCd7a2FAa0fe956E3d496F9313297CB44",
|
|
2444
|
+
amount: faker.number.bigInt({ min: 0, max: 99 }).toString(),
|
|
2445
|
+
maxFee: faker.number.bigInt({ min: 1 }).toString(),
|
|
2446
|
+
currency: "ethereum",
|
|
2447
|
+
feeStrategy: {
|
|
2448
|
+
type: "NORMAL",
|
|
2449
|
+
gasPrice: "2",
|
|
2450
|
+
gasLimit: "10"
|
|
2451
|
+
}
|
|
2452
|
+
},
|
|
2453
|
+
...opts
|
|
2454
|
+
});
|
|
2455
|
+
var genCreatePsdUserData = (opts) => ({
|
|
2456
|
+
registrationId: faker.string.uuid(),
|
|
2457
|
+
...opts
|
|
2458
|
+
});
|
|
2459
|
+
var genCreateApiUserData = (opts) => {
|
|
2460
|
+
return {
|
|
2461
|
+
name: faker.person.firstName(),
|
|
2462
|
+
pubKey: fakePubKey(),
|
|
2463
|
+
role: UserRole.OPERATOR,
|
|
2464
|
+
viewAll: false,
|
|
2465
|
+
...opts
|
|
2466
|
+
};
|
|
2467
|
+
};
|
|
2468
|
+
var genCreateApiUserAccessData = (opts) => {
|
|
2469
|
+
return {
|
|
2470
|
+
name: faker.person.firstName(),
|
|
2471
|
+
...opts
|
|
2472
|
+
};
|
|
2473
|
+
};
|
|
2474
|
+
var genCreateWhitelistData = (opts) => {
|
|
2475
|
+
return {
|
|
2476
|
+
name: faker.word.noun({ length: { min: 5, max: 19 } }),
|
|
2477
|
+
description: faker.lorem.sentence(),
|
|
2478
|
+
type: faker.helpers.arrayElement(Object.values(WhitelistType)),
|
|
2479
|
+
addresses: [
|
|
2480
|
+
{
|
|
2481
|
+
name: faker.lorem.words(3),
|
|
2482
|
+
currency: "bitcoin",
|
|
2483
|
+
address: faker.finance.bitcoinAddress(),
|
|
2484
|
+
destinationTags: []
|
|
2485
|
+
},
|
|
2486
|
+
{
|
|
2487
|
+
name: faker.lorem.words(3),
|
|
2488
|
+
currency: "ethereum",
|
|
2489
|
+
address: faker.finance.ethereumAddress(),
|
|
2490
|
+
destinationTags: []
|
|
2491
|
+
}
|
|
2492
|
+
],
|
|
2493
|
+
...opts
|
|
2494
|
+
};
|
|
2495
|
+
};
|
|
2496
|
+
var genEditWhitelistData = (opts) => {
|
|
2497
|
+
return {
|
|
2498
|
+
name: faker.word.noun({ length: { min: 5, max: 19 } }),
|
|
2499
|
+
addresses: [
|
|
2500
|
+
{
|
|
2501
|
+
name: faker.lorem.words(3),
|
|
2502
|
+
currency: "bitcoin",
|
|
2503
|
+
address: faker.finance.bitcoinAddress(),
|
|
2504
|
+
destinationTags: []
|
|
2505
|
+
},
|
|
2506
|
+
{
|
|
2507
|
+
name: faker.lorem.words(3),
|
|
2508
|
+
currency: "ethereum",
|
|
2509
|
+
address: faker.finance.ethereumAddress(),
|
|
2510
|
+
destinationTags: []
|
|
2511
|
+
}
|
|
2512
|
+
],
|
|
2513
|
+
...opts
|
|
2514
|
+
};
|
|
2515
|
+
};
|
|
2516
|
+
var genWorkspaceRuleData = (opts) => {
|
|
2517
|
+
return {
|
|
2518
|
+
permission: AdminPermission.CREATE_ACCOUNT_WITH_POLICY,
|
|
2519
|
+
reviewConfig: [{ userIds: [], quorum: 2 }],
|
|
2520
|
+
...opts
|
|
2521
|
+
};
|
|
2522
|
+
};
|
|
1746
2523
|
|
|
1747
2524
|
// src/__fakes__/models/requests/requests-and-reviews.ts
|
|
2525
|
+
var genRequestData = (type, opts) => {
|
|
2526
|
+
switch (type) {
|
|
2527
|
+
// Workspace...
|
|
2528
|
+
case RequestType.UPDATE_QUORUM:
|
|
2529
|
+
return { quorum: 3, ...opts };
|
|
2530
|
+
// User...
|
|
2531
|
+
case RequestType.CREATE_PSD_USER:
|
|
2532
|
+
return genCreatePsdUserData(opts);
|
|
2533
|
+
case RequestType.CREATE_API_USER:
|
|
2534
|
+
return genCreateApiUserData(opts);
|
|
2535
|
+
case RequestType.CREATE_API_USER_ACCESS:
|
|
2536
|
+
return genCreateApiUserAccessData(opts);
|
|
2537
|
+
case RequestType.REVOKE_USER:
|
|
2538
|
+
return {};
|
|
2539
|
+
// Admin gov rule...
|
|
2540
|
+
case RequestType.EDIT_WORKSPACE_RULE:
|
|
2541
|
+
return genWorkspaceRuleData(opts);
|
|
2542
|
+
// Group...
|
|
2543
|
+
case RequestType.CREATE_GROUP:
|
|
2544
|
+
return genCreateGroupData(opts);
|
|
2545
|
+
case RequestType.EDIT_GROUP:
|
|
2546
|
+
return genEditGroupData(opts);
|
|
2547
|
+
case RequestType.REVOKE_GROUP:
|
|
2548
|
+
return {};
|
|
2549
|
+
// ApiKey...
|
|
2550
|
+
case RequestType.CREATE_API_KEY:
|
|
2551
|
+
return genCreateApiKeyData(opts);
|
|
2552
|
+
case RequestType.EDIT_API_KEY:
|
|
2553
|
+
return genEditApiKeyData(opts);
|
|
2554
|
+
case RequestType.REVOKE_API_KEY:
|
|
2555
|
+
return {};
|
|
2556
|
+
// Whitelist...
|
|
2557
|
+
case RequestType.CREATE_WHITELIST:
|
|
2558
|
+
return genCreateWhitelistData(opts);
|
|
2559
|
+
case RequestType.EDIT_WHITELIST:
|
|
2560
|
+
return genEditWhitelistData(opts);
|
|
2561
|
+
// Entity...
|
|
2562
|
+
case RequestType.CREATE_ENTITY:
|
|
2563
|
+
return genCreateEntityData(opts);
|
|
2564
|
+
case RequestType.EDIT_ENTITY:
|
|
2565
|
+
return genEditEntityData(opts);
|
|
2566
|
+
case RequestType.REVOKE_ENTITY:
|
|
2567
|
+
return {};
|
|
2568
|
+
// Account...
|
|
2569
|
+
case RequestType.CREATE_ACCOUNT:
|
|
2570
|
+
return genCreateAccountData(opts);
|
|
2571
|
+
case RequestType.EDIT_ACCOUNT:
|
|
2572
|
+
return genEditAccountData(opts);
|
|
2573
|
+
case RequestType.EDIT_TOKEN_RULE:
|
|
2574
|
+
return genEditTokenRuleData(opts);
|
|
2575
|
+
// Operator requests...
|
|
2576
|
+
case RequestType.CREATE_TRANSACTION:
|
|
2577
|
+
return genCreateTransactionData(opts);
|
|
2578
|
+
case RequestType.SIGN_MESSAGE:
|
|
2579
|
+
return genSignMessageData(opts);
|
|
2580
|
+
case RequestType.SIGN_DIGESTS:
|
|
2581
|
+
return genSignDigestsData(opts);
|
|
2582
|
+
// SCI config...
|
|
2583
|
+
case RequestType.CREATE_SCICONFIG:
|
|
2584
|
+
return genCreateSciConfigData(opts);
|
|
2585
|
+
case RequestType.EDIT_SCICONFIG:
|
|
2586
|
+
return genEditSciConfigData(opts);
|
|
2587
|
+
// Policy
|
|
2588
|
+
case RequestType.CREATE_POLICY:
|
|
2589
|
+
return genCreatePolicyData(opts);
|
|
2590
|
+
case RequestType.EDIT_POLICY:
|
|
2591
|
+
return genEditPolicyData(opts);
|
|
2592
|
+
// Tradelink...
|
|
2593
|
+
case RequestType.TRADELINK_ADJUST_PLEDGE:
|
|
2594
|
+
return genCreatePledgeIncrementData(opts);
|
|
2595
|
+
case RequestType.TRADELINK_CREATE_SETTLEMENT:
|
|
2596
|
+
return genCreateSettlementData(opts);
|
|
2597
|
+
case RequestType.TRADELINK_FORCE_UNPLEDGE:
|
|
2598
|
+
return genForceUnpledgeData(opts);
|
|
2599
|
+
case RequestType.TRADELINK_WITHDRAW:
|
|
2600
|
+
return genTradelinkWithdrawData(opts);
|
|
2601
|
+
case RequestType.TRADELINK_REPLEDGE:
|
|
2602
|
+
return genRepledgeRequestData(opts);
|
|
2603
|
+
case RequestType.TRADELINK_ARBITRATE:
|
|
2604
|
+
return genTradelinkArbitrationData(opts);
|
|
2605
|
+
default: {
|
|
2606
|
+
const unknownType = type;
|
|
2607
|
+
throw new Error(`Unknown request type: ${unknownType}`);
|
|
2608
|
+
}
|
|
2609
|
+
}
|
|
2610
|
+
};
|
|
1748
2611
|
var genRequestReviewSteps = (numSteps) => times(1, () => ({ stageName: "default", quorum: 2 }));
|
|
1749
2612
|
var genVaultRequest = (opts) => {
|
|
1750
2613
|
const { type, state = RequestState.PENDING_APPROVAL, data, ...custom } = opts;
|
|
1751
2614
|
const targetHsmId = shouldHaveTargetHsmId({ type, state }) ? type === RequestType.CREATE_PSD_USER ? fakePubKey() : fakeHsmObjectId() : null;
|
|
1752
|
-
const targetId = shouldHaveTargetId(
|
|
2615
|
+
const targetId = shouldHaveTargetId(type) ? faker.string.uuid() : null;
|
|
1753
2616
|
return injectSyncId({
|
|
1754
2617
|
id: faker.string.uuid(),
|
|
1755
2618
|
workspaceName: fakeWorkspaceName(),
|
|
@@ -1813,6 +2676,98 @@ var genVaultRequestReview = (opts) => {
|
|
|
1813
2676
|
...opts
|
|
1814
2677
|
};
|
|
1815
2678
|
};
|
|
2679
|
+
var genUserFieldsForDeviceType = (deviceType) => {
|
|
2680
|
+
switch (deviceType) {
|
|
2681
|
+
case UserDeviceType.PSD:
|
|
2682
|
+
case UserDeviceType.SOFT_PSD:
|
|
2683
|
+
return {
|
|
2684
|
+
deviceType,
|
|
2685
|
+
deviceUserId: fakeDeviceUserId(),
|
|
2686
|
+
hsmId: null
|
|
2687
|
+
};
|
|
2688
|
+
case UserDeviceType.API:
|
|
2689
|
+
return {
|
|
2690
|
+
deviceType,
|
|
2691
|
+
deviceUserId: null,
|
|
2692
|
+
hsmId: faker.string.uuid()
|
|
2693
|
+
};
|
|
2694
|
+
}
|
|
2695
|
+
};
|
|
2696
|
+
var genUser = (opts) => {
|
|
2697
|
+
const role = opts?.role ?? faker.helpers.arrayElement([UserRole.ADMIN, UserRole.OPERATOR]);
|
|
2698
|
+
const deviceType = opts?.deviceType ?? UserDeviceType.PSD;
|
|
2699
|
+
const userFieldsForDeviceType = genUserFieldsForDeviceType(deviceType);
|
|
2700
|
+
const gateType = role === UserRole.READ_ONLY_API_KEY ? GateUserType.VaultApiKey : GateUserType.Person;
|
|
2701
|
+
return injectSyncId({
|
|
2702
|
+
id: faker.string.uuid(),
|
|
2703
|
+
name: faker.person.fullName(),
|
|
2704
|
+
...userFieldsForDeviceType,
|
|
2705
|
+
authUserId: genAuthUserId(),
|
|
2706
|
+
pubKey: fakePubKey(),
|
|
2707
|
+
workspaceName: fakeWorkspaceName(),
|
|
2708
|
+
u2fKeyHandle: fakePubKey(),
|
|
2709
|
+
u2fPubKey: fakePubKey(),
|
|
2710
|
+
legacyViewAll: false,
|
|
2711
|
+
role,
|
|
2712
|
+
status: ActivationStatus.ACTIVE,
|
|
2713
|
+
isSuspended: false,
|
|
2714
|
+
gateType,
|
|
2715
|
+
gateId: fakeGateId(),
|
|
2716
|
+
createdAt: faker.date.past(),
|
|
2717
|
+
updatedAt: faker.date.past(),
|
|
2718
|
+
...opts
|
|
2719
|
+
});
|
|
2720
|
+
};
|
|
2721
|
+
var genGroup = (opts) => injectSyncId({
|
|
2722
|
+
id: faker.string.uuid(),
|
|
2723
|
+
workspaceName: fakeWorkspaceName(),
|
|
2724
|
+
name: faker.person.fullName(),
|
|
2725
|
+
description: faker.lorem.sentence(10),
|
|
2726
|
+
hsmId: fakeHsmObjectId(),
|
|
2727
|
+
status: ActivationStatus.ACTIVE,
|
|
2728
|
+
gateId: fakeGateId(),
|
|
2729
|
+
gateType: "Group",
|
|
2730
|
+
createdAt: faker.date.past(),
|
|
2731
|
+
updatedAt: faker.date.past(),
|
|
2732
|
+
...opts
|
|
2733
|
+
});
|
|
2734
|
+
var genGroupWithMembers = (opts) => {
|
|
2735
|
+
const group = genGroup(opts);
|
|
2736
|
+
return {
|
|
2737
|
+
...group,
|
|
2738
|
+
members: opts?.members ?? []
|
|
2739
|
+
};
|
|
2740
|
+
};
|
|
2741
|
+
var genWhitelist = (opts) => {
|
|
2742
|
+
return injectSyncId({
|
|
2743
|
+
id: faker.string.uuid(),
|
|
2744
|
+
workspaceName: fakeWorkspaceName(),
|
|
2745
|
+
name: faker.lorem.words(3),
|
|
2746
|
+
description: faker.lorem.sentence(10),
|
|
2747
|
+
addresses: [
|
|
2748
|
+
{
|
|
2749
|
+
name: faker.lorem.words(3),
|
|
2750
|
+
currency: "bitcoin",
|
|
2751
|
+
address: faker.finance.bitcoinAddress(),
|
|
2752
|
+
destinationTags: []
|
|
2753
|
+
},
|
|
2754
|
+
{
|
|
2755
|
+
name: faker.lorem.words(3),
|
|
2756
|
+
currency: "ethereum",
|
|
2757
|
+
address: faker.finance.ethereumAddress(),
|
|
2758
|
+
destinationTags: []
|
|
2759
|
+
}
|
|
2760
|
+
],
|
|
2761
|
+
hsmId: fakeHsmObjectId(),
|
|
2762
|
+
type: faker.helpers.arrayElement(Object.values(WhitelistType)),
|
|
2763
|
+
status: faker.helpers.arrayElement(Object.values(ActivationStatus)),
|
|
2764
|
+
gateId: fakeGateId(),
|
|
2765
|
+
gateType: "Whitelist",
|
|
2766
|
+
createdAt: faker.date.past(),
|
|
2767
|
+
updatedAt: faker.date.past(),
|
|
2768
|
+
...opts
|
|
2769
|
+
});
|
|
2770
|
+
};
|
|
1816
2771
|
var zPubKey = zHexString.meta({ description: "Public key" });
|
|
1817
2772
|
var zHsmCertificate = z.object({
|
|
1818
2773
|
codeHash: z.base64().meta({ description: "Hash of the executable that generated this certificate" }),
|
|
@@ -1929,8 +2884,7 @@ var zUserRegistrationCreateInput = z.object({
|
|
|
1929
2884
|
zUserRegistrationCreateInput.extend({
|
|
1930
2885
|
id: z.string().meta({ description: "User registration ID" }),
|
|
1931
2886
|
workspaceName: z.string().meta({ description: "Workspace name" }),
|
|
1932
|
-
state: z.enum(UserRegistrationState).meta({ description: "User registration state" })
|
|
1933
|
-
isLocked: z.boolean().meta({ description: "Whether the registration is locked by a request" })
|
|
2887
|
+
state: z.enum(UserRegistrationState).meta({ description: "User registration state" })
|
|
1934
2888
|
});
|
|
1935
2889
|
|
|
1936
2890
|
// src/users/request-data.ts
|
|
@@ -1939,7 +2893,7 @@ var zCreatePsdUserRequestData = z14.object({
|
|
|
1939
2893
|
});
|
|
1940
2894
|
var zCreateApiUserRequestData = z14.object({
|
|
1941
2895
|
name: zUserName,
|
|
1942
|
-
pubKey: z14.string().meta({ description: "Public key" }),
|
|
2896
|
+
pubKey: z14.string().regex(/^04[0-9a-fA-F]{128}$/).meta({ description: "Public key, uncompressed secp256r1 format" }),
|
|
1943
2897
|
role: z14.enum(["ADMIN", "OPERATOR"]).meta({ description: "User role" }),
|
|
1944
2898
|
viewAll: z14.boolean().meta({ description: "View all data" }).optional()
|
|
1945
2899
|
}).meta({ description: "Create API user request data" });
|
|
@@ -2353,10 +3307,7 @@ z14.enum([
|
|
|
2353
3307
|
var zRawSigningLiveData = zCommonLiveData.extend({
|
|
2354
3308
|
type: z14.literal(AccountType.RAW_SIGNING).meta({ description: "Account type" })
|
|
2355
3309
|
}).meta({ description: "Raw signing account" });
|
|
2356
|
-
z14.discriminatedUnion("type", [
|
|
2357
|
-
zRawSigningLiveData,
|
|
2358
|
-
...zAccountLiveData.options
|
|
2359
|
-
]);
|
|
3310
|
+
z14.discriminatedUnion("type", [zRawSigningLiveData, ...zAccountLiveData.options]).meta({ description: "Account live data", id: "AccountLiveDataResponse" });
|
|
2360
3311
|
z14.object({
|
|
2361
3312
|
address: z14.string().meta({ description: "Address" }),
|
|
2362
3313
|
derivationPath: z14.string().nullable().meta({ description: "Derivation path" })
|
|
@@ -2655,7 +3606,8 @@ var getAccountAssetFields = (account) => {
|
|
|
2655
3606
|
case AccountType.HEDERA_LIKE:
|
|
2656
3607
|
return {
|
|
2657
3608
|
type: account.type,
|
|
2658
|
-
address: account.address
|
|
3609
|
+
address: account.address,
|
|
3610
|
+
isActivated: account.lesWalletId !== null
|
|
2659
3611
|
};
|
|
2660
3612
|
/* v8 ignore next -- @preserve */
|
|
2661
3613
|
default:
|
|
@@ -2695,6 +3647,63 @@ var serializeAccount = (account) => {
|
|
|
2695
3647
|
};
|
|
2696
3648
|
return zAccountResponse.parse(response);
|
|
2697
3649
|
};
|
|
3650
|
+
var zUserResponse = z14.object({
|
|
3651
|
+
id: z14.string().meta({ description: "Internal unique identifier" }),
|
|
3652
|
+
legacyId: z14.number().meta({ description: "Legacy internal unique identifier (for retro-compatibility)" }),
|
|
3653
|
+
legacyViewAll: z14.boolean().meta({ description: "If true, user can read all resources on the workspace" }),
|
|
3654
|
+
workspaceName: z14.string().meta({ description: "User's workspace name" }),
|
|
3655
|
+
name: z14.string().meta({ description: "User name" }),
|
|
3656
|
+
deviceUserId: z14.string().nullable().meta({ description: "User's device ID (for non-API users)" }),
|
|
3657
|
+
deviceType: z14.enum(UserDeviceType).meta({ description: "User's device type" }),
|
|
3658
|
+
role: z14.enum(UserRole).meta({ description: "User role" }),
|
|
3659
|
+
pubKey: z14.string().meta({ description: "User public key" }),
|
|
3660
|
+
status: z14.enum(ActivationStatus).meta({ description: "User status" }),
|
|
3661
|
+
isSuspended: z14.boolean().meta({ description: "Whether the user is suspended" }),
|
|
3662
|
+
createdAt: z14.coerce.date().meta({ description: "Creation timestamp" }),
|
|
3663
|
+
updatedAt: z14.coerce.date().meta({ description: "Last modification timestamp" })
|
|
3664
|
+
});
|
|
3665
|
+
zUserResponse.extend({
|
|
3666
|
+
role: z14.literal(UserRole.ADMIN).meta({ description: "Should always be ADMIN" })
|
|
3667
|
+
});
|
|
3668
|
+
z14.enum([
|
|
3669
|
+
"name",
|
|
3670
|
+
"role",
|
|
3671
|
+
"status",
|
|
3672
|
+
"createdAt",
|
|
3673
|
+
"updatedAt"
|
|
3674
|
+
]).default("createdAt");
|
|
3675
|
+
|
|
3676
|
+
// src/users/app-utils.ts
|
|
3677
|
+
function serializeUser(user) {
|
|
3678
|
+
const serialized = {
|
|
3679
|
+
...user,
|
|
3680
|
+
legacyId: user.gateId
|
|
3681
|
+
};
|
|
3682
|
+
return zUserResponse.parse(serialized);
|
|
3683
|
+
}
|
|
3684
|
+
|
|
3685
|
+
// src/groups/app-types.ts
|
|
3686
|
+
var zGroupResponse = z14.object({
|
|
3687
|
+
id: z14.string().meta({ description: "Internal unique identifier" }),
|
|
3688
|
+
legacyId: z14.number().meta({ description: "Legacy internal unique identifier (for retro-compatibility)" }),
|
|
3689
|
+
name: z14.string().meta({ description: "Group name" }),
|
|
3690
|
+
description: z14.string().nullable().meta({ description: "Group description" }),
|
|
3691
|
+
status: z14.enum(ActivationStatus).meta({ description: "Group status" }),
|
|
3692
|
+
members: z14.array(zUserResponse).meta({ description: "Group members" }),
|
|
3693
|
+
createdAt: z14.coerce.date().meta({ description: "Creation timestamp" }),
|
|
3694
|
+
updatedAt: z14.coerce.date().meta({ description: "Last modification timestamp" })
|
|
3695
|
+
});
|
|
3696
|
+
z14.enum(["name", "status", "createdAt", "updatedAt"]).default("createdAt");
|
|
3697
|
+
|
|
3698
|
+
// src/groups/app-utils.ts
|
|
3699
|
+
function serializeGroup(group) {
|
|
3700
|
+
const serialized = {
|
|
3701
|
+
...group,
|
|
3702
|
+
legacyId: group.gateId,
|
|
3703
|
+
members: group.members.map(serializeUser)
|
|
3704
|
+
};
|
|
3705
|
+
return zGroupResponse.parse(serialized);
|
|
3706
|
+
}
|
|
2698
3707
|
|
|
2699
3708
|
// src/compat/patch-request-expired-at.ts
|
|
2700
3709
|
var patchRequestExpiredAt = (data) => ({
|
|
@@ -3062,6 +4071,31 @@ function serializeVaultRequest(request) {
|
|
|
3062
4071
|
patched = patchTezosRequestData(patched);
|
|
3063
4072
|
return patched;
|
|
3064
4073
|
}
|
|
4074
|
+
var zWhitelistAddressResponse = z14.object({
|
|
4075
|
+
name: z14.string().min(1).max(50).meta({ description: "Address name" }),
|
|
4076
|
+
currency: zCurrencyString.meta({ description: "Address currency" }),
|
|
4077
|
+
address: z14.string().min(1).max(200).meta({ description: "Address value" }),
|
|
4078
|
+
destinationTags: z14.array(z14.string().min(1).regex(/^\w+$/)).optional().meta({ description: "List of destination tags (applicable for Ripple currency)" })
|
|
4079
|
+
});
|
|
4080
|
+
var zWhitelistResponse = z14.object({
|
|
4081
|
+
id: z14.string().meta({ description: "Internal unique identifier" }),
|
|
4082
|
+
legacyId: z14.number().meta({ description: "Legacy internal unique identifier (for retro-compatibility)" }),
|
|
4083
|
+
name: z14.string().meta({ description: "Whitelist name" }),
|
|
4084
|
+
status: z14.enum(ActivationStatus).meta({ description: "Whitelist status" }),
|
|
4085
|
+
addresses: z14.array(zWhitelistAddressResponse),
|
|
4086
|
+
createdAt: z14.coerce.date().meta({ description: "Creation timestamp" }),
|
|
4087
|
+
updatedAt: z14.coerce.date().meta({ description: "Last modification timestamp" }),
|
|
4088
|
+
description: z14.string().nullable().meta({ description: "Whitelist description" })
|
|
4089
|
+
}).meta({ description: "Whitelist", id: "WhitelistResponse" });
|
|
4090
|
+
z14.enum(["name", "status", "createdAt", "updatedAt"]).default("createdAt");
|
|
4091
|
+
var serializeWhitelist = (whitelist) => {
|
|
4092
|
+
const serialized = {
|
|
4093
|
+
...whitelist,
|
|
4094
|
+
legacyId: whitelist.gateId,
|
|
4095
|
+
addresses: z.array(zWhitelistAddressResponse).parse(whitelist.addresses)
|
|
4096
|
+
};
|
|
4097
|
+
return zWhitelistResponse.parse(serialized);
|
|
4098
|
+
};
|
|
3065
4099
|
|
|
3066
4100
|
// src/__fakes__/responses.ts
|
|
3067
4101
|
function genVaultRequestResponse(opts, reviews = []) {
|
|
@@ -3074,8 +4108,23 @@ function genAccountResponse(overrides) {
|
|
|
3074
4108
|
const account = serializeAccount(dbAccount);
|
|
3075
4109
|
return zAccountResponse.parse(account);
|
|
3076
4110
|
}
|
|
4111
|
+
function genUserResponse(overrides) {
|
|
4112
|
+
const dbUser = genUser(overrides);
|
|
4113
|
+
const user = serializeUser(dbUser);
|
|
4114
|
+
return zUserResponse.parse(user);
|
|
4115
|
+
}
|
|
4116
|
+
function genGroupResponse(overrides) {
|
|
4117
|
+
const dbGroup = genGroupWithMembers(overrides);
|
|
4118
|
+
const group = serializeGroup(dbGroup);
|
|
4119
|
+
return zGroupResponse.parse(group);
|
|
4120
|
+
}
|
|
4121
|
+
function genWhitelistResponse(overrides) {
|
|
4122
|
+
const dbWhitelist = genWhitelist(overrides);
|
|
4123
|
+
const whitelist = serializeWhitelist(dbWhitelist);
|
|
4124
|
+
return zWhitelistResponse.parse(whitelist);
|
|
4125
|
+
}
|
|
3077
4126
|
/* v8 ignore next -- @preserve */
|
|
3078
4127
|
|
|
3079
|
-
export { genAccountResponse, genVaultRequestResponse, genVaultRequestReview };
|
|
4128
|
+
export { genAccountResponse, genCreateTransactionData, genGroupResponse, genRequestData, genUserResponse, genVaultRequestResponse, genVaultRequestReview, genWhitelistResponse };
|
|
3080
4129
|
//# sourceMappingURL=fakes.mjs.map
|
|
3081
4130
|
//# sourceMappingURL=fakes.mjs.map
|