@ledgerhq/revault-api 1.40.0 → 1.40.2

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/fakes.mjs CHANGED
@@ -1,71 +1,11 @@
1
1
  import { __export } from './chunk-J5LGTIGS.mjs';
2
2
  import { faker } from '@faker-js/faker';
3
- import { AllowedAction, AccountType, ChallengeType, PsdModel, UserRole, UserRegistrationState, AdminPermission, RequestType, MessageType, AccountGovernanceType, ActivationStatus, WhitelistType, RequestReviewStatus, RequestState, GateAccountType } from '@prisma/client';
4
- import z11, { z } from 'zod';
5
- import 'axios';
6
- import invariant from 'invariant';
3
+ import { AccountType, ChallengeType, PsdModel, UserRole, UserRegistrationState, AllowedAction, AdminPermission, RequestType, AccountGovernanceType, ActivationStatus, MessageType, WhitelistType, RequestReviewStatus, RequestState, GateAccountType } from '@prisma/client';
7
4
  import { omit, times, get, isPlainObject } from 'lodash';
8
-
9
- var zHexString = z.string().regex(/^[0-9a-fA-F]+$/);
10
- var zIntString = z.string().nonempty().regex(/^(-?[1-9]\d*|0)$/);
11
- var zUnsignedIntString = z.string().nonempty().regex(/^([1-9]\d*|0)$/);
12
- var zCurrencyString = z.string().nonempty().max(40).regex(/^\w+$/).meta({ description: "Will be deprecated soon, use network instead. Currency" });
13
- var zNetwork = z.string().nonempty().max(40).regex(/^\w+$/).meta({ description: "Network (Same as currency for now)" });
14
- var zCurrency = z.object({
15
- network: zNetwork,
16
- contractAddress: z.string().nonempty().nullable().meta({ description: "Token contract address" })
17
- });
18
- z.string().regex(/^[\w-]+$/).nonempty();
19
- var zHsmObjectId = z.string().regex(/^[\w-]+$/).nonempty();
20
- z.codec(z.iso.datetime(), z.date(), {
21
- decode: (isoString) => new Date(isoString),
22
- // ISO string → Date
23
- encode: (date) => date.toISOString()
24
- // Date → ISO string
25
- });
26
-
27
- // src/types/operation.ts
28
- var zValueTransactionOperationType = z.enum([
29
- AllowedAction.SEND,
30
- AllowedAction.STAKE,
31
- AllowedAction.DEPLOY_CONTRACT,
32
- AllowedAction.EXECUTE_CONTRACT,
33
- AllowedAction.ACTIVATE_TOKEN,
34
- AllowedAction.RECEIVE
35
- ]);
36
- var zValueTransactionOperation = z.object({
37
- type: zValueTransactionOperationType,
38
- currency: zCurrencyString,
39
- recipient: z.string().nonempty(),
40
- destinationTag: z.string().nonempty().optional(),
41
- value: zUnsignedIntString
42
- });
43
- var zSigningOperationType = z.enum([AllowedAction.SIGN_MESSAGE, AllowedAction.SIGN_DIGESTS]);
44
- var zSigningOperation = z.object({
45
- type: zSigningOperationType
46
- });
47
- var zClassicOperationType = z.enum([
48
- AllowedAction.SEND,
49
- AllowedAction.STAKE,
50
- AllowedAction.DEPLOY_CONTRACT,
51
- AllowedAction.EXECUTE_CONTRACT,
52
- AllowedAction.SIGN_MESSAGE,
53
- AllowedAction.ACTIVATE_TOKEN,
54
- AllowedAction.RECEIVE
55
- ]);
56
- z.enum([AllowedAction.SIGN_DIGESTS]);
57
- var zOperationType = z.enum([
58
- ...zValueTransactionOperationType.options,
59
- ...zSigningOperationType.options
60
- ]);
61
- z.discriminatedUnion("type", [
62
- zValueTransactionOperation,
63
- zSigningOperation
64
- ]);
65
- var zNote = z11.object({
66
- title: z11.string().meta({ description: "Note title" }),
67
- content: z11.string().meta({ description: "Note content" })
68
- });
5
+ import 'axios';
6
+ import invariant8 from 'invariant';
7
+ import z13, { z } from 'zod';
8
+ import 'ts-pattern';
69
9
 
70
10
  // src/errors.ts
71
11
  var ValidationError = class extends Error {
@@ -83,7 +23,7 @@ var buildGateSyncId = (workspaceName, gateType, gateId) => {
83
23
  // src/utils.ts
84
24
  var isRecord = (value) => isPlainObject(value);
85
25
  var ensureNonEmptyArray = (values, message) => {
86
- invariant(
26
+ invariant8(
87
27
  values.length > 0,
88
28
  `Expected non-empty array but got one with length ${values.length}`
89
29
  );
@@ -92,329 +32,673 @@ var ensureNonEmptyArray = (values, message) => {
92
32
  function unreachable(value) {
93
33
  throw new Error(`Un-covered: ${value}`);
94
34
  }
95
- var NetworkFamily = omit(AccountType, ["RAW_SIGNING"]);
96
- var zHexDataString = z11.codec(z11.string().regex(/^(?:0x|0X)?[a-fA-F0-9]+$/), z11.string(), {
97
- decode: (hex) => `0x${hex.toLowerCase().replace("0x", "")}`,
98
- encode: (hex) => hex
99
- });
100
- var zCommonLiveData = z11.object({
101
- id: z11.string().meta({ description: "Account internal unique identifier" }),
102
- balance: z11.object({
103
- total: z11.string().meta({ description: "Total balance" }),
104
- pending: z11.string().meta({ description: "Pending balance" })
105
- }).meta({ description: "Balance fields" })
106
- });
107
- var zCommonTransactionData = z11.object({
108
- amount: zUnsignedIntString.meta({ description: "Transaction amount" }),
109
- currency: zCurrencyString.meta({
110
- description: "Will be deprecated soon, use Account.network. Transaction currency"
111
- }),
112
- // TODO: to remove, use account.network instead
113
- maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
114
- recipient: z11.string().nonempty().meta({ description: "Transaction recipient" })
115
- });
116
- var zFeeStrategyCustom = z11.object({
117
- type: z11.enum(["SLOW", "NORMAL", "FAST", "CUSTOM"])
118
- });
119
- var zFeeStrategy = z11.object({
120
- type: z11.enum(["SLOW", "NORMAL", "FAST"])
121
- });
122
- var zTransactionStatus = z11.enum(["SUCCESSFUL", "FAILED"]);
123
- var zCommonTransactionResponse = z11.object({
124
- id: z11.string().meta({ description: "Internal unique identifier" }),
125
- hash: z11.string().meta({ description: "Transaction hash" }),
126
- block: z11.object({
127
- height: z11.string().nullable().meta({ description: "Transaction block height" }),
128
- time: z11.string().nullable().meta({ description: "Transaction block time" })
129
- }),
130
- status: zTransactionStatus.meta({ description: "Transaction status" }),
131
- confirmations: z11.string().meta({ description: "Block confirmations" }),
132
- amount: z11.string().meta({ description: "Transaction amount" }),
133
- fee: z11.string().meta({ description: "Transaction fee" }),
134
- senders: z11.array(z11.string()).meta({ description: "Senders (can be multiple for UTXOs-based accounts)" }),
135
- recipients: z11.array(z11.string()).meta({ description: "Recipients (can be multiple for multi-output transactions)" })
136
- });
137
35
 
138
- // src/networks/bitcoin.ts
139
- var zBitcoinLikeAssetFields = z11.object({
140
- type: z11.literal(NetworkFamily.BITCOIN_LIKE).meta({ description: "Account type" }),
141
- xpub: z11.string().meta({ description: "xpub (extended public key)" })
142
- }).meta({ description: "Bitcoin-like" });
143
- var zBitcoinLikeLiveData = zCommonLiveData.extend({
144
- type: z11.literal(NetworkFamily.BITCOIN_LIKE).meta({ description: "Account type" })
145
- }).meta({ description: "Bitcoin-like" });
146
- var zBitcoinLikeTransactionType = z11.enum(["BITCOIN_LIKE_SEND", "BITCOIN_LIKE_RECEIVE"]).meta({ description: "Bitcoin-like transaction type" });
147
- var zBitcoinLikeFeeStrategy = zFeeStrategyCustom.extend({
148
- // nullish is optional + nullable, it is easier to seed rather than just optional
149
- feePerByte: zUnsignedIntString.nullish().meta({ description: "Fee per byte" })
150
- }).meta({ description: "Bitcoin-like fee strategy" });
151
- var zBitcoinLikeSendData = zCommonTransactionData.extend({
152
- type: z11.literal(zBitcoinLikeTransactionType.enum.BITCOIN_LIKE_SEND),
153
- feeStrategy: zBitcoinLikeFeeStrategy
154
- }).meta({
155
- description: "Bitcoin-like send data",
156
- id: "BitcoinLikeSendData"
157
- });
158
- var zBitcoinLikeTransactionData = z11.discriminatedUnion("type", [zBitcoinLikeSendData]);
159
- var zBitcoinLikeTransactionResponse = zCommonTransactionResponse.extend({ type: zBitcoinLikeTransactionType }).meta({ description: "Bitcoin-like transaction" });
160
- var zCantonLikeAssetFields = z11.object({
161
- type: z11.literal(NetworkFamily.CANTON_LIKE).meta({ description: "Account type" }),
162
- address: z11.string().nullable().meta({ description: "Account address" })
163
- }).meta({ description: "Canton-like" });
164
- var zCantonLikeLiveData = zCommonLiveData.extend({
165
- type: z11.literal(NetworkFamily.CANTON_LIKE).meta({ description: "Account type" })
166
- }).meta({ description: "Canton-like" });
167
- var zCantonLikeTransactionType = z11.enum(["CANTON_LIKE_SEND", "CANTON_LIKE_RECEIVE"]).meta({ description: "Canton-like transaction type" });
168
- var zCantonLikeSendData = zCommonTransactionData.extend({
169
- type: z11.literal(zCantonLikeTransactionType.enum.CANTON_LIKE_SEND)
170
- }).meta({
171
- description: "Canton-like send data",
172
- id: "CantonLikeSendData"
173
- });
174
- var zCantonLikeTransactionData = z11.discriminatedUnion("type", [zCantonLikeSendData]);
175
- var zCantonLikeTransactionResponse = zCommonTransactionResponse.extend({ type: zCantonLikeTransactionType }).meta({ description: "Canton-like transaction" });
176
- var zCardanoLikeAssetFields = z11.object({
177
- type: z11.literal(NetworkFamily.CARDANO_LIKE).meta({ description: "Account type" }),
178
- address: z11.string().nullable().meta({ description: "Account address" })
179
- }).meta({ description: "Cardano-like" });
180
- var zCardanoLikeStakingData = z11.object({
181
- staked: z11.string().meta({ description: "Staked balance" })
182
- }).nullable().meta({ description: "Cardano-like staking data" });
183
- var zCardanoLikeStakingFields = z11.object({
184
- type: z11.literal(NetworkFamily.CARDANO_LIKE).meta({ description: "Account type" }),
185
- staking: zCardanoLikeStakingData.optional()
186
- });
187
- var zCardanoLikeLiveData = zCommonLiveData.extend(zCardanoLikeStakingFields.shape).meta({ description: "Cardano-like" });
188
- var zCardanoLikeTransactionType = z11.enum([
189
- "CARDANO_LIKE_SEND",
190
- "CARDANO_LIKE_RECEIVE",
191
- "CARDANO_LIKE_STAKING_REGISTER",
192
- "CARDANO_LIKE_STAKING_DEREGISTER",
193
- "CARDANO_LIKE_STAKING_DELEGATE",
194
- "CARDANO_LIKE_STAKING_WITHDRAW"
195
- ]).meta({ description: "Cardano-like transaction type" });
196
- var zCardanoLikeSendData = zCommonTransactionData.extend({
197
- type: z11.literal(zCardanoLikeTransactionType.enum.CARDANO_LIKE_SEND),
198
- feeStrategy: zFeeStrategy.meta({ description: "Cardano-like fee strategy" })
199
- }).meta({
200
- description: "Cardano-like send data",
201
- id: "CardanoSendData"
202
- });
203
- var zCardanoStakingDelegateData = z11.object({
204
- type: z11.literal(zCardanoLikeTransactionType.enum.CARDANO_LIKE_STAKING_DELEGATE),
205
- currency: zCurrencyString.meta({ description: "Transaction currency" }),
206
- // TODO: strict literal or enum?
207
- maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
208
- feeStrategy: zFeeStrategy.meta({ description: "Cardano-like fee strategy" }),
209
- // DELEGATE doesn't have neither amount nor recipient
210
- stakePoolId: z11.string().min(1).max(100).meta({ description: "" })
211
- }).meta({
212
- description: "Cardano-like staking delegate",
213
- id: "CardanoStakingDelegateData"
214
- });
215
- var zCardanoStakingDeregisterData = z11.object({
216
- type: z11.literal(zCardanoLikeTransactionType.enum.CARDANO_LIKE_STAKING_DEREGISTER),
217
- currency: zCurrencyString.meta({ description: "Transaction currency" }),
218
- // TODO: strict literal or enum?
219
- maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
220
- feeStrategy: zFeeStrategy.meta({ description: "Cardano-like fee strategy" }),
221
- // DEREGISTER doesn't have a recipient
222
- amount: zUnsignedIntString.meta({ description: "Amount to deregister" })
223
- }).meta({
224
- description: "Cardano-like staking deregister data",
225
- id: "CardanoStakingDeregisterData"
226
- });
227
- var zCardanoStakingRegisterData = z11.object({
228
- type: z11.literal(zCardanoLikeTransactionType.enum.CARDANO_LIKE_STAKING_REGISTER),
229
- currency: zCurrencyString.meta({ description: "Transaction currency" }),
230
- // TODO: strict literal or enum?
231
- maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
232
- feeStrategy: zFeeStrategy.meta({ description: "Cardano-like fee strategy" }),
233
- // REGISTER doesn't have a recipient
234
- amount: zUnsignedIntString.meta({ description: "Amount to register" })
235
- }).meta({
236
- description: "Cardano-like staking register data",
237
- id: "CardanoStakingRegisterData"
238
- });
239
- var zCardanoStakingWithdrawData = z11.object({
240
- type: z11.literal(zCardanoLikeTransactionType.enum.CARDANO_LIKE_STAKING_WITHDRAW),
241
- currency: zCurrencyString.meta({ description: "Transaction currency" }),
242
- // TODO: strict literal or enum?
243
- maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
244
- feeStrategy: zFeeStrategy.meta({ description: "Cardano-like fee strategy" }),
245
- // WITHDRAW doesn't have a recipient
246
- amount: zUnsignedIntString.meta({ description: "Amount to withdraw" })
247
- }).meta({
248
- description: "Cardano-like staking withdraw data",
249
- id: "CardanoStakingWithdrawData"
250
- });
251
- var zCardanoLikeTransactionData = z11.discriminatedUnion("type", [
252
- zCardanoLikeSendData,
253
- zCardanoStakingDelegateData,
254
- zCardanoStakingDeregisterData,
255
- zCardanoStakingRegisterData,
256
- zCardanoStakingWithdrawData
257
- ]);
258
- var zCardanoLikeTransactionResponse = zCommonTransactionResponse.extend({ type: zCardanoLikeTransactionType }).meta({ description: "Cardano-like transaction" });
259
- var zEthereumLikeAssetFields = z11.object({
260
- type: z11.literal(NetworkFamily.ETHEREUM_LIKE).meta({ description: "Account type" }),
261
- address: z11.string().nullable().meta({ description: "Account address" }),
262
- contractAddress: z11.string().nullable().meta({
263
- description: "Will be deprecated, Use contractAddress at root level instead; Token contract address"
264
- }).optional()
265
- }).meta({ description: "Ethereum-like" });
266
- var zEthereumLikeStakingData = z11.object({
267
- totalStaking: z11.string().meta({ description: "Total staked amount" }),
268
- totalRewards: z11.string().meta({ description: "Total of rewards" }),
269
- availableRewards: z11.string().meta({ description: "Available rewards" }),
270
- networkApy: z11.number().meta({ description: "Network APY" })
271
- }).nullable().meta({ description: "Ethereum-like staking data" });
272
- var zEthereumLikeStakingFields = z11.object({
273
- type: z11.literal(NetworkFamily.ETHEREUM_LIKE).meta({ description: "Account type" }),
274
- staking: zEthereumLikeStakingData.optional()
275
- });
276
- var zEthereumLikeLiveData = zCommonLiveData.extend(zEthereumLikeStakingFields.shape).meta({ description: "Ethereum-like" });
277
- var zEthereumLikeEstimatedFees = z11.object({
278
- type: z11.literal(NetworkFamily.ETHEREUM_LIKE),
279
- baseFees: zIntString,
280
- gasLimit: zIntString,
281
- nonce: z11.string(),
282
- priorityFees: zIntString
283
- }).meta({ description: "Ethereum-like fees" });
284
- var zEthereumLikeTransferTransactionType = z11.enum(["ETHEREUM_LIKE_SEND", "ETHEREUM_LIKE_RECEIVE"]).meta({ description: "Ethereum-like transaction type" });
285
- var zEthereumLikeContractTransactionType = z11.enum(["ETHEREUM_LIKE_EXECUTE_CONTRACT", "ETHEREUM_LIKE_DEPLOY_CONTRACT"]).meta({ description: "Ethereum-like transaction type" });
286
- var zEthereumLikeLegacyFeeStrategy = zFeeStrategyCustom.extend({
287
- gasPrice: zUnsignedIntString.meta({ description: "Gas price" }),
288
- gasLimit: zUnsignedIntString.meta({ description: "Gas limit" })
289
- }).meta({ description: "Ethereum-like legacy fee strategy" });
290
- var zEthereumLikeEip1559FeeStrategy = zFeeStrategyCustom.extend({
291
- maxPriorityFeePerGas: zUnsignedIntString.meta({ description: "Maximum priority fee per gas" }),
292
- maxFeePerGas: zUnsignedIntString.meta({ description: "Maximum fee per gas (base + priority)" }),
293
- gasLimit: zUnsignedIntString.meta({ description: "Gas limit" })
294
- }).meta({ description: "Ethereum-like EIP-1559 fee strategy" });
295
- var zEthereumLikeFeeStrategy = z11.union([zEthereumLikeLegacyFeeStrategy, zEthereumLikeEip1559FeeStrategy]).meta({
296
- description: "Ethereum-like fee strategy",
297
- id: "EthereumLikeFeeStrategy"
298
- });
299
- var zEthereumLikeDeployContractData = zCommonTransactionData.extend({
300
- type: z11.literal(zEthereumLikeContractTransactionType.enum.ETHEREUM_LIKE_DEPLOY_CONTRACT),
301
- // force the recipient to be the zero address
302
- recipient: z11.literal("0x0000000000000000000000000000000000000000"),
303
- contractData: zHexDataString.meta({ description: "Contract data in hexadecimal format" }),
304
- feeStrategy: zEthereumLikeFeeStrategy
305
- }).meta({
306
- description: "Ethereum-like deploy contract data",
307
- id: "EthereumLikeDeployContractData"
308
- });
309
- var zEthereumLikeExecuteContractData = zCommonTransactionData.extend({
310
- type: z11.literal(zEthereumLikeContractTransactionType.enum.ETHEREUM_LIKE_EXECUTE_CONTRACT),
311
- contractData: zHexDataString.meta({ description: "Contract call data in hexadecimal format" }),
312
- feeStrategy: zEthereumLikeFeeStrategy
313
- }).meta({
314
- description: "Ethereum-like execute contract data",
315
- id: "EthereumLikeExecuteContractData"
316
- });
317
- var zEthereumLikeSendData = zCommonTransactionData.extend({
318
- type: z11.literal(zEthereumLikeTransferTransactionType.enum.ETHEREUM_LIKE_SEND),
319
- feeStrategy: zEthereumLikeFeeStrategy
320
- }).meta({
321
- description: "Ethereum-like send data",
322
- id: "EthereumLikeSendData"
323
- });
324
- var zEthereumLikeTransactionData = z11.discriminatedUnion("type", [
325
- zEthereumLikeDeployContractData,
326
- zEthereumLikeExecuteContractData,
327
- zEthereumLikeSendData
328
- ]);
329
- var zEthereumLikeTransferCoinFields = z11.object({
330
- type: zEthereumLikeTransferTransactionType,
331
- gasPrice: z11.string(),
332
- gasLimit: z11.string(),
333
- nonce: z11.string()
334
- });
335
- var zEthereumLikeContractCoinFields = zEthereumLikeTransferCoinFields.extend({
336
- type: zEthereumLikeContractTransactionType,
337
- contractData: z11.string().meta({ description: "Contract deployment or contract execution data" })
338
- });
339
- var zEthereumLikeTransferTransactionResponse = zCommonTransactionResponse.extend(zEthereumLikeTransferCoinFields.shape).meta({ description: "Ethereum-like transfer transaction" });
340
- var zEthereumLikeContractTransactionResponse = zCommonTransactionResponse.extend(zEthereumLikeContractCoinFields.shape).meta({ description: "Ethereum-like contract transaction" });
341
- var zGenericLikeAssetFields = z11.object({ type: z11.literal(NetworkFamily.GENERIC_LIKE).meta({ description: "Account type" }) }).meta({ description: "Generic-like" });
342
- var zGenericLikeLiveData = zCommonLiveData.extend({
343
- type: z11.literal(NetworkFamily.GENERIC_LIKE).meta({ description: "Account type" })
344
- }).meta({ description: "Generic-like" });
345
- var zGenericTransactionType = z11.enum(["GENERIC_TRANSACTION"]).meta({ description: "Generic transaction type" });
346
- var zGenericTransactionData = z11.object({
347
- type: z11.literal(zGenericTransactionType.enum.GENERIC_TRANSACTION),
348
- currency: zCurrencyString.meta({ description: "Transaction currency" }),
349
- rawTx: z11.string().meta({ description: "Raw tx" })
350
- }).meta({
351
- description: "Generic transaction data",
352
- id: "GenericTransactionData"
36
+ // src/__fakes__/faker-utils.ts
37
+ var fakeUniqueName = (length = 20) => faker.string.alphanumeric({ length, casing: "lower" });
38
+ var fakeHexString = (length, casing = "upper") => faker.string.hexadecimal({ prefix: "", casing, length });
39
+ var fakePubKey = () => fakeHexString(130);
40
+ var fakeIntegerId = () => faker.number.int({ min: 1, max: 2e9 });
41
+ var fakeGateId = fakeIntegerId;
42
+ var fakeBase64String = (length) => btoa(faker.string.sample(length));
43
+ var fakePsdSignature = () => fakeBase64String(100);
44
+ var fakeJws = () => times(3, () => faker.string.hexadecimal({ prefix: "", length: 100 })).join(".");
45
+ var fakeHsmObjectId = () => faker.string.uuid();
46
+ var fakeHsmCertificate = () => ({
47
+ codeHash: fakeBase64String(10),
48
+ attestationPub: fakeBase64String(20),
49
+ certificate: fakeBase64String(20),
50
+ signature: fakeBase64String(20)
353
51
  });
354
- var zGenericTransactionResponse = zCommonTransactionResponse.extend({ type: zGenericTransactionType }).meta({ description: "Generic transaction" });
355
- var zPolkadotLikeAssetFields = z11.object({
356
- type: z11.literal(NetworkFamily.POLKADOT_LIKE).meta({ description: "Account type" }),
357
- address: z11.string().nullable().meta({ description: "Account address" })
358
- }).meta({ description: "Polkadot-like" });
359
- var zPolkadotUnbondingAmount = z11.object({
360
- amount: z11.string().meta({ description: "Amount" }),
361
- waiting_time: z11.string().meta({ description: "Waiting time" })
362
- });
363
- var zPolkadotLikeStakingData = z11.object({
364
- info: z11.object({
365
- controllerAddress: z11.string().nullable().meta({ description: "Controller address" }),
366
- rewardsDestination: z11.string().nullable().meta({ description: "Rewards destination" }),
367
- proxies: z11.array(z11.string()).meta({ description: "Proxies" }),
368
- legacyStaking: z11.boolean().meta({ description: "True if account uses legacy staking" }),
369
- isNominator: z11.boolean().meta({ description: "True if is nominator" })
370
- }),
371
- balances: z11.object({
372
- free: z11.string().meta({ description: "Free balance" }),
373
- reserved: z11.string().meta({ description: "Reserved balance" }),
374
- frozen: z11.string().meta({ description: "Frozen balance" }),
375
- bonded: z11.string().meta({ description: "Bonded balance" }),
376
- available: z11.string().meta({ description: "Available balance" }),
377
- unbonding: z11.array(zPolkadotUnbondingAmount).meta({ description: "Unbonding balances" }),
378
- unbonded: z11.array(zPolkadotUnbondingAmount).meta({ description: "Unbonded balances" }),
379
- totalUnbonding: z11.string().meta({ description: "Total unbonding" }),
380
- totalUnbonded: z11.string().meta({ description: "Total unbonded" })
381
- }),
382
- anonymousProxy: z11.object({
383
- address: z11.string().meta({ description: "Address" }),
384
- createdAt: z11.string().meta({ description: "Creation date" }),
385
- isController: z11.boolean().meta({ description: "True if is controller" }),
386
- isMain: z11.boolean().meta({ description: "True if is main" }),
387
- balances: z11.object({
388
- free: z11.string().meta({ description: "Anonymous proxy free balance" }),
389
- reserved: z11.string().meta({ description: "Anonymous proxy reserved balance" }),
390
- frozen: z11.string().meta({ description: "Anonymous proxy frozen balance" }),
391
- bonded: z11.string().meta({ description: "Anonymous proxy bonded balance" }),
392
- available: z11.string().meta({ description: "Anonymous proxy available balance" }),
393
- total: z11.string().meta({ description: "Anonymous proxy total balance" })
394
- }).nullable(),
395
- blockHeight: z11.string().meta({ description: "Anonymous proxy block height" }),
396
- extIndex: z11.string().meta({ description: "Ext index" }),
397
- index: z11.string().meta({ description: "Index" }),
398
- kind: z11.string().meta({ description: "Kind" })
399
- }).nullable().meta({ description: "Anonymous proxy" })
400
- }).nullable().meta({ description: "Polkadot-like staking data" });
401
- var zPolkadotLikeStakingFields = z11.object({
402
- type: z11.literal(NetworkFamily.POLKADOT_LIKE).meta({ description: "Account type" }),
403
- staking: zPolkadotLikeStakingData.optional()
52
+ var fakePsdChallenge = () => ({
53
+ challengeType: "PSD",
54
+ wActions: [fakeBase64String(50), fakeBase64String(50), fakeBase64String(50)],
55
+ handshake: fakeBase64String(100),
56
+ handshakeAttestation: fakeHsmCertificate(),
57
+ partitionId: fakeBase64String(20)
404
58
  });
405
- var zPolkadotLikeLiveData = zCommonLiveData.extend(zPolkadotLikeStakingFields.shape).meta({ description: "Polkadot-like" });
406
- var zPolkadotLikeTransactionType = z11.enum([
407
- "POLKADOT_LIKE_SEND",
408
- "POLKADOT_LIKE_RECEIVE",
409
- "POLKADOT_LIKE_ADDPROXY",
410
- "POLKADOT_LIKE_REMOVEPROXY",
411
- "POLKADOT_LIKE_BOND",
412
- "POLKADOT_LIKE_REBOND",
413
- "POLKADOT_LIKE_BONDEXTRA",
414
- "POLKADOT_LIKE_UNBOND",
415
- "POLKADOT_LIKE_WITHDRAWUNBONDED",
416
- "POLKADOT_LIKE_SETCONTROLLER",
417
- "POLKADOT_LIKE_SETPAYEE",
59
+ var fakeWorkspaceName = () => faker.string.alpha({ length: 8, casing: "lower" });
60
+ var injectSyncId = (obj) => {
61
+ let { syncId } = obj;
62
+ if (syncId === void 0) {
63
+ if (obj.gateType !== null && obj.gateId !== 0) {
64
+ syncId = buildGateSyncId(obj.workspaceName, obj.gateType, obj.gateId);
65
+ } else if (obj.gateType === null && obj.gateId === 0) {
66
+ syncId = faker.string.uuid();
67
+ } else {
68
+ throw new Error(`Invalid gateType and gateId: ${obj.gateType}, ${obj.gateId}`);
69
+ }
70
+ }
71
+ return { ...obj, syncId };
72
+ };
73
+
74
+ // src/__fakes__/models/accounts.ts
75
+ var genAssetFieldsForType = (type) => {
76
+ const hsmXpub = faker.string.hexadecimal({ prefix: "", casing: "upper", length: 66 });
77
+ const hsmChainCode = faker.string.hexadecimal({ prefix: "", casing: "upper", length: 64 });
78
+ switch (type) {
79
+ case "BITCOIN_LIKE":
80
+ return {
81
+ type,
82
+ currency: faker.helpers.arrayElement(["bitcoin", "bitcoin_testnet"]),
83
+ derivationPath: "84'/0'/0'",
84
+ address: null,
85
+ contractAddress: null,
86
+ xpub: faker.string.hexadecimal({ prefix: "", length: 120 }),
87
+ hsmXpub,
88
+ hsmChainCode
89
+ };
90
+ case "ETHEREUM_LIKE":
91
+ return {
92
+ type,
93
+ currency: faker.helpers.arrayElement(["ethereum", "ethereum_goerli"]),
94
+ derivationPath: "44'/60'/0'",
95
+ address: faker.finance.ethereumAddress(),
96
+ contractAddress: null,
97
+ xpub: null,
98
+ hsmXpub,
99
+ hsmChainCode
100
+ };
101
+ case "CANTON_LIKE":
102
+ return {
103
+ type,
104
+ currency: "canton",
105
+ derivationPath: "44'/6767'/0'/0'/0'",
106
+ address: faker.string.alphanumeric({ length: 34, casing: "mixed" }),
107
+ contractAddress: null,
108
+ xpub: null,
109
+ hsmXpub,
110
+ hsmChainCode: null
111
+ };
112
+ case "CARDANO_LIKE":
113
+ return {
114
+ type,
115
+ currency: faker.helpers.arrayElement(["cardano"]),
116
+ derivationPath: "1852'/1815'/0'",
117
+ address: `addr${faker.string.alphanumeric({ length: 100, casing: "lower" })}`,
118
+ contractAddress: null,
119
+ xpub: null,
120
+ hsmXpub,
121
+ hsmChainCode
122
+ };
123
+ case "SOLANA_LIKE":
124
+ return {
125
+ type,
126
+ currency: faker.helpers.arrayElement(["solana"]),
127
+ derivationPath: "44'/501'/0'",
128
+ address: faker.string.alphanumeric({ length: 44, casing: "lower" }),
129
+ contractAddress: null,
130
+ xpub: null,
131
+ hsmXpub,
132
+ hsmChainCode: null
133
+ };
134
+ case "TEZOS_LIKE":
135
+ return {
136
+ type,
137
+ currency: faker.helpers.arrayElement(["tezos"]),
138
+ derivationPath: "44'/1729'/0'",
139
+ address: `tz${faker.string.alphanumeric({ length: 34, casing: "mixed" })}`,
140
+ contractAddress: null,
141
+ xpub: null,
142
+ hsmXpub,
143
+ hsmChainCode
144
+ };
145
+ case "STELLAR_LIKE":
146
+ return {
147
+ type,
148
+ currency: faker.helpers.arrayElement(["stellar"]),
149
+ derivationPath: "44'/148'/0'",
150
+ address: faker.string.alphanumeric({ length: 56, casing: "upper" }),
151
+ contractAddress: null,
152
+ xpub: null,
153
+ hsmXpub,
154
+ hsmChainCode
155
+ };
156
+ case "RIPPLE_LIKE":
157
+ return {
158
+ type,
159
+ currency: faker.helpers.arrayElement(["ripple"]),
160
+ derivationPath: "44'/144'/0'",
161
+ address: faker.string.alphanumeric({ length: 34, casing: "mixed" }),
162
+ contractAddress: null,
163
+ xpub: `xpub${faker.string.alphanumeric({ length: 107, casing: "mixed" })}`,
164
+ hsmXpub,
165
+ hsmChainCode
166
+ };
167
+ case "POLKADOT_LIKE":
168
+ return {
169
+ type,
170
+ currency: faker.helpers.arrayElement(["polkadot"]),
171
+ derivationPath: "44'/354'/0'",
172
+ address: faker.string.alphanumeric({ length: 48, casing: "mixed" }),
173
+ contractAddress: null,
174
+ xpub: null,
175
+ hsmXpub,
176
+ hsmChainCode: null
177
+ };
178
+ case "TRON_LIKE":
179
+ return {
180
+ type,
181
+ currency: faker.helpers.arrayElement(["tron"]),
182
+ derivationPath: "44'/195'/0'",
183
+ address: faker.string.alphanumeric({ length: 34, casing: "mixed" }),
184
+ contractAddress: null,
185
+ xpub: null,
186
+ hsmXpub,
187
+ hsmChainCode
188
+ };
189
+ case "SUI_LIKE":
190
+ return {
191
+ type,
192
+ currency: faker.helpers.arrayElement(["sui"]),
193
+ derivationPath: "44'/784'/0'",
194
+ address: faker.string.alphanumeric({ length: 34, casing: "mixed" }),
195
+ contractAddress: null,
196
+ xpub: null,
197
+ hsmXpub,
198
+ hsmChainCode: null
199
+ };
200
+ case "GENERIC_LIKE":
201
+ return {
202
+ type,
203
+ currency: faker.helpers.arrayElement(["cosmos"]),
204
+ derivationPath: "44'/118'/0'",
205
+ address: faker.string.alphanumeric({ length: 34, casing: "mixed" }),
206
+ contractAddress: null,
207
+ xpub: null,
208
+ hsmXpub,
209
+ hsmChainCode
210
+ };
211
+ case "RAW_SIGNING":
212
+ return {
213
+ type,
214
+ currency: faker.helpers.arrayElement(["ethereum", "bitcoin"]),
215
+ derivationPath: "44'/118'/0'",
216
+ address: null,
217
+ contractAddress: null,
218
+ xpub: null,
219
+ hsmXpub,
220
+ hsmChainCode
221
+ };
222
+ }
223
+ };
224
+ var genGovernanceFieldsForType = (governanceType, {
225
+ accountId,
226
+ policyId,
227
+ assetManagerId
228
+ }) => {
229
+ switch (governanceType) {
230
+ case AccountGovernanceType.CLASSIC:
231
+ case AccountGovernanceType.RAW_SIGNING:
232
+ return {
233
+ governanceType,
234
+ classicGovernanceMixin: {
235
+ id: faker.number.int(),
236
+ policyId: policyId ?? faker.string.uuid(),
237
+ accountId
238
+ },
239
+ tradelinkGovernanceMixin: null
240
+ };
241
+ case AccountGovernanceType.TRADELINK:
242
+ return {
243
+ governanceType,
244
+ classicGovernanceMixin: null,
245
+ tradelinkGovernanceMixin: {
246
+ id: faker.number.int(),
247
+ assetManagerId: assetManagerId ?? faker.string.uuid(),
248
+ accountId,
249
+ exchangeConfigs: [],
250
+ status: ActivationStatus.ACTIVE
251
+ }
252
+ };
253
+ }
254
+ };
255
+ var genAccount = (opts) => {
256
+ const { policyId, assetManagerId, ...rest } = opts ?? {};
257
+ const commonFields = {
258
+ id: faker.string.uuid(),
259
+ workspaceName: fakeWorkspaceName(),
260
+ name: fakeUniqueName(),
261
+ hsmId: fakeHsmObjectId(),
262
+ status: ActivationStatus.ACTIVE,
263
+ index: faker.number.int({ min: 0, max: 10 }),
264
+ gateId: fakeGateId(),
265
+ gateType: GateAccountType.Account,
266
+ lesWalletId: faker.string.uuid(),
267
+ createdAt: faker.date.past(),
268
+ updatedAt: faker.date.past()
269
+ };
270
+ const assetFields = genAssetFieldsForType(
271
+ opts?.type ?? faker.helpers.arrayElement(Object.values(AccountType))
272
+ );
273
+ const governanceFields = genGovernanceFieldsForType(
274
+ opts?.governanceType ?? faker.helpers.arrayElement(Object.values(AccountGovernanceType)),
275
+ { accountId: commonFields.id, policyId, assetManagerId }
276
+ );
277
+ return injectSyncId({
278
+ ...commonFields,
279
+ ...governanceFields,
280
+ ...assetFields,
281
+ ...rest
282
+ });
283
+ };
284
+ var zHexString = z.string().regex(/^[0-9a-fA-F]+$/);
285
+ var zIntString = z.string().nonempty().regex(/^(-?[1-9]\d*|0)$/);
286
+ var zUnsignedIntString = z.string().nonempty().regex(/^([1-9]\d*|0)$/);
287
+ var zCurrencyString = z.string().nonempty().max(40).regex(/^\w+$/).meta({ description: "Will be deprecated soon, use network instead. Currency" });
288
+ var zNetwork = z.string().nonempty().max(40).regex(/^\w+$/).meta({ description: "Network (Same as currency for now)" });
289
+ var zCurrency = z.object({
290
+ network: zNetwork,
291
+ contractAddress: z.string().nonempty().nullable().meta({ description: "Token contract address" })
292
+ });
293
+ z.string().regex(/^[\w-]+$/).nonempty();
294
+ var zHsmObjectId = z.string().regex(/^[\w-]+$/).nonempty();
295
+ z.codec(z.iso.datetime(), z.date(), {
296
+ decode: (isoString) => new Date(isoString),
297
+ // ISO string → Date
298
+ encode: (date) => date.toISOString()
299
+ // Date → ISO string
300
+ });
301
+
302
+ // src/networks/common.ts
303
+ var NetworkFamily = omit(AccountType, ["RAW_SIGNING"]);
304
+ var zHexDataString = z13.codec(z13.string().regex(/^(?:0x|0X)?[a-fA-F0-9]+$/), z13.string(), {
305
+ decode: (hex) => `0x${hex.toLowerCase().replace("0x", "")}`,
306
+ encode: (hex) => hex
307
+ });
308
+ var zCommonLiveData = z13.object({
309
+ id: z13.string().meta({ description: "Account internal unique identifier" }),
310
+ balance: z13.object({
311
+ total: z13.string().meta({ description: "Total balance" }),
312
+ pending: z13.string().meta({ description: "Pending balance" })
313
+ }).meta({ description: "Balance fields" })
314
+ });
315
+ var zCommonTransactionData = z13.object({
316
+ amount: zUnsignedIntString.meta({ description: "Transaction amount" }),
317
+ currency: zCurrencyString.meta({
318
+ description: "Will be deprecated soon, use Account.network. Transaction currency"
319
+ }),
320
+ // TODO: to remove, use account.network instead
321
+ maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
322
+ recipient: z13.string().nonempty().meta({ description: "Transaction recipient" })
323
+ });
324
+ var zFeeStrategyCustom = z13.object({
325
+ type: z13.enum(["SLOW", "NORMAL", "FAST", "CUSTOM"])
326
+ });
327
+ var zFeeStrategy = z13.object({
328
+ type: z13.enum(["SLOW", "NORMAL", "FAST"])
329
+ });
330
+ var zTransactionStatus = z13.enum(["SUCCESSFUL", "FAILED"]);
331
+ var zCommonTransactionResponse = z13.object({
332
+ id: z13.string().meta({ description: "Internal unique identifier" }),
333
+ hash: z13.string().meta({ description: "Transaction hash" }),
334
+ block: z13.object({
335
+ height: z13.string().nullable().meta({ description: "Transaction block height" }),
336
+ time: z13.string().nullable().meta({ description: "Transaction block time" })
337
+ }),
338
+ status: zTransactionStatus.meta({ description: "Transaction status" }),
339
+ confirmations: z13.string().meta({ description: "Block confirmations" }),
340
+ amount: z13.string().meta({ description: "Transaction amount" }),
341
+ fee: z13.string().meta({ description: "Transaction fee" }),
342
+ senders: z13.array(z13.string()).meta({ description: "Senders (can be multiple for UTXOs-based accounts)" }),
343
+ recipients: z13.array(z13.string()).meta({ description: "Recipients (can be multiple for multi-output transactions)" })
344
+ });
345
+ var zBitcoinLikeAssetFields = z13.object({
346
+ type: z13.literal(NetworkFamily.BITCOIN_LIKE).meta({ description: "Account type" }),
347
+ xpub: z13.string().meta({ description: "xpub (extended public key)" })
348
+ }).meta({ description: "Bitcoin-like" });
349
+ var zBitcoinLikeLiveData = zCommonLiveData.extend({
350
+ type: z13.literal(NetworkFamily.BITCOIN_LIKE).meta({ description: "Account type" })
351
+ }).meta({ description: "Bitcoin-like" });
352
+ var zBitcoinLikeTransactionType = z13.enum(["BITCOIN_LIKE_SEND", "BITCOIN_LIKE_RECEIVE"]).meta({ description: "Bitcoin-like transaction type" });
353
+ var zBitcoinLikeFeeStrategy = zFeeStrategyCustom.extend({
354
+ // nullish is optional + nullable, it is easier to seed rather than just optional
355
+ feePerByte: zUnsignedIntString.nullish().meta({ description: "Fee per byte" })
356
+ }).meta({ description: "Bitcoin-like fee strategy" });
357
+ var zBitcoinLikeSendData = zCommonTransactionData.extend({
358
+ type: z13.literal(zBitcoinLikeTransactionType.enum.BITCOIN_LIKE_SEND),
359
+ feeStrategy: zBitcoinLikeFeeStrategy
360
+ }).meta({
361
+ description: "Bitcoin-like send data",
362
+ id: "BitcoinLikeSendData"
363
+ });
364
+ var zBitcoinLikeTransactionData = z13.discriminatedUnion("type", [zBitcoinLikeSendData]);
365
+ var zBitcoinLikeTransactionResponse = z13.discriminatedUnion("type", [
366
+ zCommonTransactionResponse.extend({ type: zBitcoinLikeTransactionType }).meta({ description: "Bitcoin-like transaction" })
367
+ ]);
368
+
369
+ // src/networks/bitcoin/index.ts
370
+ var BITCOIN_SPEC = {
371
+ family: NetworkFamily.BITCOIN_LIKE,
372
+ zAssetFields: zBitcoinLikeAssetFields,
373
+ zLiveData: zBitcoinLikeLiveData,
374
+ zTransactionType: zBitcoinLikeTransactionType,
375
+ zTransactionData: zBitcoinLikeTransactionData,
376
+ zSendTransactionData: zBitcoinLikeSendData,
377
+ zEstimatedFees: z13.never(),
378
+ zTransactionResponse: zBitcoinLikeTransactionResponse,
379
+ zStakingFields: z13.never()};
380
+ var zCantonLikeAssetFields = z13.object({
381
+ type: z13.literal(NetworkFamily.CANTON_LIKE).meta({ description: "Account type" }),
382
+ address: z13.string().nullable().meta({ description: "Account address" })
383
+ }).meta({ description: "Canton-like" });
384
+ var zCantonLikeLiveData = zCommonLiveData.extend({
385
+ type: z13.literal(NetworkFamily.CANTON_LIKE).meta({ description: "Account type" })
386
+ }).meta({ description: "Canton-like" });
387
+ var zCantonLikeTransactionType = z13.enum(["CANTON_LIKE_SEND", "CANTON_LIKE_RECEIVE"]).meta({ description: "Canton-like transaction type" });
388
+ var zCantonLikeSendData = zCommonTransactionData.extend({
389
+ type: z13.literal(zCantonLikeTransactionType.enum.CANTON_LIKE_SEND)
390
+ }).meta({
391
+ description: "Canton-like send data",
392
+ id: "CantonLikeSendData"
393
+ });
394
+ var zCantonLikeTransactionData = z13.discriminatedUnion("type", [zCantonLikeSendData]);
395
+ var zCantonLikeTransactionResponse = z13.discriminatedUnion("type", [
396
+ zCommonTransactionResponse.extend({ type: zCantonLikeTransactionType }).meta({ description: "Canton-like transaction" })
397
+ ]);
398
+
399
+ // src/networks/canton/index.ts
400
+ var CANTON_SPEC = {
401
+ family: NetworkFamily.CANTON_LIKE,
402
+ zAssetFields: zCantonLikeAssetFields,
403
+ zLiveData: zCantonLikeLiveData,
404
+ zTransactionType: zCantonLikeTransactionType,
405
+ zTransactionData: zCantonLikeTransactionData,
406
+ zSendTransactionData: zCantonLikeSendData,
407
+ zEstimatedFees: z13.never(),
408
+ zTransactionResponse: zCantonLikeTransactionResponse,
409
+ zStakingFields: z13.never()};
410
+ var zCardanoLikeAssetFields = z13.object({
411
+ type: z13.literal(NetworkFamily.CARDANO_LIKE).meta({ description: "Account type" }),
412
+ address: z13.string().nullable().meta({ description: "Account address" })
413
+ }).meta({ description: "Cardano-like" });
414
+ var zCardanoLikeStakingData = z13.object({
415
+ staked: z13.string().meta({ description: "Staked balance" })
416
+ }).nullable().meta({ description: "Cardano-like staking data" });
417
+ var zCardanoLikeStakingFields = z13.object({
418
+ type: z13.literal(NetworkFamily.CARDANO_LIKE).meta({ description: "Account type" }),
419
+ staking: zCardanoLikeStakingData.optional()
420
+ });
421
+ var zCardanoLikeLiveData = zCommonLiveData.extend(zCardanoLikeStakingFields.shape).meta({ description: "Cardano-like" });
422
+ var zCardanoLikeTransactionType = z13.enum([
423
+ "CARDANO_LIKE_SEND",
424
+ "CARDANO_LIKE_RECEIVE",
425
+ "CARDANO_LIKE_STAKING_REGISTER",
426
+ "CARDANO_LIKE_STAKING_DEREGISTER",
427
+ "CARDANO_LIKE_STAKING_DELEGATE",
428
+ "CARDANO_LIKE_STAKING_WITHDRAW"
429
+ ]).meta({ description: "Cardano-like transaction type" });
430
+ var zCardanoLikeSendData = zCommonTransactionData.extend({
431
+ type: z13.literal(zCardanoLikeTransactionType.enum.CARDANO_LIKE_SEND),
432
+ feeStrategy: zFeeStrategy.meta({ description: "Cardano-like fee strategy" })
433
+ }).meta({
434
+ description: "Cardano-like send data",
435
+ id: "CardanoSendData"
436
+ });
437
+ var zCardanoStakingDelegateData = z13.object({
438
+ type: z13.literal(zCardanoLikeTransactionType.enum.CARDANO_LIKE_STAKING_DELEGATE),
439
+ currency: zCurrencyString.meta({ description: "Transaction currency" }),
440
+ // TODO: strict literal or enum?
441
+ maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
442
+ feeStrategy: zFeeStrategy.meta({ description: "Cardano-like fee strategy" }),
443
+ // DELEGATE doesn't have neither amount nor recipient
444
+ stakePoolId: z13.string().min(1).max(100).meta({ description: "" })
445
+ }).meta({
446
+ description: "Cardano-like staking delegate",
447
+ id: "CardanoStakingDelegateData"
448
+ });
449
+ var zCardanoStakingDeregisterData = z13.object({
450
+ type: z13.literal(zCardanoLikeTransactionType.enum.CARDANO_LIKE_STAKING_DEREGISTER),
451
+ currency: zCurrencyString.meta({ description: "Transaction currency" }),
452
+ // TODO: strict literal or enum?
453
+ maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
454
+ feeStrategy: zFeeStrategy.meta({ description: "Cardano-like fee strategy" }),
455
+ // DEREGISTER doesn't have a recipient
456
+ amount: zUnsignedIntString.meta({ description: "Amount to deregister" })
457
+ }).meta({
458
+ description: "Cardano-like staking deregister data",
459
+ id: "CardanoStakingDeregisterData"
460
+ });
461
+ var zCardanoStakingRegisterData = z13.object({
462
+ type: z13.literal(zCardanoLikeTransactionType.enum.CARDANO_LIKE_STAKING_REGISTER),
463
+ currency: zCurrencyString.meta({ description: "Transaction currency" }),
464
+ // TODO: strict literal or enum?
465
+ maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
466
+ feeStrategy: zFeeStrategy.meta({ description: "Cardano-like fee strategy" }),
467
+ // REGISTER doesn't have a recipient
468
+ amount: zUnsignedIntString.meta({ description: "Amount to register" })
469
+ }).meta({
470
+ description: "Cardano-like staking register data",
471
+ id: "CardanoStakingRegisterData"
472
+ });
473
+ var zCardanoStakingWithdrawData = z13.object({
474
+ type: z13.literal(zCardanoLikeTransactionType.enum.CARDANO_LIKE_STAKING_WITHDRAW),
475
+ currency: zCurrencyString.meta({ description: "Transaction currency" }),
476
+ // TODO: strict literal or enum?
477
+ maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
478
+ feeStrategy: zFeeStrategy.meta({ description: "Cardano-like fee strategy" }),
479
+ // WITHDRAW doesn't have a recipient
480
+ amount: zUnsignedIntString.meta({ description: "Amount to withdraw" })
481
+ }).meta({
482
+ description: "Cardano-like staking withdraw data",
483
+ id: "CardanoStakingWithdrawData"
484
+ });
485
+ var zCardanoLikeTransactionData = z13.discriminatedUnion("type", [
486
+ zCardanoLikeSendData,
487
+ zCardanoStakingDelegateData,
488
+ zCardanoStakingDeregisterData,
489
+ zCardanoStakingRegisterData,
490
+ zCardanoStakingWithdrawData
491
+ ]);
492
+ var zCardanoLikeTransactionResponse = z13.discriminatedUnion("type", [
493
+ zCommonTransactionResponse.extend({ type: zCardanoLikeTransactionType }).meta({ description: "Cardano-like transaction" })
494
+ ]);
495
+
496
+ // src/networks/cardano/index.ts
497
+ var CARDANO_SPEC = {
498
+ family: NetworkFamily.CARDANO_LIKE,
499
+ zAssetFields: zCardanoLikeAssetFields,
500
+ zLiveData: zCardanoLikeLiveData,
501
+ zTransactionType: zCardanoLikeTransactionType,
502
+ zTransactionData: zCardanoLikeTransactionData,
503
+ zSendTransactionData: zCardanoLikeSendData,
504
+ zEstimatedFees: z13.never(),
505
+ zTransactionResponse: zCardanoLikeTransactionResponse,
506
+ zStakingFields: zCardanoLikeStakingFields};
507
+ var zEthereumLikeAssetFields = z13.object({
508
+ type: z13.literal(NetworkFamily.ETHEREUM_LIKE).meta({ description: "Account type" }),
509
+ address: z13.string().nullable().meta({ description: "Account address" }),
510
+ contractAddress: z13.string().nullable().meta({
511
+ description: "Will be deprecated, Use contractAddress at root level instead; Token contract address"
512
+ }).optional()
513
+ }).meta({ description: "Ethereum-like" });
514
+ var zEthereumLikeStakingData = z13.object({
515
+ totalStaking: z13.string().meta({ description: "Total staked amount" }),
516
+ totalRewards: z13.string().meta({ description: "Total of rewards" }),
517
+ availableRewards: z13.string().meta({ description: "Available rewards" }),
518
+ networkApy: z13.number().meta({ description: "Network APY" })
519
+ }).nullable().meta({ description: "Ethereum-like staking data" });
520
+ var zEthereumLikeStakingFields = z13.object({
521
+ type: z13.literal(NetworkFamily.ETHEREUM_LIKE).meta({ description: "Account type" }),
522
+ staking: zEthereumLikeStakingData.optional()
523
+ });
524
+ var zEthereumLikeLiveData = zCommonLiveData.extend(zEthereumLikeStakingFields.shape).meta({ description: "Ethereum-like" });
525
+ var zEthereumLikeEstimatedFees = z13.object({
526
+ type: z13.literal(NetworkFamily.ETHEREUM_LIKE),
527
+ baseFees: zIntString,
528
+ gasLimit: zIntString,
529
+ nonce: z13.string(),
530
+ priorityFees: zIntString
531
+ }).meta({ description: "Ethereum-like fees" });
532
+ var zEthereumLikeTransferTransactionType = z13.enum(["ETHEREUM_LIKE_SEND", "ETHEREUM_LIKE_RECEIVE"]).meta({ description: "Ethereum-like transaction type" });
533
+ var zEthereumLikeContractTransactionType = z13.enum(["ETHEREUM_LIKE_EXECUTE_CONTRACT", "ETHEREUM_LIKE_DEPLOY_CONTRACT"]).meta({ description: "Ethereum-like transaction type" });
534
+ var zEthereumLikeTransactionType = z13.enum([
535
+ ...zEthereumLikeTransferTransactionType.options,
536
+ ...zEthereumLikeContractTransactionType.options
537
+ ]).meta({
538
+ description: "Ethereum-like transaction type"
539
+ });
540
+ var zEthereumLikeLegacyFeeStrategy = zFeeStrategyCustom.extend({
541
+ gasPrice: zUnsignedIntString.meta({ description: "Gas price" }),
542
+ gasLimit: zUnsignedIntString.meta({ description: "Gas limit" })
543
+ }).meta({ description: "Ethereum-like legacy fee strategy" });
544
+ var zEthereumLikeEip1559FeeStrategy = zFeeStrategyCustom.extend({
545
+ maxPriorityFeePerGas: zUnsignedIntString.meta({ description: "Maximum priority fee per gas" }),
546
+ maxFeePerGas: zUnsignedIntString.meta({ description: "Maximum fee per gas (base + priority)" }),
547
+ gasLimit: zUnsignedIntString.meta({ description: "Gas limit" })
548
+ }).meta({ description: "Ethereum-like EIP-1559 fee strategy" });
549
+ var zEthereumLikeFeeStrategy = z13.union([zEthereumLikeLegacyFeeStrategy, zEthereumLikeEip1559FeeStrategy]).meta({
550
+ description: "Ethereum-like fee strategy",
551
+ id: "EthereumLikeFeeStrategy"
552
+ });
553
+ var zEthereumLikeDeployContractData = zCommonTransactionData.extend({
554
+ type: z13.literal(zEthereumLikeContractTransactionType.enum.ETHEREUM_LIKE_DEPLOY_CONTRACT),
555
+ // force the recipient to be the zero address
556
+ recipient: z13.literal("0x0000000000000000000000000000000000000000"),
557
+ contractData: zHexDataString.meta({ description: "Contract data in hexadecimal format" }),
558
+ feeStrategy: zEthereumLikeFeeStrategy
559
+ }).meta({
560
+ description: "Ethereum-like deploy contract data",
561
+ id: "EthereumLikeDeployContractData"
562
+ });
563
+ var zEthereumLikeExecuteContractData = zCommonTransactionData.extend({
564
+ type: z13.literal(zEthereumLikeContractTransactionType.enum.ETHEREUM_LIKE_EXECUTE_CONTRACT),
565
+ contractData: zHexDataString.meta({ description: "Contract call data in hexadecimal format" }),
566
+ feeStrategy: zEthereumLikeFeeStrategy
567
+ }).meta({
568
+ description: "Ethereum-like execute contract data",
569
+ id: "EthereumLikeExecuteContractData"
570
+ });
571
+ var zEthereumLikeSendData = zCommonTransactionData.extend({
572
+ type: z13.literal(zEthereumLikeTransferTransactionType.enum.ETHEREUM_LIKE_SEND),
573
+ feeStrategy: zEthereumLikeFeeStrategy
574
+ }).meta({
575
+ description: "Ethereum-like send data",
576
+ id: "EthereumLikeSendData"
577
+ });
578
+ var zEthereumLikeTransactionData = z13.discriminatedUnion("type", [
579
+ zEthereumLikeDeployContractData,
580
+ zEthereumLikeExecuteContractData,
581
+ zEthereumLikeSendData
582
+ ]);
583
+ var zEthereumLikeTransferCoinFields = z13.object({
584
+ type: zEthereumLikeTransferTransactionType,
585
+ gasPrice: z13.string(),
586
+ gasLimit: z13.string(),
587
+ nonce: z13.string()
588
+ });
589
+ var zEthereumLikeContractCoinFields = zEthereumLikeTransferCoinFields.extend({
590
+ type: zEthereumLikeContractTransactionType,
591
+ contractData: z13.string().meta({ description: "Contract deployment or contract execution data" })
592
+ });
593
+ var zEthereumLikeTransactionResponse = z13.discriminatedUnion("type", [
594
+ zCommonTransactionResponse.extend(zEthereumLikeTransferCoinFields.shape).meta({ description: "Ethereum-like transfer transaction" }),
595
+ zCommonTransactionResponse.extend(zEthereumLikeContractCoinFields.shape).meta({ description: "Ethereum-like contract transaction" })
596
+ ]).meta({ description: "Ethereum-like contract transaction" });
597
+
598
+ // src/networks/ethereum/index.ts
599
+ var ETHEREUM_SPEC = {
600
+ family: NetworkFamily.ETHEREUM_LIKE,
601
+ zAssetFields: zEthereumLikeAssetFields,
602
+ zLiveData: zEthereumLikeLiveData,
603
+ zTransactionType: zEthereumLikeTransactionType,
604
+ zTransactionData: zEthereumLikeTransactionData,
605
+ zSendTransactionData: zEthereumLikeSendData,
606
+ zEstimatedFees: zEthereumLikeEstimatedFees,
607
+ zTransactionResponse: zEthereumLikeTransactionResponse,
608
+ zStakingFields: zEthereumLikeStakingFields};
609
+ var zGenericAssetFields = z13.object({ type: z13.literal(NetworkFamily.GENERIC_LIKE).meta({ description: "Account type" }) }).meta({ description: "Generic-like" });
610
+ var zGenericLiveData = zCommonLiveData.extend({
611
+ type: z13.literal(NetworkFamily.GENERIC_LIKE).meta({ description: "Account type" })
612
+ }).meta({ description: "Generic-like" });
613
+ var zGenericTransactionType = z13.enum(["GENERIC_TRANSACTION"]).meta({ description: "Generic transaction type" });
614
+ var zGenericTransactionData = z13.discriminatedUnion("type", [
615
+ z13.object({
616
+ type: z13.literal(zGenericTransactionType.enum.GENERIC_TRANSACTION),
617
+ currency: zCurrencyString.meta({ description: "Transaction currency" }),
618
+ rawTx: z13.string().meta({ description: "Raw tx" })
619
+ }).meta({
620
+ description: "Generic transaction data",
621
+ id: "GenericTransactionData"
622
+ })
623
+ ]);
624
+ var zGenericTransactionResponse = z13.discriminatedUnion("type", [
625
+ zCommonTransactionResponse.extend({ type: zGenericTransactionType }).meta({ description: "Generic transaction" })
626
+ ]);
627
+
628
+ // src/networks/generic/index.ts
629
+ var GENERIC_SPEC = {
630
+ family: NetworkFamily.GENERIC_LIKE,
631
+ zAssetFields: zGenericAssetFields,
632
+ zLiveData: zGenericLiveData,
633
+ zTransactionType: zGenericTransactionType,
634
+ zTransactionData: zGenericTransactionData,
635
+ zSendTransactionData: z13.never(),
636
+ zEstimatedFees: z13.never(),
637
+ zTransactionResponse: zGenericTransactionResponse,
638
+ zStakingFields: z13.never()};
639
+ var zPolkadotLikeAssetFields = z13.object({
640
+ type: z13.literal(NetworkFamily.POLKADOT_LIKE).meta({ description: "Account type" }),
641
+ address: z13.string().nullable().meta({ description: "Account address" })
642
+ }).meta({ description: "Polkadot-like" });
643
+ var zPolkadotUnbondingAmount = z13.object({
644
+ amount: z13.string().meta({ description: "Amount" }),
645
+ waiting_time: z13.string().meta({ description: "Waiting time" })
646
+ });
647
+ var zPolkadotLikeStakingData = z13.object({
648
+ info: z13.object({
649
+ controllerAddress: z13.string().nullable().meta({ description: "Controller address" }),
650
+ rewardsDestination: z13.string().nullable().meta({ description: "Rewards destination" }),
651
+ proxies: z13.array(z13.string()).meta({ description: "Proxies" }),
652
+ legacyStaking: z13.boolean().meta({ description: "True if account uses legacy staking" }),
653
+ isNominator: z13.boolean().meta({ description: "True if is nominator" })
654
+ }),
655
+ balances: z13.object({
656
+ free: z13.string().meta({ description: "Free balance" }),
657
+ reserved: z13.string().meta({ description: "Reserved balance" }),
658
+ frozen: z13.string().meta({ description: "Frozen balance" }),
659
+ bonded: z13.string().meta({ description: "Bonded balance" }),
660
+ available: z13.string().meta({ description: "Available balance" }),
661
+ unbonding: z13.array(zPolkadotUnbondingAmount).meta({ description: "Unbonding balances" }),
662
+ unbonded: z13.array(zPolkadotUnbondingAmount).meta({ description: "Unbonded balances" }),
663
+ totalUnbonding: z13.string().meta({ description: "Total unbonding" }),
664
+ totalUnbonded: z13.string().meta({ description: "Total unbonded" })
665
+ }),
666
+ anonymousProxy: z13.object({
667
+ address: z13.string().meta({ description: "Address" }),
668
+ createdAt: z13.string().meta({ description: "Creation date" }),
669
+ isController: z13.boolean().meta({ description: "True if is controller" }),
670
+ isMain: z13.boolean().meta({ description: "True if is main" }),
671
+ balances: z13.object({
672
+ free: z13.string().meta({ description: "Anonymous proxy free balance" }),
673
+ reserved: z13.string().meta({ description: "Anonymous proxy reserved balance" }),
674
+ frozen: z13.string().meta({ description: "Anonymous proxy frozen balance" }),
675
+ bonded: z13.string().meta({ description: "Anonymous proxy bonded balance" }),
676
+ available: z13.string().meta({ description: "Anonymous proxy available balance" }),
677
+ total: z13.string().meta({ description: "Anonymous proxy total balance" })
678
+ }).nullable(),
679
+ blockHeight: z13.string().meta({ description: "Anonymous proxy block height" }),
680
+ extIndex: z13.string().meta({ description: "Ext index" }),
681
+ index: z13.string().meta({ description: "Index" }),
682
+ kind: z13.string().meta({ description: "Kind" })
683
+ }).nullable().meta({ description: "Anonymous proxy" })
684
+ }).nullable().meta({ description: "Polkadot-like staking data" });
685
+ var zPolkadotLikeStakingFields = z13.object({
686
+ type: z13.literal(NetworkFamily.POLKADOT_LIKE).meta({ description: "Account type" }),
687
+ staking: zPolkadotLikeStakingData.optional()
688
+ });
689
+ var zPolkadotLikeLiveData = zCommonLiveData.extend(zPolkadotLikeStakingFields.shape).meta({ description: "Polkadot-like" });
690
+ var zPolkadotLikeTransactionType = z13.enum([
691
+ "POLKADOT_LIKE_SEND",
692
+ "POLKADOT_LIKE_RECEIVE",
693
+ "POLKADOT_LIKE_ADDPROXY",
694
+ "POLKADOT_LIKE_REMOVEPROXY",
695
+ "POLKADOT_LIKE_BOND",
696
+ "POLKADOT_LIKE_REBOND",
697
+ "POLKADOT_LIKE_BONDEXTRA",
698
+ "POLKADOT_LIKE_UNBOND",
699
+ "POLKADOT_LIKE_WITHDRAWUNBONDED",
700
+ "POLKADOT_LIKE_SETCONTROLLER",
701
+ "POLKADOT_LIKE_SETPAYEE",
418
702
  "POLKADOT_LIKE_PROXY",
419
703
  "POLKADOT_LIKE_ANONYMOUSPROXY",
420
704
  "POLKADOT_LIKE_KILLANONYMOUS",
@@ -425,25 +709,25 @@ var zPolkadotLikeTransactionType = z11.enum([
425
709
  "POLKADOT_LIKE_CHILL",
426
710
  "POLKADOT_LIKE_TRANSFERALL"
427
711
  ]).meta({ description: "Polkadot-like transaction type" });
428
- var zPolkadotRewardDestination = z11.enum(["Staked", "Stash"]);
429
- var zPolkadotLikeAddProxyData = z11.object({
430
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_ADDPROXY),
712
+ var zPolkadotRewardDestination = z13.enum(["Staked", "Stash"]);
713
+ var zPolkadotLikeAddProxyData = z13.object({
714
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_ADDPROXY),
431
715
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
432
- kind: z11.literal("Staking").meta({ description: "Proxy kind" }),
433
- proxy: z11.string().meta({ description: "Proxy address" })
716
+ kind: z13.literal("Staking").meta({ description: "Proxy kind" }),
717
+ proxy: z13.string().meta({ description: "Proxy address" })
434
718
  }).meta({
435
719
  description: "Polkadot-like add proxy data",
436
720
  id: "PolkadotLikeAddProxyData"
437
721
  });
438
- var zPolkadotLikeAnonymousProxyData = z11.object({
439
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_ANONYMOUSPROXY),
722
+ var zPolkadotLikeAnonymousProxyData = z13.object({
723
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_ANONYMOUSPROXY),
440
724
  currency: zCurrencyString.meta({ description: "Transaction currency" })
441
725
  }).meta({
442
726
  description: "Polkadot-like anonymous proxy data",
443
727
  id: "PolkadotLikeAnonymousProxyData"
444
728
  });
445
- var zPolkadotLikeBondData = z11.object({
446
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_BOND),
729
+ var zPolkadotLikeBondData = z13.object({
730
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_BOND),
447
731
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
448
732
  payee: zPolkadotRewardDestination,
449
733
  amount: zUnsignedIntString.meta({ description: "Amount" })
@@ -451,75 +735,75 @@ var zPolkadotLikeBondData = z11.object({
451
735
  description: "Polkadot-like bond data",
452
736
  id: "PolkadotLikeBondData"
453
737
  });
454
- var zPolkadotLikeBondExtraData = z11.object({
455
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_BONDEXTRA),
738
+ var zPolkadotLikeBondExtraData = z13.object({
739
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_BONDEXTRA),
456
740
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
457
741
  amount: zUnsignedIntString.meta({ description: "Amount" })
458
742
  }).meta({
459
743
  description: "Polkadot-like bond extra data",
460
744
  id: "PolkadotLikeBondExtraData"
461
745
  });
462
- var zPolkadotLikeChillData = z11.object({
463
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_CHILL),
746
+ var zPolkadotLikeChillData = z13.object({
747
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_CHILL),
464
748
  currency: zCurrencyString.meta({ description: "Transaction currency" })
465
749
  }).meta({
466
750
  description: "Polkadot-like chill data",
467
751
  id: "PolkadotLikeChillData"
468
752
  });
469
- var zPolkadotLikeKillAnonymousData = z11.object({
470
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_KILLANONYMOUS),
753
+ var zPolkadotLikeKillAnonymousData = z13.object({
754
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_KILLANONYMOUS),
471
755
  currency: zCurrencyString.meta({ description: "Transaction currency" })
472
756
  }).meta({
473
757
  description: "Polkadot-like kill anonymous data",
474
758
  id: "PolkadotLikeKillAnonymousData"
475
759
  });
476
- var zPolkadotLikeRebondData = z11.object({
477
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_REBOND),
760
+ var zPolkadotLikeRebondData = z13.object({
761
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_REBOND),
478
762
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
479
763
  amount: zUnsignedIntString.meta({ description: "Amount" })
480
764
  }).meta({
481
765
  description: "Polkadot-like rebond data",
482
766
  id: "PolkadotLikeRebondData"
483
767
  });
484
- var zPolkadotLikeRemoveProxyData = z11.object({
485
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_REMOVEPROXY),
768
+ var zPolkadotLikeRemoveProxyData = z13.object({
769
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_REMOVEPROXY),
486
770
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
487
- kind: z11.literal("Staking"),
488
- proxy: z11.string().meta({ description: "Proxy address" })
771
+ kind: z13.literal("Staking"),
772
+ proxy: z13.string().meta({ description: "Proxy address" })
489
773
  }).meta({
490
774
  description: "Polkadot-like remove proxy data",
491
775
  id: "PolkadotLikeRemoveProxyData"
492
776
  });
493
777
  var zPolkadotLikeSendData = zCommonTransactionData.extend({
494
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_SEND)
778
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_SEND)
495
779
  }).meta({
496
780
  description: "Polkadot-like send data",
497
781
  id: "PolkadotLikeSendData"
498
782
  });
499
- var zPolkadotLikeSetPayeeData = z11.object({
500
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_SETPAYEE),
783
+ var zPolkadotLikeSetPayeeData = z13.object({
784
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_SETPAYEE),
501
785
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
502
786
  payee: zPolkadotRewardDestination
503
787
  }).meta({
504
788
  description: "Polkadot-like set payee data",
505
789
  id: "PolkadotLikeSetPayeeData"
506
790
  });
507
- var zPolkadotLikeUnbondData = z11.object({
508
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_UNBOND),
791
+ var zPolkadotLikeUnbondData = z13.object({
792
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_UNBOND),
509
793
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
510
794
  amount: zUnsignedIntString.meta({ description: "Amount" })
511
795
  }).meta({
512
796
  description: "Polkadot-like unbond data",
513
797
  id: "PolkadotLikeUnbondData"
514
798
  });
515
- var zPolkadotLikeWithdrawUnbondedData = z11.object({
516
- type: z11.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_WITHDRAWUNBONDED),
799
+ var zPolkadotLikeWithdrawUnbondedData = z13.object({
800
+ type: z13.literal(zPolkadotLikeTransactionType.enum.POLKADOT_LIKE_WITHDRAWUNBONDED),
517
801
  currency: zCurrencyString.meta({ description: "Transaction currency" })
518
802
  }).meta({
519
803
  description: "Polkadot-like withdraw unbonded data",
520
804
  id: "PolkadotLikeWithdrawUnbondedData"
521
805
  });
522
- var zPolkadotLikeTransactionData = z11.discriminatedUnion("type", [
806
+ var zPolkadotLikeTransactionData = z13.discriminatedUnion("type", [
523
807
  zPolkadotLikeAddProxyData,
524
808
  zPolkadotLikeAnonymousProxyData,
525
809
  zPolkadotLikeBondData,
@@ -533,78 +817,106 @@ var zPolkadotLikeTransactionData = z11.discriminatedUnion("type", [
533
817
  zPolkadotLikeUnbondData,
534
818
  zPolkadotLikeWithdrawUnbondedData
535
819
  ]);
536
- var zPolkadotLikeTransactionResponse = zCommonTransactionResponse.extend({ type: zPolkadotLikeTransactionType }).meta({ description: "Polkadot-like transaction" });
537
- var zRippleLikeAssetFields = z11.object({
538
- type: z11.literal(NetworkFamily.RIPPLE_LIKE).meta({ description: "Account type" }),
539
- address: z11.string().nullable().meta({ description: "Account address" })
820
+ var zPolkadotLikeTransactionResponse = z13.discriminatedUnion("type", [
821
+ zCommonTransactionResponse.extend({ type: zPolkadotLikeTransactionType }).meta({ description: "Polkadot-like transaction" })
822
+ ]);
823
+
824
+ // src/networks/polkadot/index.ts
825
+ var POLKADOT_SPEC = {
826
+ family: NetworkFamily.POLKADOT_LIKE,
827
+ zAssetFields: zPolkadotLikeAssetFields,
828
+ zLiveData: zPolkadotLikeLiveData,
829
+ zTransactionType: zPolkadotLikeTransactionType,
830
+ zTransactionData: zPolkadotLikeTransactionData,
831
+ zSendTransactionData: zPolkadotLikeSendData,
832
+ zEstimatedFees: z13.never(),
833
+ zTransactionResponse: zPolkadotLikeTransactionResponse,
834
+ zStakingFields: zPolkadotLikeStakingFields};
835
+ var zRippleLikeAssetFields = z13.object({
836
+ type: z13.literal(NetworkFamily.RIPPLE_LIKE).meta({ description: "Account type" }),
837
+ address: z13.string().nullable().meta({ description: "Account address" })
540
838
  }).meta({ description: "Ripple-like" });
541
839
  var zRippleLikeLiveData = zCommonLiveData.extend({
542
- type: z11.literal(NetworkFamily.RIPPLE_LIKE).meta({ description: "Account type" })
840
+ type: z13.literal(NetworkFamily.RIPPLE_LIKE).meta({ description: "Account type" })
543
841
  }).meta({ description: "Ripple-like" });
544
- var zRippleLikeEstimatedFees = z11.object({
545
- type: z11.literal(NetworkFamily.RIPPLE_LIKE),
842
+ var zRippleLikeEstimatedFees = z13.object({
843
+ type: z13.literal(NetworkFamily.RIPPLE_LIKE),
546
844
  fee: zIntString
547
845
  }).meta({ description: "Ripple-like fees" });
548
- var zRippleLikeTransactionType = z11.enum(["RIPPLE_LIKE_SEND", "RIPPLE_LIKE_RECEIVE"]).meta({ description: "Ripple-like transaction type" });
846
+ var zRippleLikeTransactionType = z13.enum(["RIPPLE_LIKE_SEND", "RIPPLE_LIKE_RECEIVE"]).meta({ description: "Ripple-like transaction type" });
549
847
  var zRippleLikeSendData = zCommonTransactionData.extend({
550
- type: z11.literal(zRippleLikeTransactionType.enum.RIPPLE_LIKE_SEND),
848
+ type: z13.literal(zRippleLikeTransactionType.enum.RIPPLE_LIKE_SEND),
551
849
  destinationTag: zIntString.nullable().meta({ description: "Destination tag" }),
552
850
  feeStrategy: zFeeStrategyCustom.meta({ description: "Ripple-like fee strategy" })
553
851
  }).meta({
554
852
  description: "Ripple-like send data",
555
853
  id: "RippleLikeSendData"
556
854
  });
557
- var zRippleLikeTransactionData = z11.discriminatedUnion("type", [zRippleLikeSendData]);
558
- var zRippleLikeTransactionResponse = zCommonTransactionResponse.extend({
559
- type: zRippleLikeTransactionType,
560
- memos: z11.array(z11.string()),
561
- destinationTag: z11.string()
562
- }).meta({ description: "Ripple-like transaction" });
563
- var zSolanaLikeAssetFields = z11.object({
564
- type: z11.literal(NetworkFamily.SOLANA_LIKE).meta({ description: "Account type" }),
565
- address: z11.string().nullable().meta({ description: "Account address" }),
566
- contractAddress: z11.string().meta({
855
+ var zRippleLikeTransactionData = z13.discriminatedUnion("type", [zRippleLikeSendData]);
856
+ var zRippleLikeTransactionResponse = z13.discriminatedUnion("type", [
857
+ zCommonTransactionResponse.extend({
858
+ type: zRippleLikeTransactionType,
859
+ memos: z13.array(z13.string()),
860
+ destinationTag: z13.string()
861
+ }).meta({ description: "Ripple-like transaction" })
862
+ ]);
863
+
864
+ // src/networks/ripple/index.ts
865
+ var RIPPLE_SPEC = {
866
+ family: NetworkFamily.RIPPLE_LIKE,
867
+ zAssetFields: zRippleLikeAssetFields,
868
+ zLiveData: zRippleLikeLiveData,
869
+ zTransactionType: zRippleLikeTransactionType,
870
+ zTransactionData: zRippleLikeTransactionData,
871
+ zSendTransactionData: zRippleLikeSendData,
872
+ zEstimatedFees: zRippleLikeEstimatedFees,
873
+ zTransactionResponse: zRippleLikeTransactionResponse,
874
+ zStakingFields: z13.never()};
875
+ var zSolanaLikeAssetFields = z13.object({
876
+ type: z13.literal(NetworkFamily.SOLANA_LIKE).meta({ description: "Account type" }),
877
+ address: z13.string().nullable().meta({ description: "Account address" }),
878
+ contractAddress: z13.string().meta({
567
879
  description: "Will be deprecated, Use contractAddress at root level instead; Token contract address"
568
880
  }).nullable().optional()
569
881
  }).meta({ description: "Solana-like" });
570
- var zSolanaStakingAccountStatus = z11.enum(["not_sync", "activating", "activated", "deactivating", "deactivated", "deleted"]).meta({ description: "Staking account status" });
571
- var zSolanaLikeStakingData = z11.object({
572
- staked: z11.string().meta({ description: "Staked balance" }),
573
- rewards: z11.object({
574
- total: z11.string().meta({ description: "Total rewards" }),
575
- last7: z11.string().meta({ description: "Rewards on last 7 days" }),
576
- last30: z11.string().meta({ description: "Rewards on last 30 days" })
882
+ var zSolanaStakingAccountStatus = z13.enum(["not_sync", "activating", "activated", "deactivating", "deactivated", "deleted"]).meta({ description: "Staking account status" });
883
+ var zSolanaLikeStakingData = z13.object({
884
+ staked: z13.string().meta({ description: "Staked balance" }),
885
+ rewards: z13.object({
886
+ total: z13.string().meta({ description: "Total rewards" }),
887
+ last7: z13.string().meta({ description: "Rewards on last 7 days" }),
888
+ last30: z13.string().meta({ description: "Rewards on last 30 days" })
577
889
  }),
578
- stakes: z11.array(
579
- z11.object({
580
- uid: z11.string(),
581
- baseAccountUid: z11.string(),
582
- pubKey: z11.string().meta({ description: "Public key" }),
583
- validatorPubKey: z11.string().nullable().meta({ description: "Validator public key" }),
584
- initialAmount: z11.string().meta({ description: "Initial amount" }),
585
- activeAmount: z11.string().meta({ description: "Active amount" }),
586
- inactiveAmount: z11.string().meta({ description: "Inactive amount" }),
587
- totalBalance: z11.string().meta({ description: "Total balance" }),
588
- creationDate: z11.string().meta({ description: "Creation date" }),
589
- activationEpoch: z11.string().nullable().meta({ description: "Activation epoch" }),
590
- activationDate: z11.string().nullable().meta({ description: "Activation date" }),
591
- deactivationEpoch: z11.string().nullable().meta({ description: "Deactivation epoch" }),
592
- deactivationDate: z11.string().nullable().meta({ description: "Deactivation date" }),
890
+ stakes: z13.array(
891
+ z13.object({
892
+ uid: z13.string(),
893
+ baseAccountUid: z13.string(),
894
+ pubKey: z13.string().meta({ description: "Public key" }),
895
+ validatorPubKey: z13.string().nullable().meta({ description: "Validator public key" }),
896
+ initialAmount: z13.string().meta({ description: "Initial amount" }),
897
+ activeAmount: z13.string().meta({ description: "Active amount" }),
898
+ inactiveAmount: z13.string().meta({ description: "Inactive amount" }),
899
+ totalBalance: z13.string().meta({ description: "Total balance" }),
900
+ creationDate: z13.string().meta({ description: "Creation date" }),
901
+ activationEpoch: z13.string().nullable().meta({ description: "Activation epoch" }),
902
+ activationDate: z13.string().nullable().meta({ description: "Activation date" }),
903
+ deactivationEpoch: z13.string().nullable().meta({ description: "Deactivation epoch" }),
904
+ deactivationDate: z13.string().nullable().meta({ description: "Deactivation date" }),
593
905
  status: zSolanaStakingAccountStatus,
594
- rentExemptReserve: z11.string().meta({ description: "Rent exempt reserve" }),
595
- withdrawableAmount: z11.string().meta({ description: "Withdrawable amount" }),
596
- totalRewards: z11.string().meta({ description: "Total rewards" }),
597
- creationTxHash: z11.string().nullable().meta({ description: "Creation transaction hash" }),
598
- actionsTxHashes: z11.array(z11.string()).meta({ description: "Actions transactions hashes" })
906
+ rentExemptReserve: z13.string().meta({ description: "Rent exempt reserve" }),
907
+ withdrawableAmount: z13.string().meta({ description: "Withdrawable amount" }),
908
+ totalRewards: z13.string().meta({ description: "Total rewards" }),
909
+ creationTxHash: z13.string().nullable().meta({ description: "Creation transaction hash" }),
910
+ actionsTxHashes: z13.array(z13.string()).meta({ description: "Actions transactions hashes" })
599
911
  })
600
912
  )
601
913
  }).nullable().meta({ description: "Solana-like staking data" });
602
- var zSolanaLikeStakingFields = z11.object({
603
- type: z11.literal(NetworkFamily.SOLANA_LIKE).meta({ description: "Account type" }),
914
+ var zSolanaLikeStakingFields = z13.object({
915
+ type: z13.literal(NetworkFamily.SOLANA_LIKE).meta({ description: "Account type" }),
604
916
  staking: zSolanaLikeStakingData.optional()
605
917
  });
606
918
  var zSolanaLikeLiveData = zCommonLiveData.extend(zSolanaLikeStakingFields.shape).meta({ description: "Solana-like" });
607
- var zSolanaLikeTransactionType = z11.enum([
919
+ var zSolanaLikeTransactionType = z13.enum([
608
920
  "SOLANA_LIKE_SEND",
609
921
  "SOLANA_LIKE_RECEIVE",
610
922
  "SOLANA_LIKE_CREATE_DELEGATE_STAKE",
@@ -619,43 +931,43 @@ var zSolanaLikeTransactionType = z11.enum([
619
931
  "SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT"
620
932
  ]).meta({ description: "Solana-like transaction type" });
621
933
  var zSolanaLikeCreateDelegateStakeData = zCommonTransactionData.extend({
622
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_CREATE_DELEGATE_STAKE),
623
- recipient: z11.string().meta({ description: "Delegated vote address" }),
934
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_CREATE_DELEGATE_STAKE),
935
+ recipient: z13.string().meta({ description: "Delegated vote address" }),
624
936
  // Re-described
625
937
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
626
938
  }).meta({
627
939
  description: "Solana-like create delegate stake data",
628
940
  id: "SolanaLikeCreateDelegateStakeData"
629
941
  });
630
- var zSolanaLikeDeactivateStakeData = z11.object({
631
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_DEACTIVATE_STAKE),
942
+ var zSolanaLikeDeactivateStakeData = z13.object({
943
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_DEACTIVATE_STAKE),
632
944
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
633
945
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
634
- stakeAccount: z11.string().meta({ description: "Stake account address" }),
946
+ stakeAccount: z13.string().meta({ description: "Stake account address" }),
635
947
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
636
948
  // No recipient, no amount
637
949
  }).meta({
638
950
  description: "Solana-like deactivate stake data",
639
951
  id: "SolanaLikeDeactivateStakeData"
640
952
  });
641
- var zSolanaLikeDelegateStakeData = z11.object({
642
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_DELEGATE_STAKE),
953
+ var zSolanaLikeDelegateStakeData = z13.object({
954
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_DELEGATE_STAKE),
643
955
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
644
956
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
645
- recipient: z11.string().meta({ description: "Delegated vote address" }),
646
- stakeAccount: z11.string().meta({ description: "Stake account address" }),
957
+ recipient: z13.string().meta({ description: "Delegated vote address" }),
958
+ stakeAccount: z13.string().meta({ description: "Stake account address" }),
647
959
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
648
960
  // No amount
649
961
  }).meta({
650
962
  description: "Solana-like delegate stake data",
651
963
  id: "SolanaLikeDelegateStakeData"
652
964
  });
653
- var zSolanaLikeMergeStakeData = z11.object({
654
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_MERGE_STAKE),
965
+ var zSolanaLikeMergeStakeData = z13.object({
966
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_MERGE_STAKE),
655
967
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
656
968
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
657
- mergeSrcAccount: z11.string().meta({ description: "Source stake address" }),
658
- mergeDstAccount: z11.string().meta({ description: "Destination stake address" }),
969
+ mergeSrcAccount: z13.string().meta({ description: "Source stake address" }),
970
+ mergeDstAccount: z13.string().meta({ description: "Destination stake address" }),
659
971
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
660
972
  // No recipient, no amount
661
973
  }).meta({
@@ -663,42 +975,42 @@ var zSolanaLikeMergeStakeData = z11.object({
663
975
  id: "SolanaLikeMergeStakeData"
664
976
  });
665
977
  var zSolanaLikeSendData = zCommonTransactionData.extend({
666
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_SEND),
978
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_SEND),
667
979
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
668
980
  }).meta({
669
981
  description: "Solana-like send data",
670
982
  id: "SolanaLikeSendData"
671
983
  });
672
- var zSolanaLikeSplitDeactivateStakeData = z11.object({
673
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_SPLIT_DEACTIVATE_STAKE),
984
+ var zSolanaLikeSplitDeactivateStakeData = z13.object({
985
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_SPLIT_DEACTIVATE_STAKE),
674
986
  amount: zUnsignedIntString.meta({ description: "Transaction amount" }),
675
987
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
676
988
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
677
- stakeAccount: z11.string().meta({ description: "Stake account address" }),
989
+ stakeAccount: z13.string().meta({ description: "Stake account address" }),
678
990
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
679
991
  // No recipient
680
992
  }).meta({
681
993
  description: "Solana-like split deactivate stake data",
682
994
  id: "SolanaLikeSplitDeactivateStakeData"
683
995
  });
684
- var zSolanaLikeSplitStakeData = z11.object({
685
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_SPLIT_STAKE),
996
+ var zSolanaLikeSplitStakeData = z13.object({
997
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_SPLIT_STAKE),
686
998
  amount: zUnsignedIntString.meta({ description: "Transaction amount" }),
687
999
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
688
1000
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
689
- stakeAccount: z11.string().meta({ description: "Stake account address" }),
1001
+ stakeAccount: z13.string().meta({ description: "Stake account address" }),
690
1002
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
691
1003
  // No recipient
692
1004
  }).meta({
693
1005
  description: "Solana-like split stake data",
694
1006
  id: "SolanaLikeSplitStakeData"
695
1007
  });
696
- var zSolanaLikeWithdrawStakeData = z11.object({
697
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_WITHDRAW_STAKE),
1008
+ var zSolanaLikeWithdrawStakeData = z13.object({
1009
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_WITHDRAW_STAKE),
698
1010
  amount: zUnsignedIntString.meta({ description: "Transaction amount" }),
699
1011
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
700
1012
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
701
- stakeAccount: z11.string().meta({ description: "Stake account address" }),
1013
+ stakeAccount: z13.string().meta({ description: "Stake account address" }),
702
1014
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
703
1015
  // No recipient
704
1016
  }).meta({
@@ -706,21 +1018,21 @@ var zSolanaLikeWithdrawStakeData = z11.object({
706
1018
  id: "SolanaLikeWithdrawStakeData"
707
1019
  });
708
1020
  var zSolanaLikeSendTokenData = zCommonTransactionData.extend({
709
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_SEND_TOKEN),
1021
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_SEND_TOKEN),
710
1022
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
711
1023
  }).meta({
712
1024
  description: "Solana-like send token data",
713
1025
  id: "SolanaLikeSendTokenData"
714
1026
  });
715
1027
  var zSolanaLikeFundAndSendTokenData = zCommonTransactionData.extend({
716
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_FUND_AND_SEND_TOKEN),
1028
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_FUND_AND_SEND_TOKEN),
717
1029
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
718
1030
  }).meta({
719
1031
  description: "Solana-like fund token account and send token data",
720
1032
  id: "SolanaLikeFundAndSendTokenData"
721
1033
  });
722
- var zSolanaLikeCreateTokenAccountData = z11.object({
723
- type: z11.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT),
1034
+ var zSolanaLikeCreateTokenAccountData = z13.object({
1035
+ type: z13.literal(zSolanaLikeTransactionType.enum.SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT),
724
1036
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
725
1037
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
726
1038
  feeStrategy: zFeeStrategy.meta({ description: "Solana-like fee strategy" })
@@ -728,7 +1040,7 @@ var zSolanaLikeCreateTokenAccountData = z11.object({
728
1040
  description: "Solana-like create token account",
729
1041
  id: "SolanaLikeCreateTokenAccountData"
730
1042
  });
731
- var zSolanaLikeTransactionData = z11.discriminatedUnion("type", [
1043
+ var zSolanaLikeTransactionData = z13.discriminatedUnion("type", [
732
1044
  zSolanaLikeCreateDelegateStakeData,
733
1045
  zSolanaLikeDeactivateStakeData,
734
1046
  zSolanaLikeDelegateStakeData,
@@ -741,61 +1053,89 @@ var zSolanaLikeTransactionData = z11.discriminatedUnion("type", [
741
1053
  zSolanaLikeFundAndSendTokenData,
742
1054
  zSolanaLikeCreateTokenAccountData
743
1055
  ]);
744
- var zSolanaLikeTransactionResponse = zCommonTransactionResponse.extend({ type: zSolanaLikeTransactionType }).meta({ description: "Solana-like transaction" });
745
- var zStellarLikeAssetFields = z11.object({
746
- type: z11.literal(NetworkFamily.STELLAR_LIKE).meta({ description: "Account type" }),
747
- address: z11.string().nullable().meta({ description: "Account address" })
1056
+ var zSolanaLikeTransactionResponse = z13.discriminatedUnion("type", [
1057
+ zCommonTransactionResponse.extend({ type: zSolanaLikeTransactionType }).meta({ description: "Solana-like transaction" })
1058
+ ]);
1059
+
1060
+ // src/networks/solana/index.ts
1061
+ var SOLANA_SPEC = {
1062
+ family: NetworkFamily.SOLANA_LIKE,
1063
+ zAssetFields: zSolanaLikeAssetFields,
1064
+ zLiveData: zSolanaLikeLiveData,
1065
+ zTransactionType: zSolanaLikeTransactionType,
1066
+ zTransactionData: zSolanaLikeTransactionData,
1067
+ zSendTransactionData: zSolanaLikeSendData,
1068
+ zEstimatedFees: z13.never(),
1069
+ zTransactionResponse: zSolanaLikeTransactionResponse,
1070
+ zStakingFields: zSolanaLikeStakingFields};
1071
+ var zStellarLikeAssetFields = z13.object({
1072
+ type: z13.literal(NetworkFamily.STELLAR_LIKE).meta({ description: "Account type" }),
1073
+ address: z13.string().nullable().meta({ description: "Account address" })
748
1074
  }).meta({ description: "Stellar-like" });
749
1075
  var zStellarLikeLiveData = zCommonLiveData.extend({
750
- type: z11.literal(NetworkFamily.STELLAR_LIKE).meta({ description: "Account type" })
1076
+ type: z13.literal(NetworkFamily.STELLAR_LIKE).meta({ description: "Account type" })
751
1077
  }).meta({ description: "Stellar-like" });
752
- var zStellarLikeEstimatedFees = z11.object({
753
- type: z11.literal(NetworkFamily.STELLAR_LIKE),
1078
+ var zStellarLikeEstimatedFees = z13.object({
1079
+ type: z13.literal(NetworkFamily.STELLAR_LIKE),
754
1080
  fee: zIntString
755
1081
  }).meta({ description: "Stellar-like fees" });
756
- var zStellarLikeTransactionType = z11.enum(["STELLAR_LIKE_SEND", "STELLAR_LIKE_RECEIVE"]).meta({ description: "Stellar-like transaction type" });
757
- var zStellarMemo = z11.union([
758
- z11.object({
759
- MEMO_TEXT: z11.string().max(28).meta({ description: "Text memo (at most a 28 bytes string)" })
1082
+ var zStellarLikeTransactionType = z13.enum(["STELLAR_LIKE_SEND", "STELLAR_LIKE_RECEIVE"]).meta({ description: "Stellar-like transaction type" });
1083
+ var zStellarMemo = z13.union([
1084
+ z13.object({
1085
+ MEMO_TEXT: z13.string().max(28).meta({ description: "Text memo (at most a 28 bytes string)" })
760
1086
  }).meta({ description: "Text memo" }),
761
- z11.object({ MEMO_ID: zIntString.meta({ description: "Id memo (unsigned 64 bits integer)" }) }).meta({ description: "Id memo" }),
762
- z11.object({
763
- MEMO_HASH: z11.string().max(128).regex(/^[a-fA-F0-9]+$/).meta({ description: "Transaction hash memo (64 bytes hexadecimal string)" })
1087
+ z13.object({ MEMO_ID: zIntString.meta({ description: "Id memo (unsigned 64 bits integer)" }) }).meta({ description: "Id memo" }),
1088
+ z13.object({
1089
+ MEMO_HASH: z13.string().max(128).regex(/^[a-fA-F0-9]+$/).meta({ description: "Transaction hash memo (64 bytes hexadecimal string)" })
764
1090
  }).meta({ description: "Hash memo" }),
765
- z11.object({
766
- MEMO_RETURN: z11.string().max(128).regex(/^[a-fA-F0-9]+$/).meta({
1091
+ z13.object({
1092
+ MEMO_RETURN: z13.string().max(128).regex(/^[a-fA-F0-9]+$/).meta({
767
1093
  description: "A 64 bytes hexadecimal string intended to be interpreted as the hash of the transaction the sender is refunding."
768
1094
  })
769
1095
  }).meta({ description: "Return memo" })
770
1096
  ]);
771
1097
  var zStellarLikeSendData = zCommonTransactionData.extend({
772
- type: z11.literal(zStellarLikeTransactionType.enum.STELLAR_LIKE_SEND),
1098
+ type: z13.literal(zStellarLikeTransactionType.enum.STELLAR_LIKE_SEND),
773
1099
  memo: zStellarMemo.nullable().meta({ description: "Stellar memo" }),
774
1100
  feeStrategy: zFeeStrategy.meta({ description: "Stellar-like fee strategy" })
775
1101
  }).meta({
776
1102
  description: "Stellar-like send data",
777
1103
  id: "StellarLikeSendData"
778
1104
  });
779
- var zStellarLikeTransactionData = z11.discriminatedUnion("type", [zStellarLikeSendData]);
780
- var zStellarLikeTransactionResponse = zCommonTransactionResponse.extend({ type: zStellarLikeTransactionType }).meta({ description: "Stellar-like transaction" });
781
- var zSuiLikeAssetFields = z11.object({
782
- type: z11.literal(NetworkFamily.SUI_LIKE).meta({ description: "Account type" }),
783
- address: z11.string().nullable().meta({ description: "Account address" })
1105
+ var zStellarLikeTransactionData = z13.discriminatedUnion("type", [zStellarLikeSendData]);
1106
+ var zStellarLikeTransactionResponse = z13.discriminatedUnion("type", [
1107
+ zCommonTransactionResponse.extend({ type: zStellarLikeTransactionType }).meta({ description: "Stellar-like transaction" })
1108
+ ]);
1109
+
1110
+ // src/networks/stellar/index.ts
1111
+ var STELLAR_SPEC = {
1112
+ family: NetworkFamily.STELLAR_LIKE,
1113
+ zAssetFields: zStellarLikeAssetFields,
1114
+ zLiveData: zStellarLikeLiveData,
1115
+ zTransactionType: zStellarLikeTransactionType,
1116
+ zTransactionData: zStellarLikeTransactionData,
1117
+ zSendTransactionData: zStellarLikeSendData,
1118
+ zEstimatedFees: zStellarLikeEstimatedFees,
1119
+ zTransactionResponse: zStellarLikeTransactionResponse,
1120
+ zStakingFields: z13.never()};
1121
+ var zSuiLikeAssetFields = z13.object({
1122
+ type: z13.literal(NetworkFamily.SUI_LIKE).meta({ description: "Account type" }),
1123
+ address: z13.string().nullable().meta({ description: "Account address" })
784
1124
  }).meta({ description: "Sui-like" });
785
- var zSuiLikeStakingData = z11.object({
786
- totalStaked: z11.string().meta({ description: "Total staked amount" }),
787
- totalRewards: z11.string().meta({ description: "Total of rewards" })
1125
+ var zSuiLikeStakingData = z13.object({
1126
+ totalStaked: z13.string().meta({ description: "Total staked amount" }),
1127
+ totalRewards: z13.string().meta({ description: "Total of rewards" })
788
1128
  }).nullable().meta({ description: "Sui-like staking data" });
789
- var zSuiLikeStakingFields = z11.object({
790
- type: z11.literal(NetworkFamily.SUI_LIKE).meta({ description: "Account type" }),
1129
+ var zSuiLikeStakingFields = z13.object({
1130
+ type: z13.literal(NetworkFamily.SUI_LIKE).meta({ description: "Account type" }),
791
1131
  staking: zSuiLikeStakingData.optional()
792
1132
  });
793
1133
  var zSuiLikeLiveData = zCommonLiveData.extend(zSuiLikeStakingFields.shape).meta({ description: "Sui-like" });
794
- var zSuiLikeEstimatedFees = z11.object({
795
- type: z11.literal(NetworkFamily.SUI_LIKE),
1134
+ var zSuiLikeEstimatedFees = z13.object({
1135
+ type: z13.literal(NetworkFamily.SUI_LIKE),
796
1136
  fee: zIntString
797
1137
  }).meta({ description: "Sui-like fees" });
798
- var zSuiLikeTransactionType = z11.enum([
1138
+ var zSuiLikeTransactionType = z13.enum([
799
1139
  "SUI_LIKE_SEND",
800
1140
  "SUI_LIKE_RECEIVE",
801
1141
  "SUI_LIKE_SEND_TOKEN",
@@ -804,21 +1144,21 @@ var zSuiLikeTransactionType = z11.enum([
804
1144
  "SUI_LIKE_UNSTAKE"
805
1145
  ]).meta({ description: "Sui-like transaction type" });
806
1146
  var zSuiLikeSendData = zCommonTransactionData.extend({
807
- type: z11.literal(zSuiLikeTransactionType.enum.SUI_LIKE_SEND),
1147
+ type: z13.literal(zSuiLikeTransactionType.enum.SUI_LIKE_SEND),
808
1148
  feeStrategy: zFeeStrategy.meta({ description: "Sui-like fee strategy" })
809
1149
  }).meta({
810
1150
  description: "Sui-like send data",
811
1151
  id: "SuiLikeSendData"
812
1152
  });
813
1153
  var zSuiLikeTransferTokenData = zCommonTransactionData.extend({
814
- type: z11.literal(zSuiLikeTransactionType.enum.SUI_LIKE_SEND_TOKEN),
1154
+ type: z13.literal(zSuiLikeTransactionType.enum.SUI_LIKE_SEND_TOKEN),
815
1155
  feeStrategy: zFeeStrategy.meta({ description: "Sui-like fee strategy" })
816
1156
  }).meta({
817
1157
  description: "Sui-like transfer token data",
818
1158
  id: "SuiLikeTransferTokenData"
819
1159
  });
820
- var zSuiLikeStakeData = z11.object({
821
- type: z11.literal(zSuiLikeTransactionType.enum.SUI_LIKE_STAKE),
1160
+ var zSuiLikeStakeData = z13.object({
1161
+ type: z13.literal(zSuiLikeTransactionType.enum.SUI_LIKE_STAKE),
822
1162
  feeStrategy: zFeeStrategy.meta({ description: "Sui-like fee strategy" }),
823
1163
  amount: zUnsignedIntString.meta({ description: "Transaction amount" }),
824
1164
  currency: zCurrencyString.meta({
@@ -826,55 +1166,69 @@ var zSuiLikeStakeData = z11.object({
826
1166
  }),
827
1167
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
828
1168
  // DELEGATE does not have recipient, but has validator instead
829
- validator: z11.string().nonempty().meta({ description: "Validator address" })
1169
+ validator: z13.string().nonempty().meta({ description: "Validator address" })
830
1170
  }).meta({
831
1171
  description: "Sui-like stake data",
832
1172
  id: "SuiLikeStakeData"
833
1173
  });
834
- var zSuiLikeUnstakeData = z11.object({
835
- type: z11.literal(zSuiLikeTransactionType.enum.SUI_LIKE_UNSTAKE),
1174
+ var zSuiLikeUnstakeData = z13.object({
1175
+ type: z13.literal(zSuiLikeTransactionType.enum.SUI_LIKE_UNSTAKE),
836
1176
  feeStrategy: zFeeStrategy.meta({ description: "Sui-like fee strategy" }),
837
1177
  currency: zCurrencyString.meta({
838
1178
  description: "Will be deprecated soon, use Account.network. Transaction currency"
839
1179
  }),
840
1180
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
841
- stakedSuiId: z11.string().nonempty().meta({ description: "Staked object to (partially?) unstake" }),
1181
+ stakedSuiId: z13.string().nonempty().meta({ description: "Staked object to (partially?) unstake" }),
842
1182
  amount: zUnsignedIntString.meta({ description: "Amount to unstake from the position" }),
843
- useAllAmount: z11.boolean().meta({
1183
+ useAllAmount: z13.boolean().meta({
844
1184
  description: "Whether to unstake the full amount (triggers different sets of transaction commands)"
845
1185
  })
846
1186
  }).meta({
847
1187
  description: "Sui-like unstake data",
848
1188
  id: "SuiLikeUnstakeData"
849
1189
  });
850
- var zSuiLikeTransactionData = z11.discriminatedUnion("type", [
1190
+ var zSuiLikeTransactionData = z13.discriminatedUnion("type", [
851
1191
  zSuiLikeSendData,
852
1192
  zSuiLikeTransferTokenData,
853
1193
  zSuiLikeStakeData,
854
1194
  zSuiLikeUnstakeData
855
1195
  ]);
856
- var zSuiLikeTransactionResponse = zCommonTransactionResponse.extend({ type: zSuiLikeTransactionType }).meta({ description: "Sui-like transaction" });
857
- var zTezosLikeAssetFields = z11.object({
858
- type: z11.literal(NetworkFamily.TEZOS_LIKE).meta({ description: "Account type" }),
859
- address: z11.string().nullable().meta({ description: "Account address" })
1196
+ var zSuiLikeTransactionResponse = z13.discriminatedUnion("type", [
1197
+ zCommonTransactionResponse.extend({ type: zSuiLikeTransactionType }).meta({ description: "Sui-like transaction" })
1198
+ ]);
1199
+
1200
+ // src/networks/sui/index.ts
1201
+ var SUI_SPEC = {
1202
+ family: NetworkFamily.SUI_LIKE,
1203
+ zAssetFields: zSuiLikeAssetFields,
1204
+ zLiveData: zSuiLikeLiveData,
1205
+ zTransactionType: zSuiLikeTransactionType,
1206
+ zTransactionData: zSuiLikeTransactionData,
1207
+ zSendTransactionData: zSuiLikeSendData,
1208
+ zEstimatedFees: zSuiLikeEstimatedFees,
1209
+ zTransactionResponse: zSuiLikeTransactionResponse,
1210
+ zStakingFields: zSuiLikeStakingFields};
1211
+ var zTezosLikeAssetFields = z13.object({
1212
+ type: z13.literal(NetworkFamily.TEZOS_LIKE).meta({ description: "Account type" }),
1213
+ address: z13.string().nullable().meta({ description: "Account address" })
860
1214
  }).meta({ description: "Tezos-like" });
861
- var zTezosLikeStakingData = z11.object({
862
- delegations: z11.array(
863
- z11.object({
864
- address: z11.string()
1215
+ var zTezosLikeStakingData = z13.object({
1216
+ delegations: z13.array(
1217
+ z13.object({
1218
+ address: z13.string()
865
1219
  })
866
1220
  )
867
1221
  }).nullable().meta({ description: "Tezos-like staking data" });
868
- var zTezosLikeStakingFields = z11.object({
869
- type: z11.literal(NetworkFamily.TEZOS_LIKE).meta({ description: "Account type" }),
1222
+ var zTezosLikeStakingFields = z13.object({
1223
+ type: z13.literal(NetworkFamily.TEZOS_LIKE).meta({ description: "Account type" }),
870
1224
  staking: zTezosLikeStakingData.optional()
871
1225
  });
872
1226
  var zTezosLikeLiveData = zCommonLiveData.extend(zTezosLikeStakingFields.shape).meta({ description: "Tezos-like" });
873
- var zTezosLikeEstimatedFees = z11.object({
874
- type: z11.literal(NetworkFamily.TEZOS_LIKE),
1227
+ var zTezosLikeEstimatedFees = z13.object({
1228
+ type: z13.literal(NetworkFamily.TEZOS_LIKE),
875
1229
  fee: zIntString
876
1230
  }).describe("Tezos-like fees");
877
- var zTezosLikeTransactionType = z11.enum([
1231
+ var zTezosLikeTransactionType = z13.enum([
878
1232
  "TEZOS_LIKE_SEND",
879
1233
  "TEZOS_LIKE_RECEIVE",
880
1234
  "TEZOS_LIKE_REVEAL",
@@ -883,259 +1237,378 @@ var zTezosLikeTransactionType = z11.enum([
883
1237
  ]).meta({ description: "Tezos-like transaction type" });
884
1238
  var zTezosLikeFeeStrategy = zFeeStrategyCustom.meta({ description: "Tezos-like fee strategy" });
885
1239
  var zTezosLikeSendData = zCommonTransactionData.extend({
886
- type: z11.literal(zTezosLikeTransactionType.enum.TEZOS_LIKE_SEND),
1240
+ type: z13.literal(zTezosLikeTransactionType.enum.TEZOS_LIKE_SEND),
887
1241
  feeStrategy: zTezosLikeFeeStrategy
888
1242
  }).meta({
889
1243
  description: "Tezos-like send data",
890
1244
  id: "TezosLikeSendData"
891
1245
  });
892
- var zTezosLikeDelegateData = z11.object({
893
- type: z11.literal(zTezosLikeTransactionType.enum.TEZOS_LIKE_DELEGATE),
1246
+ var zTezosLikeDelegateData = z13.object({
1247
+ type: z13.literal(zTezosLikeTransactionType.enum.TEZOS_LIKE_DELEGATE),
894
1248
  amount: zUnsignedIntString.optional().meta({ description: "Deprecated: DO NOT USE!" }),
895
1249
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
896
1250
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
897
- recipient: z11.string().nonempty().meta({ description: "Transaction recipient" }),
1251
+ recipient: z13.string().nonempty().meta({ description: "Transaction recipient" }),
898
1252
  feeStrategy: zTezosLikeFeeStrategy
899
1253
  }).meta({
900
1254
  description: "Tezos-like delegate data",
901
1255
  id: "TezosLikeDelegateData"
902
1256
  });
903
- var zTezosLikeUndelegateData = z11.object({
904
- type: z11.literal(zTezosLikeTransactionType.enum.TEZOS_LIKE_UNDELEGATE),
1257
+ var zTezosLikeUndelegateData = z13.object({
1258
+ type: z13.literal(zTezosLikeTransactionType.enum.TEZOS_LIKE_UNDELEGATE),
905
1259
  amount: zUnsignedIntString.optional().meta({ description: "Deprecated: DO NOT USE!" }),
906
1260
  currency: zCurrencyString.meta({ description: "Transaction currency" }),
907
1261
  maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
908
- recipient: z11.string().nonempty().optional().meta({ description: "Deprecated: DO NOT USE!" }),
1262
+ recipient: z13.string().nonempty().optional().meta({ description: "Deprecated: DO NOT USE!" }),
909
1263
  feeStrategy: zTezosLikeFeeStrategy
910
1264
  }).meta({
911
1265
  description: "Tezos-like undelegate data",
912
1266
  id: "TezosLikeUndelegateData"
913
1267
  });
914
- var zTezosLikeTransactionData = z11.discriminatedUnion("type", [
1268
+ var zTezosLikeTransactionData = z13.discriminatedUnion("type", [
915
1269
  zTezosLikeSendData,
916
1270
  zTezosLikeDelegateData,
917
1271
  zTezosLikeUndelegateData
918
1272
  ]);
919
- var zTezosLikeTransactionResponse = zCommonTransactionResponse.extend({ type: zTezosLikeTransactionType }).meta({ description: "Tezos-like transaction" });
920
- var zTronLikeAssetFields = z11.object({
921
- type: z11.literal(NetworkFamily.TRON_LIKE).meta({ description: "Account type" }),
922
- address: z11.string().nullable().meta({ description: "Account address" }),
923
- contractAddress: z11.string().nullable().meta({
1273
+ var zTezosLikeTransactionResponse = z13.discriminatedUnion("type", [
1274
+ zCommonTransactionResponse.extend({ type: zTezosLikeTransactionType }).meta({ description: "Tezos-like transaction" })
1275
+ ]);
1276
+
1277
+ // src/networks/tezos/index.ts
1278
+ var TEZOS_SPEC = {
1279
+ family: NetworkFamily.TEZOS_LIKE,
1280
+ zAssetFields: zTezosLikeAssetFields,
1281
+ zLiveData: zTezosLikeLiveData,
1282
+ zTransactionType: zTezosLikeTransactionType,
1283
+ zTransactionData: zTezosLikeTransactionData,
1284
+ zSendTransactionData: zTezosLikeSendData,
1285
+ zEstimatedFees: zTezosLikeEstimatedFees,
1286
+ zTransactionResponse: zTezosLikeTransactionResponse,
1287
+ zStakingFields: zTezosLikeStakingFields};
1288
+ var zTronLikeAssetFields = z13.object({
1289
+ type: z13.literal(NetworkFamily.TRON_LIKE).meta({ description: "Account type" }),
1290
+ address: z13.string().nullable().meta({ description: "Account address" }),
1291
+ contractAddress: z13.string().nullable().meta({
924
1292
  description: "Will be deprecated, Use contractAddress at root level instead; Token contract address"
925
1293
  }).optional()
926
1294
  }).meta({ description: "Tron-like" });
927
1295
  var zTronLikeLiveData = zCommonLiveData.extend({
928
- type: z11.literal(NetworkFamily.TRON_LIKE).meta({ description: "Account type" })
1296
+ type: z13.literal(NetworkFamily.TRON_LIKE).meta({ description: "Account type" })
929
1297
  }).meta({ description: "Tron-like" });
930
- var zTronLikeEstimatedFees = z11.object({
931
- type: z11.literal(NetworkFamily.TRON_LIKE),
1298
+ var zTronLikeEstimatedFees = z13.object({
1299
+ type: z13.literal(NetworkFamily.TRON_LIKE),
932
1300
  fee: zIntString
933
1301
  }).meta({ description: "Tron-like fees" });
934
- var zTronLikeTransactionType = z11.enum(["TRON_LIKE_SEND", "TRON_LIKE_RECEIVE", "TRON_LIKE_SEND_TOKEN", "TRON_LIKE_RECEIVE_TOKEN"]).meta({ description: "Tron-like transaction type" });
1302
+ var zTronLikeTransactionType = z13.enum(["TRON_LIKE_SEND", "TRON_LIKE_RECEIVE", "TRON_LIKE_SEND_TOKEN", "TRON_LIKE_RECEIVE_TOKEN"]).meta({ description: "Tron-like transaction type" });
935
1303
  var zTronLikeSendData = zCommonTransactionData.extend({
936
- type: z11.literal(zTronLikeTransactionType.enum.TRON_LIKE_SEND),
1304
+ type: z13.literal(zTronLikeTransactionType.enum.TRON_LIKE_SEND),
937
1305
  feeStrategy: zFeeStrategy.meta({ description: "Tron-like fee strategy" })
938
1306
  }).meta({
939
1307
  description: "Tron-like send data",
940
1308
  id: "TronLikeSendData"
941
1309
  });
942
1310
  var zTronLikeSendTokenData = zCommonTransactionData.extend({
943
- type: z11.literal(zTronLikeTransactionType.enum.TRON_LIKE_SEND_TOKEN),
1311
+ type: z13.literal(zTronLikeTransactionType.enum.TRON_LIKE_SEND_TOKEN),
944
1312
  feeStrategy: zFeeStrategy.meta({ description: "Tron-like fee strategy" })
945
1313
  }).meta({
946
1314
  description: "Tron-like send token data",
947
1315
  id: "TronLikeSendTokenData"
948
1316
  });
949
- var zTronLikeTransactionData = z11.discriminatedUnion("type", [
1317
+ var zTronLikeTransactionData = z13.discriminatedUnion("type", [
950
1318
  zTronLikeSendData,
951
1319
  zTronLikeSendTokenData
952
1320
  ]);
1321
+ var zTronLikeTransactionResponse = z13.discriminatedUnion("type", [
1322
+ zCommonTransactionResponse.extend({ type: zTronLikeTransactionType }).meta({ description: "Tron-like transaction" })
1323
+ ]);
1324
+
1325
+ // src/networks/tron/index.ts
1326
+ var TRON_SPEC = {
1327
+ family: NetworkFamily.TRON_LIKE,
1328
+ zAssetFields: zTronLikeAssetFields,
1329
+ zLiveData: zTronLikeLiveData,
1330
+ zTransactionType: zTronLikeTransactionType,
1331
+ zTransactionData: zTronLikeTransactionData,
1332
+ zSendTransactionData: z13.never(),
1333
+ zEstimatedFees: zTronLikeEstimatedFees,
1334
+ zTransactionResponse: zTronLikeTransactionResponse,
1335
+ zStakingFields: z13.never()};
953
1336
 
954
1337
  // src/networks/index.ts
955
- var zNetworkAssetFields = z11.discriminatedUnion("type", [
956
- zBitcoinLikeAssetFields,
957
- zCantonLikeAssetFields,
958
- zCardanoLikeAssetFields,
959
- zEthereumLikeAssetFields,
960
- zGenericLikeAssetFields,
961
- zPolkadotLikeAssetFields,
962
- zRippleLikeAssetFields,
963
- zSolanaLikeAssetFields,
964
- zStellarLikeAssetFields,
965
- zTezosLikeAssetFields,
966
- zSuiLikeAssetFields,
967
- zTronLikeAssetFields
1338
+ var zNetworkAssetFields = z13.discriminatedUnion("type", [
1339
+ BITCOIN_SPEC.zAssetFields,
1340
+ CANTON_SPEC.zAssetFields,
1341
+ CARDANO_SPEC.zAssetFields,
1342
+ ETHEREUM_SPEC.zAssetFields,
1343
+ GENERIC_SPEC.zAssetFields,
1344
+ POLKADOT_SPEC.zAssetFields,
1345
+ RIPPLE_SPEC.zAssetFields,
1346
+ SOLANA_SPEC.zAssetFields,
1347
+ STELLAR_SPEC.zAssetFields,
1348
+ SUI_SPEC.zAssetFields,
1349
+ TEZOS_SPEC.zAssetFields,
1350
+ TRON_SPEC.zAssetFields
968
1351
  ]).meta({ description: "Network asset fields" });
969
- var zAccountLiveData = z11.discriminatedUnion("type", [
970
- zBitcoinLikeLiveData,
971
- zCantonLikeLiveData,
972
- zCardanoLikeLiveData,
973
- zEthereumLikeLiveData,
974
- zGenericLikeLiveData,
975
- zPolkadotLikeLiveData,
976
- zRippleLikeLiveData,
977
- zSolanaLikeLiveData,
978
- zStellarLikeLiveData,
979
- zSuiLikeLiveData,
980
- zTezosLikeLiveData,
981
- zTronLikeLiveData
1352
+ var zAccountLiveData = z13.discriminatedUnion("type", [
1353
+ BITCOIN_SPEC.zLiveData,
1354
+ CANTON_SPEC.zLiveData,
1355
+ CARDANO_SPEC.zLiveData,
1356
+ ETHEREUM_SPEC.zLiveData,
1357
+ GENERIC_SPEC.zLiveData,
1358
+ POLKADOT_SPEC.zLiveData,
1359
+ RIPPLE_SPEC.zLiveData,
1360
+ SOLANA_SPEC.zLiveData,
1361
+ STELLAR_SPEC.zLiveData,
1362
+ SUI_SPEC.zLiveData,
1363
+ TEZOS_SPEC.zLiveData,
1364
+ TRON_SPEC.zLiveData
982
1365
  ]);
983
- z11.discriminatedUnion("type", [
984
- zCardanoLikeStakingFields,
985
- zEthereumLikeStakingFields,
986
- zPolkadotLikeStakingFields,
987
- zSolanaLikeStakingFields,
988
- zSuiLikeStakingFields,
989
- zTezosLikeStakingFields
1366
+ z13.discriminatedUnion("type", [
1367
+ CARDANO_SPEC.zStakingFields,
1368
+ ETHEREUM_SPEC.zStakingFields,
1369
+ POLKADOT_SPEC.zStakingFields,
1370
+ SOLANA_SPEC.zStakingFields,
1371
+ SUI_SPEC.zStakingFields,
1372
+ TEZOS_SPEC.zStakingFields
990
1373
  ]);
991
- z11.discriminatedUnion("type", [
992
- zEthereumLikeEstimatedFees,
993
- zRippleLikeEstimatedFees,
994
- zStellarLikeEstimatedFees,
995
- zSuiLikeEstimatedFees,
996
- zTezosLikeEstimatedFees,
997
- zTronLikeEstimatedFees
1374
+ z13.discriminatedUnion("type", [
1375
+ ETHEREUM_SPEC.zEstimatedFees,
1376
+ RIPPLE_SPEC.zEstimatedFees,
1377
+ STELLAR_SPEC.zEstimatedFees,
1378
+ SUI_SPEC.zEstimatedFees,
1379
+ TEZOS_SPEC.zEstimatedFees,
1380
+ TRON_SPEC.zEstimatedFees
998
1381
  ]);
999
- z11.union([
1000
- zBitcoinLikeTransactionType,
1001
- zCantonLikeTransactionType,
1002
- zCardanoLikeTransactionType,
1003
- zEthereumLikeTransferTransactionType,
1004
- zEthereumLikeContractTransactionType,
1005
- zGenericTransactionType,
1006
- zPolkadotLikeTransactionType,
1007
- zRippleLikeTransactionType,
1008
- zSolanaLikeTransactionType,
1009
- zStellarLikeTransactionType,
1010
- zSuiLikeTransactionType,
1011
- zTezosLikeTransactionType,
1012
- zTronLikeTransactionType
1382
+ z13.union([
1383
+ BITCOIN_SPEC.zTransactionType,
1384
+ CANTON_SPEC.zTransactionType,
1385
+ CARDANO_SPEC.zTransactionType,
1386
+ ETHEREUM_SPEC.zTransactionType,
1387
+ GENERIC_SPEC.zTransactionType,
1388
+ POLKADOT_SPEC.zTransactionType,
1389
+ RIPPLE_SPEC.zTransactionType,
1390
+ SOLANA_SPEC.zTransactionType,
1391
+ STELLAR_SPEC.zTransactionType,
1392
+ SUI_SPEC.zTransactionType,
1393
+ TEZOS_SPEC.zTransactionType,
1394
+ TRON_SPEC.zTransactionType
1013
1395
  ]);
1014
1396
  ({
1015
- ...zBitcoinLikeTransactionType.enum,
1016
- ...zCantonLikeTransactionType.enum,
1017
- ...zCardanoLikeTransactionType.enum,
1018
- ...zEthereumLikeTransferTransactionType.enum,
1019
- ...zEthereumLikeContractTransactionType.enum,
1020
- ...zGenericTransactionType.enum,
1021
- ...zPolkadotLikeTransactionType.enum,
1022
- ...zRippleLikeTransactionType.enum,
1023
- ...zSolanaLikeTransactionType.enum,
1024
- ...zStellarLikeTransactionType.enum,
1025
- ...zSuiLikeTransactionType.enum,
1026
- ...zTezosLikeTransactionType.enum,
1027
- ...zTronLikeTransactionType.enum
1397
+ ...BITCOIN_SPEC.zTransactionType.enum,
1398
+ ...CANTON_SPEC.zTransactionType.enum,
1399
+ ...CARDANO_SPEC.zTransactionType.enum,
1400
+ ...ETHEREUM_SPEC.zTransactionType.enum,
1401
+ ...GENERIC_SPEC.zTransactionType.enum,
1402
+ ...POLKADOT_SPEC.zTransactionType.enum,
1403
+ ...RIPPLE_SPEC.zTransactionType.enum,
1404
+ ...SOLANA_SPEC.zTransactionType.enum,
1405
+ ...STELLAR_SPEC.zTransactionType.enum,
1406
+ ...SUI_SPEC.zTransactionType.enum,
1407
+ ...TEZOS_SPEC.zTransactionType.enum,
1408
+ ...TRON_SPEC.zTransactionType.enum
1028
1409
  });
1029
1410
  ({
1030
1411
  ...NetworkFamily,
1031
1412
  // TODO: Sometimes `NetworkFamily` is not a `TransactionType` prefix - but why?
1032
1413
  [NetworkFamily.GENERIC_LIKE]: "GENERIC"
1033
1414
  });
1034
- var zTransactionData = z11.discriminatedUnion("type", [
1035
- ...zBitcoinLikeTransactionData.options,
1036
- ...zCantonLikeTransactionData.options,
1037
- ...zCardanoLikeTransactionData.options,
1038
- ...zEthereumLikeTransactionData.options,
1039
- ...zPolkadotLikeTransactionData.options,
1040
- ...zRippleLikeTransactionData.options,
1041
- ...zSolanaLikeTransactionData.options,
1042
- ...zStellarLikeTransactionData.options,
1043
- ...zSuiLikeTransactionData.options,
1044
- ...zTezosLikeTransactionData.options,
1045
- ...zTronLikeTransactionData.options,
1046
- zGenericTransactionData
1047
- ]);
1048
- var zSendOnlyTransactionData = z11.discriminatedUnion("type", [
1049
- zBitcoinLikeSendData,
1050
- zCantonLikeSendData,
1051
- zCardanoLikeSendData,
1052
- zEthereumLikeSendData,
1053
- zPolkadotLikeSendData,
1054
- zRippleLikeSendData,
1055
- zSolanaLikeSendData,
1056
- zStellarLikeSendData,
1057
- zSuiLikeSendData,
1058
- zTezosLikeSendData
1415
+ var zTransactionData = z13.discriminatedUnion("type", [
1416
+ ...BITCOIN_SPEC.zTransactionData.options,
1417
+ ...CANTON_SPEC.zTransactionData.options,
1418
+ ...CARDANO_SPEC.zTransactionData.options,
1419
+ ...ETHEREUM_SPEC.zTransactionData.options,
1420
+ ...GENERIC_SPEC.zTransactionData.options,
1421
+ ...POLKADOT_SPEC.zTransactionData.options,
1422
+ ...RIPPLE_SPEC.zTransactionData.options,
1423
+ ...SOLANA_SPEC.zTransactionData.options,
1424
+ ...STELLAR_SPEC.zTransactionData.options,
1425
+ ...SUI_SPEC.zTransactionData.options,
1426
+ ...TEZOS_SPEC.zTransactionData.options,
1427
+ ...TRON_SPEC.zTransactionData.options
1059
1428
  ]);
1060
- var zTransactionResponse = z11.discriminatedUnion("type", [
1061
- zBitcoinLikeTransactionResponse,
1062
- zCantonLikeTransactionResponse,
1063
- zCardanoLikeTransactionResponse,
1064
- zEthereumLikeTransferTransactionResponse,
1065
- zEthereumLikeContractTransactionResponse,
1066
- zGenericTransactionResponse,
1067
- zPolkadotLikeTransactionResponse,
1068
- zRippleLikeTransactionResponse,
1069
- zSolanaLikeTransactionResponse,
1070
- zStellarLikeTransactionResponse,
1071
- zSuiLikeTransactionResponse,
1072
- zTezosLikeTransactionResponse
1429
+ var zSendOnlyTransactionData = z13.discriminatedUnion("type", [
1430
+ BITCOIN_SPEC.zSendTransactionData,
1431
+ CANTON_SPEC.zSendTransactionData,
1432
+ CARDANO_SPEC.zSendTransactionData,
1433
+ ETHEREUM_SPEC.zSendTransactionData,
1434
+ POLKADOT_SPEC.zSendTransactionData,
1435
+ RIPPLE_SPEC.zSendTransactionData,
1436
+ SOLANA_SPEC.zSendTransactionData,
1437
+ STELLAR_SPEC.zSendTransactionData,
1438
+ SUI_SPEC.zSendTransactionData,
1439
+ TEZOS_SPEC.zSendTransactionData
1073
1440
  ]);
1074
-
1075
- // src/accounts/clients/types.ts
1076
- z11.discriminatedUnion(
1077
- zTransactionResponse._zod.def.discriminator,
1078
- ensureNonEmptyArray(
1079
- zTransactionResponse.options.map((_) => _.extend({ note: zNote.nullable() }))
1080
- )
1081
- );
1082
- var zReviewStepWithUsers = z.object({
1083
- quorum: z.number().min(0).meta({ description: "Number of required approvals for the step" }),
1084
- userIds: z.array(z.string().min(1)).meta({ description: "User ids in the step" })
1085
- // PKs to `User` model
1086
- }).meta({ description: "Review step with users" });
1087
- var zReviewStepWithUsersArray = z.array(zReviewStepWithUsers);
1088
- var zReviewStepData = z.union([
1089
- zReviewStepWithUsers,
1090
- z.object({
1091
- quorum: z.number().min(0).meta({ description: "Number of required approvals for the step" }),
1092
- groupId: z.string().min(1).meta({ description: "Group id in the step" })
1093
- // PKs to `Group` model
1094
- }).meta({ description: "Review step with group" })
1441
+ var zTransactionResponse = z13.discriminatedUnion("type", [
1442
+ ...BITCOIN_SPEC.zTransactionResponse.options,
1443
+ ...CANTON_SPEC.zTransactionResponse.options,
1444
+ ...CARDANO_SPEC.zTransactionResponse.options,
1445
+ ...ETHEREUM_SPEC.zTransactionResponse.options,
1446
+ ...GENERIC_SPEC.zTransactionResponse.options,
1447
+ ...POLKADOT_SPEC.zTransactionResponse.options,
1448
+ ...RIPPLE_SPEC.zTransactionResponse.options,
1449
+ ...SOLANA_SPEC.zTransactionResponse.options,
1450
+ ...STELLAR_SPEC.zTransactionResponse.options,
1451
+ ...SUI_SPEC.zTransactionResponse.options,
1452
+ ...TEZOS_SPEC.zTransactionResponse.options,
1453
+ ...TRON_SPEC.zTransactionResponse.options
1095
1454
  ]);
1096
- var zReviewStepsArray = z.array(zReviewStepData).min(1).meta({ description: "Review steps" });
1455
+ var shouldHaveTargetHsmId = (request) => {
1456
+ switch (request.type) {
1457
+ case RequestType.CREATE_ENTITY:
1458
+ case RequestType.EDIT_ENTITY:
1459
+ case RequestType.REVOKE_ENTITY:
1460
+ case RequestType.CREATE_SCICONFIG:
1461
+ case RequestType.EDIT_SCICONFIG:
1462
+ case RequestType.CREATE_API_KEY:
1463
+ case RequestType.EDIT_API_KEY:
1464
+ case RequestType.REVOKE_API_KEY:
1465
+ case RequestType.EDIT_WORKSPACE_RULE:
1466
+ case RequestType.UPDATE_QUORUM:
1467
+ return false;
1468
+ case RequestType.CREATE_PSD_USER:
1469
+ case RequestType.CREATE_API_USER:
1470
+ case RequestType.CREATE_API_USER_ACCESS:
1471
+ // targeting / editing an existing `User`
1472
+ case RequestType.REVOKE_USER:
1473
+ case RequestType.CREATE_TRANSACTION:
1474
+ case RequestType.SIGN_MESSAGE:
1475
+ case RequestType.SIGN_DIGESTS:
1476
+ case RequestType.CREATE_ACCOUNT:
1477
+ case RequestType.EDIT_ACCOUNT:
1478
+ case RequestType.TRADELINK_ACTIVATE_ACCOUNT:
1479
+ case RequestType.CREATE_GROUP:
1480
+ case RequestType.EDIT_GROUP:
1481
+ case RequestType.REVOKE_GROUP:
1482
+ case RequestType.CREATE_WHITELIST:
1483
+ case RequestType.EDIT_WHITELIST:
1484
+ case RequestType.CREATE_POLICY:
1485
+ case RequestType.EDIT_POLICY:
1486
+ case RequestType.TRADELINK_CREATE_CUSTODIAN:
1487
+ case RequestType.TRADELINK_EDIT_CUSTODIAN:
1488
+ case RequestType.TRADELINK_CREATE_EXCHANGE:
1489
+ case RequestType.TRADELINK_EDIT_EXCHANGE:
1490
+ case RequestType.TRADELINK_CREATE_ASSET_MANAGER:
1491
+ case RequestType.TRADELINK_EDIT_ASSET_MANAGER:
1492
+ return request.state !== RequestState.INITIAL;
1493
+ case RequestType.EDIT_TOKEN_RULE:
1494
+ return true;
1495
+ }
1496
+ };
1497
+ var shouldHaveTargetId = (request) => {
1498
+ switch (request.type) {
1499
+ case RequestType.CREATE_API_KEY:
1500
+ case RequestType.EDIT_API_KEY:
1501
+ case RequestType.REVOKE_API_KEY:
1502
+ return false;
1503
+ case RequestType.CREATE_TRANSACTION:
1504
+ case RequestType.SIGN_DIGESTS:
1505
+ return false;
1506
+ case RequestType.UPDATE_QUORUM:
1507
+ case RequestType.CREATE_PSD_USER:
1508
+ case RequestType.CREATE_API_USER:
1509
+ case RequestType.CREATE_ACCOUNT:
1510
+ case RequestType.CREATE_GROUP:
1511
+ case RequestType.CREATE_WHITELIST:
1512
+ case RequestType.CREATE_ENTITY:
1513
+ case RequestType.CREATE_SCICONFIG:
1514
+ case RequestType.CREATE_POLICY:
1515
+ case RequestType.SIGN_MESSAGE:
1516
+ case RequestType.TRADELINK_CREATE_CUSTODIAN:
1517
+ case RequestType.TRADELINK_CREATE_EXCHANGE:
1518
+ case RequestType.TRADELINK_CREATE_ASSET_MANAGER:
1519
+ return request.state === RequestState.EXECUTED;
1520
+ case RequestType.EDIT_WORKSPACE_RULE:
1521
+ case RequestType.EDIT_ACCOUNT:
1522
+ case RequestType.TRADELINK_ACTIVATE_ACCOUNT:
1523
+ case RequestType.EDIT_TOKEN_RULE:
1524
+ // EDIT_TOKEN_RULE targetId is the parent account which must always exist, even when creating new token rule.
1525
+ case RequestType.EDIT_GROUP:
1526
+ case RequestType.REVOKE_GROUP:
1527
+ case RequestType.EDIT_WHITELIST:
1528
+ case RequestType.EDIT_ENTITY:
1529
+ case RequestType.REVOKE_ENTITY:
1530
+ case RequestType.CREATE_API_USER_ACCESS:
1531
+ case RequestType.REVOKE_USER:
1532
+ case RequestType.EDIT_SCICONFIG:
1533
+ case RequestType.EDIT_POLICY:
1534
+ case RequestType.TRADELINK_EDIT_CUSTODIAN:
1535
+ case RequestType.TRADELINK_EDIT_EXCHANGE:
1536
+ case RequestType.TRADELINK_EDIT_ASSET_MANAGER:
1537
+ case RequestType.TRADELINK_ADJUST_PLEDGE:
1538
+ case RequestType.TRADELINK_REPLEDGE:
1539
+ case RequestType.TRADELINK_CREATE_SETTLEMENT:
1540
+ case RequestType.TRADELINK_FORCE_UNPLEDGE:
1541
+ case RequestType.TRADELINK_WITHDRAW:
1542
+ case RequestType.TRADELINK_ARBITRATE:
1543
+ return true;
1544
+ }
1545
+ };
1097
1546
 
1098
- // src/prisma-utils/policy.ts
1099
- var policy_exports = {};
1100
- __export(policy_exports, {
1101
- parseFields: () => parseFields,
1102
- zGovRuleJsonObject: () => zGovRuleJsonObject,
1103
- zGovRulesJsonArray: () => zGovRulesJsonArray,
1104
- zThreshold: () => zThreshold,
1105
- zWhitelistIds: () => zWhitelistIds
1106
- });
1107
- var zThreshold = z.object({
1108
- min: zUnsignedIntString.nullable().meta({ description: "Minimum transaction amount" }),
1109
- max: zUnsignedIntString.nullable().meta({ description: "Maximum transaction amount" })
1110
- }).meta({ description: "Threshold for the transaction value" });
1111
- var zWhitelistIds = z.array(z.string().min(1)).meta({ description: "IDs of whitelists for the recipient address" });
1112
- var zGovRuleJsonObject = z.object({
1113
- // Required.
1114
- operationType: zOperationType.meta({ description: "Allowed operation type" }),
1115
- // Optional threshold on transaction value: null `min` = 0, null `max` = +inf
1116
- threshold: zThreshold,
1117
- // Optional whitelist on transaction recipient: Empty list means no whitelist.
1118
- whitelistIds: zWhitelistIds,
1119
- reviewConfigId: z.string().min(1).meta({ description: "Id of ReviewConfig" }),
1120
- // HSM id for the rule
1121
- hsmId: zHsmObjectId
1122
- }).meta({ description: "INTERNAL: Governance rule JSON representation in DB" });
1123
- var zGovRulesJsonArray = z.array(zGovRuleJsonObject);
1124
- var parseFields = (policy) => {
1125
- const rulesJsonArray = zGovRulesJsonArray.parse(policy.rulesJsonArray);
1126
- return { ...policy, rulesJsonArray };
1547
+ // src/__fakes__/models/requests/requests-and-reviews.ts
1548
+ var genRequestReviewSteps = (numSteps) => times(1, () => ({ stageName: "default", quorum: 2 }));
1549
+ var genVaultRequest = (opts) => {
1550
+ const { type, state = RequestState.PENDING_APPROVAL, data, ...custom } = opts;
1551
+ const targetHsmId = shouldHaveTargetHsmId({ type, state }) ? type === RequestType.CREATE_PSD_USER ? fakePubKey() : fakeHsmObjectId() : null;
1552
+ const targetId = shouldHaveTargetId({ type, state }) ? faker.string.uuid() : null;
1553
+ return injectSyncId({
1554
+ id: faker.string.uuid(),
1555
+ workspaceName: fakeWorkspaceName(),
1556
+ type,
1557
+ state,
1558
+ reviewSteps: genRequestReviewSteps(),
1559
+ currentStepIndex: 0,
1560
+ expiresAt: faker.date.future(),
1561
+ targetHsmId,
1562
+ createdById: faker.string.uuid(),
1563
+ createdAt: faker.date.past(),
1564
+ updatedAt: faker.date.past(),
1565
+ note: null,
1566
+ managedData: null,
1567
+ data,
1568
+ targetId,
1569
+ gateTargetType: "Whatsoever",
1570
+ gateTargetId: 0,
1571
+ gateType: "Request",
1572
+ gateId: fakeGateId(),
1573
+ // Note: Custom properties will overwrite the default ones. It is still possible for caller
1574
+ // to overwrite `targetId`. Thus it is not guaranteed that these values will always be
1575
+ // consistent with `type` and `state`.
1576
+ ...custom
1577
+ });
1127
1578
  };
1128
-
1129
- // src/prisma-utils/review-config.ts
1130
- var review_config_exports = {};
1131
- __export(review_config_exports, {
1132
- INCLUDE_MEMBERS: () => INCLUDE_MEMBERS
1133
- });
1134
- var INCLUDE_MEMBERS = {
1135
- users: true,
1136
- groups: {
1137
- include: { members: true }
1579
+ var genVaultRequestReview = (opts) => {
1580
+ const status = opts?.status ?? RequestReviewStatus.PENDING;
1581
+ const challenge = opts?.challenge ?? fakePsdChallenge();
1582
+ const { challengeType } = challenge;
1583
+ let signature;
1584
+ if (status !== RequestReviewStatus.APPROVED) {
1585
+ signature = null;
1586
+ } else {
1587
+ switch (challengeType) {
1588
+ case ChallengeType.PSD:
1589
+ signature = fakePsdSignature();
1590
+ break;
1591
+ case ChallengeType.API:
1592
+ signature = fakeJws();
1593
+ break;
1594
+ }
1138
1595
  }
1596
+ return {
1597
+ id: faker.number.int(),
1598
+ requestId: faker.string.uuid(),
1599
+ stageName: "default",
1600
+ // assume the simple case where there is one single stage
1601
+ stepIndex: 0,
1602
+ userId: faker.string.uuid(),
1603
+ pubKey: fakePubKey(),
1604
+ challengeType,
1605
+ challenge,
1606
+ signature,
1607
+ status,
1608
+ createdAt: faker.date.past(),
1609
+ updatedAt: faker.date.past(),
1610
+ ...opts
1611
+ };
1139
1612
  };
1140
1613
  var zPubKey = zHexString.meta({ description: "Public key" });
1141
1614
  var zHsmCertificate = z.object({
@@ -1242,7 +1715,7 @@ var zHsmSignature = z.object({
1242
1715
  }),
1243
1716
  pubkey: zHexString.nullable().meta({ description: "Public key for signature verification, 32 or 33 bytes" })
1244
1717
  });
1245
- var zWorkspaceName = z11.string().min(1).max(20).regex(/^[a-z0-9]+$/);
1718
+ var zWorkspaceName = z13.string().min(1).max(20).regex(/^[a-z0-9]+$/);
1246
1719
  var zUserName = z.string().min(1).max(19).meta({ description: "User name" });
1247
1720
  var zUserRegistrationCreateInput = z.object({
1248
1721
  name: zUserName,
@@ -1258,1336 +1731,1044 @@ zUserRegistrationCreateInput.extend({
1258
1731
  });
1259
1732
 
1260
1733
  // src/users/request-data.ts
1261
- var zCreatePsdUserRequestData = z11.object({
1262
- registrationId: z11.string().meta({ description: "User registration ID" })
1734
+ var zCreatePsdUserRequestData = z13.object({
1735
+ registrationId: z13.string().meta({ description: "User registration ID" })
1263
1736
  });
1264
- var zCreateApiUserRequestData = z11.object({
1737
+ var zCreateApiUserRequestData = z13.object({
1265
1738
  name: zUserName,
1266
- pubKey: z11.string().meta({ description: "Public key" }),
1267
- role: z11.enum(["ADMIN", "OPERATOR"]).meta({ description: "User role" }),
1268
- viewAll: z11.boolean().meta({ description: "View all data" }).optional()
1739
+ pubKey: z13.string().meta({ description: "Public key" }),
1740
+ role: z13.enum(["ADMIN", "OPERATOR"]).meta({ description: "User role" }),
1741
+ viewAll: z13.boolean().meta({ description: "View all data" }).optional()
1269
1742
  }).meta({ description: "Create API user request data" });
1270
- var zCreateApiUserAccessRequestData = z11.object({
1743
+ var zCreateApiUserAccessRequestData = z13.object({
1271
1744
  name: zUserName
1272
1745
  }).meta({ description: "Create API user credential request data" });
1273
- z11.object({
1274
- authUserId: z11.string().meta({ description: "Authentication broker ID" })
1746
+ z13.object({
1747
+ authUserId: z13.string().meta({ description: "Authentication broker ID" })
1275
1748
  }).meta({ description: "Managed data for API user" });
1276
- var zRevokeUserRequestData = z11.object({});
1277
- var zUpdateQuorumRequestData = z11.object({
1278
- quorum: z11.number().int().min(2).meta({ description: "Workspace quorum" })
1279
- });
1280
- var NonRootAdminPermission = omit(AdminPermission, "ROOT");
1281
- var zWorkspaceRuleRequestData = z11.object({
1282
- permission: z11.enum(NonRootAdminPermission).meta({ description: "Granted permissions" }),
1283
- reviewConfig: zReviewStepWithUsersArray.meta({ description: "List of admin review steps" })
1284
- });
1285
- var zTradelinkWhitelistAddress = z11.object({
1286
- name: z11.string().min(1),
1287
- currency: zCurrencyString,
1288
- address: z11.string().min(1)
1289
- });
1290
- z11.array(zTradelinkWhitelistAddress);
1291
- var zTradelinkId = z11.string().meta({ description: "Unique identifier in Tradelink service" });
1292
- var zTradelinkOrgEntityResponse = z11.object({
1293
- tradelinkId: zTradelinkId,
1294
- name: z11.string().meta({ description: "Name" }),
1295
- code: z11.string().meta({ description: "Code" }),
1296
- logoUrl: z11.string().meta({ description: "Logo URL" })
1297
- });
1298
- zTradelinkOrgEntityResponse.omit({
1299
- tradelinkId: true
1300
- });
1301
- z11.object({
1302
- tradelinkId: zTradelinkId
1303
- });
1304
- var zTradelinkExchangeConfig = z11.object({
1305
- exchangeId: z11.string().meta({ description: "Tradelink exchange id" }),
1306
- repledgeAuthorized: z11.boolean().meta({
1307
- description: "Determines whether this exchange is authorized to repledge on this account"
1308
- }),
1309
- needsAssetManagerApprovalForSettlements: z11.boolean().meta({
1310
- description: 'Determines whether asset manager will "pre-approve" the settlement requests on this account'
1311
- })
1312
- });
1313
- var zTradelinkExchangeConfigs = z11.array(zTradelinkExchangeConfig);
1314
- z11.object({
1315
- workspaceName: zWorkspaceName,
1316
- custodian: z11.object({ name: z11.string() }),
1317
- assetManagers: z11.array(z11.object({ name: z11.string() })),
1318
- exchanges: z11.array(z11.object({ name: z11.string() }))
1319
- });
1320
- z11.object({
1321
- tradelinkId: z11.string(),
1322
- workspaceName: zWorkspaceName,
1323
- custodian: zTradelinkOrgEntityResponse,
1324
- assetManagers: z11.array(zTradelinkOrgEntityResponse),
1325
- exchanges: z11.array(zTradelinkOrgEntityResponse)
1326
- });
1327
- var zTradelinkAsset = z11.object({
1328
- name: z11.string(),
1329
- magnitude: z11.number().int().nonnegative()
1330
- });
1331
- z11.object({
1332
- tradelinkId: zTradelinkId,
1333
- asset: zTradelinkAsset,
1334
- state: z11.enum([
1335
- "PLEDGE_READY",
1336
- "PLEDGE_INCREMENT_PENDING_APPROVAL",
1337
- "PLEDGE_APPROVED",
1338
- "PLEDGE_REJECTED",
1339
- "UNPLEDGE_PENDING_APPROVAL",
1340
- "UNPLEDGE_APPROVED",
1341
- "UNPLEDGE_REJECTED",
1342
- "REPLEDGE_PENDING_APPROVAL",
1343
- "REPLEDGE_APPROVED",
1344
- "REPLEDGE_REJECTED",
1345
- "ASSIGNED_TO_SETTLEMENT",
1346
- "OUTBOUND_TRANSACTION_CONFIRMED",
1347
- "OUTBOUND_TRANSACTION_FAILED",
1348
- "RECOVERING_FROM_FAILURE",
1349
- "PLEDGE_CONSUMED"
1350
- ]),
1351
- isLocked: z11.boolean(),
1352
- amount: z11.string().meta({ description: "Currently pledged amount" }),
1353
- pending: z11.string().meta({ description: "Requested pledge increment, not yet approved" }),
1354
- repledge: z11.string().meta({ description: "TODO: describe this field" }),
1355
- exchangeTradelinkId: z11.string(),
1356
- accountId: z11.string()
1357
- });
1358
- z11.object({
1359
- workspaceName: z11.string(),
1360
- clientAccountId: z11.string().meta({ description: "Account ID from the client side" }),
1361
- exchangeTradelinkId: zTradelinkId,
1362
- asset: zTradelinkAsset
1363
- });
1364
- z11.object({
1365
- pledgeTradelinkId: zTradelinkId,
1366
- amount: zUnsignedIntString,
1367
- asset: zTradelinkAsset
1368
- });
1369
- z11.object({
1370
- tradelinkId: z11.string(),
1371
- pledgeTradelinkId: z11.string(),
1372
- state: z11.enum([
1373
- "REGISTERED",
1374
- "PENDING_REPLEDGE_CREATION_APPROVAL",
1375
- "PENDING_REPLEDGE_APPROVAL",
1376
- "PENDING_CREATION_APPROVAL",
1377
- "PENDING_PRE_APPROVAL",
1378
- "PRE_APPROVED",
1379
- "APPROVED",
1380
- "REJECTED",
1381
- "CONFIRMED",
1382
- "FAILED",
1383
- "CANCELED"
1384
- ]),
1385
- // For now we only consider the outbound settlement
1386
- outboundTransactionHash: z11.string().nullable()
1387
- });
1749
+ var zRevokeUserRequestData = z13.object({});
1750
+ var zReviewStepWithUsers = z.object({
1751
+ quorum: z.number().min(0).meta({ description: "Number of required approvals for the step" }),
1752
+ userIds: z.array(z.string().min(1)).meta({ description: "User ids in the step" })
1753
+ // PKs to `User` model
1754
+ }).meta({ description: "Review step with users" });
1755
+ var zReviewStepWithUsersArray = z.array(zReviewStepWithUsers);
1756
+ var zReviewStepData = z.union([
1757
+ zReviewStepWithUsers,
1758
+ z.object({
1759
+ quorum: z.number().min(0).meta({ description: "Number of required approvals for the step" }),
1760
+ groupId: z.string().min(1).meta({ description: "Group id in the step" })
1761
+ // PKs to `Group` model
1762
+ }).meta({ description: "Review step with group" })
1763
+ ]);
1764
+ var zReviewStepsArray = z.array(zReviewStepData).min(1).meta({ description: "Review steps" });
1388
1765
 
1389
- // src/tradelink/request-data.ts
1390
- var zTradelinkActivateAccountRequestData = z11.null();
1391
- var zTradelinkCustodianRequestData = z11.object({
1392
- settlement: zReviewStepWithUsersArray.meta({ description: "List of settlement review steps" }),
1393
- withdraw: zReviewStepWithUsersArray.meta({ description: "List of withdraw review steps" }),
1394
- arbitration: zReviewStepWithUsersArray.meta({ description: "List of arbitration review steps" })
1395
- });
1396
- var zTradelinkEntityRequestData = z11.object({
1397
- tradelinkId: z11.string().min(1),
1398
- groups: zReviewStepWithUsersArray.meta({ description: "List of asset manager review groups" }),
1399
- whitelist: z11.array(zTradelinkWhitelistAddress).meta({ description: "List of asset manager whitelisted addresses" })
1400
- });
1401
- var zTradelinkAdjustPledgeRequestData = z11.object({
1402
- accountId: z11.string().meta({ description: "Account id" }),
1403
- exchangeId: z11.string().meta({ description: "Exchange id" }),
1404
- amount: zIntString.meta({ description: "Amount to add to pledge" })
1405
- });
1406
- var zTradelinkRepledgeRequestData = z11.object({
1407
- accountId: z11.string().meta({ description: "Account id" }),
1408
- exchangeId: z11.string().meta({ description: "Exchange id" }),
1409
- amount: zIntString.meta({ description: "Amount to add to pledge" })
1410
- });
1411
- var zTradelinkCreateSettlementRequestData = z11.object({
1412
- accountId: z11.string().meta({ description: "Account id" }),
1413
- exchangeId: z11.string().meta({ description: "Exchange id" }),
1414
- transaction: zSendOnlyTransactionData
1415
- });
1416
- var zTradelinkForceUnpledgeRequestData = z11.object({
1417
- accountId: z11.string().meta({ description: "Account id" }),
1418
- exchangeId: z11.string().meta({ description: "Exchange id" })
1419
- });
1420
- var zTradelinkWithdrawRequestData = z11.object({
1421
- accountId: z11.string().meta({ description: "Account id" }),
1422
- transaction: zSendOnlyTransactionData
1423
- });
1424
- var zTradelinkArbitrationRequestData = z11.object({
1425
- accountId: z11.string().meta({ description: "Account id" }),
1426
- transaction: zSendOnlyTransactionData
1427
- });
1428
- var zTradelinkRequestMixinsByType = {
1429
- [RequestType.TRADELINK_ACTIVATE_ACCOUNT]: z11.object({
1430
- type: z11.literal(RequestType.TRADELINK_ACTIVATE_ACCOUNT),
1431
- targetId: z11.string(),
1432
- data: zTradelinkActivateAccountRequestData
1433
- }),
1434
- [RequestType.TRADELINK_CREATE_CUSTODIAN]: z11.object({
1435
- type: z11.literal(RequestType.TRADELINK_CREATE_CUSTODIAN),
1436
- data: zTradelinkCustodianRequestData
1437
- }),
1438
- [RequestType.TRADELINK_EDIT_CUSTODIAN]: z11.object({
1439
- type: z11.literal(RequestType.TRADELINK_EDIT_CUSTODIAN),
1440
- targetId: z11.string(),
1441
- data: zTradelinkCustodianRequestData
1442
- }),
1443
- [RequestType.TRADELINK_CREATE_EXCHANGE]: z11.object({
1444
- type: z11.literal(RequestType.TRADELINK_CREATE_EXCHANGE),
1445
- data: zTradelinkEntityRequestData
1446
- }),
1447
- [RequestType.TRADELINK_EDIT_EXCHANGE]: z11.object({
1448
- type: z11.literal(RequestType.TRADELINK_EDIT_EXCHANGE),
1449
- targetId: z11.string(),
1450
- data: zTradelinkEntityRequestData
1451
- }),
1452
- [RequestType.TRADELINK_CREATE_ASSET_MANAGER]: z11.object({
1453
- type: z11.literal(RequestType.TRADELINK_CREATE_ASSET_MANAGER),
1454
- data: zTradelinkEntityRequestData
1455
- }),
1456
- [RequestType.TRADELINK_EDIT_ASSET_MANAGER]: z11.object({
1457
- type: z11.literal(RequestType.TRADELINK_EDIT_ASSET_MANAGER),
1458
- targetId: z11.string(),
1459
- data: zTradelinkEntityRequestData
1460
- }),
1461
- [RequestType.TRADELINK_ADJUST_PLEDGE]: z11.object({
1462
- type: z11.literal(RequestType.TRADELINK_ADJUST_PLEDGE),
1463
- data: zTradelinkAdjustPledgeRequestData
1464
- }),
1465
- [RequestType.TRADELINK_REPLEDGE]: z11.object({
1466
- type: z11.literal(RequestType.TRADELINK_REPLEDGE),
1467
- data: zTradelinkRepledgeRequestData
1468
- }),
1469
- [RequestType.TRADELINK_CREATE_SETTLEMENT]: z11.object({
1470
- type: z11.literal(RequestType.TRADELINK_CREATE_SETTLEMENT),
1471
- data: zTradelinkCreateSettlementRequestData,
1472
- meta: z11.object({
1473
- hash: z11.string().nullable()
1474
- }).optional().nullable()
1475
- }),
1476
- [RequestType.TRADELINK_FORCE_UNPLEDGE]: z11.object({
1477
- type: z11.literal(RequestType.TRADELINK_FORCE_UNPLEDGE),
1478
- data: zTradelinkForceUnpledgeRequestData
1479
- }),
1480
- [RequestType.TRADELINK_WITHDRAW]: z11.object({
1481
- type: z11.literal(RequestType.TRADELINK_WITHDRAW),
1482
- data: zTradelinkWithdrawRequestData,
1483
- meta: z11.object({
1484
- hash: z11.string().nullable()
1485
- }).optional().nullable()
1486
- }),
1487
- [RequestType.TRADELINK_ARBITRATE]: z11.object({
1488
- type: z11.literal(RequestType.TRADELINK_ARBITRATE),
1489
- data: zTradelinkArbitrationRequestData,
1490
- meta: z11.object({
1491
- hash: z11.string().nullable()
1492
- }).optional().nullable()
1493
- })
1494
- };
1495
- var zMessageType = z11.enum(MessageType).meta({ description: "Type of the message to sign" });
1496
- var zMessageData = zHexString.nonempty().meta({
1497
- description: "Hex data to sign, either a json string for EIP712, or a raw string for EIP191"
1498
- });
1499
- var zMessage = z11.object({
1500
- type: zMessageType,
1501
- data: zMessageData
1502
- });
1503
- z11.object({
1504
- id: z11.string().meta({ description: "Unique identifier" }),
1505
- type: zMessageType,
1506
- data: zMessageData,
1507
- address: z11.string().meta({ description: "Address of the signing key" }),
1508
- derivationPath: z11.string().meta({ description: "Derivation path of the signing key" }),
1509
- signature: zHsmSignature.meta({ description: "Signature of the message" }),
1510
- createdById: z11.string().meta({ description: "ID of the creator" }),
1511
- createdAt: z11.coerce.date().meta({ description: "Creation timestamp" })
1512
- }).meta({ description: "Signed message", id: "SignedMessageResponse" });
1513
- var zCreateTransactionRequestData = z11.object({
1514
- accountId: z11.string().min(1).meta({ description: "Target account id" }),
1515
- transaction: zTransactionData
1516
- }).meta({
1517
- description: "Create transaction request data",
1518
- id: "CreateTransactionRequestData"
1519
- });
1520
- var zSignMessageRequestData = z11.object({
1521
- message: zMessage.meta({ description: "Message to sign" }),
1522
- accountId: z11.string().min(1).meta({ description: "Target account id" }),
1523
- address: z11.string().nonempty().meta({ description: "Address with which to sign the message" }),
1524
- derivationPath: z11.string().nonempty().meta({ description: "Derivation path of the signing address" })
1525
- });
1526
- var zSignMessageUserInputData = zSignMessageRequestData.partial({
1527
- address: true,
1528
- derivationPath: true
1529
- });
1530
- var zDigestData = z11.object({
1531
- digest: zHexString.meta({ description: "The hex string digest to sign" }),
1532
- derivationPath: z11.string().nonempty().meta({ description: "The derivation path with which to sign the digest" })
1533
- });
1534
- var zSignDigestsRequestData = z11.object({
1535
- accountId: z11.string().min(1).meta({ description: "Target account id" }),
1536
- digests: z11.array(zDigestData).meta({ description: "The digests to sign" })
1537
- });
1538
- z11.object({
1539
- signatures: z11.array(zHsmSignature)
1766
+ // src/prisma-utils/policy.ts
1767
+ var policy_exports = {};
1768
+ __export(policy_exports, {
1769
+ parseFields: () => parseFields,
1770
+ zGovRuleJsonObject: () => zGovRuleJsonObject,
1771
+ zGovRulesJsonArray: () => zGovRulesJsonArray,
1772
+ zThreshold: () => zThreshold,
1773
+ zWhitelistIds: () => zWhitelistIds
1540
1774
  });
1541
-
1542
- // src/accounts/account-governance-fields.ts
1543
- var zClassicAccountGovernanceFields = z.object({
1544
- type: z.literal(AccountGovernanceType.CLASSIC).meta({ description: "Classic account governance" }),
1545
- policyId: z.string().meta({ description: "Identifier of corresponding governance policy" })
1546
- }).meta({ description: "Classic" });
1547
- var zTradelinkAccountGovernanceFields = z.object({
1548
- type: z.literal(AccountGovernanceType.TRADELINK).meta({ description: "Tradelink account governance" }),
1549
- assetManagerId: z.string().meta({ description: "Identifier of corresponding asset manager" }),
1550
- exchangeConfigs: zTradelinkExchangeConfigs.meta({
1551
- description: "Tradelink exchange configurations"
1552
- })
1553
- }).meta({ description: "Tradelink" });
1554
- var zAccountGovernanceFields = z.discriminatedUnion("type", [zClassicAccountGovernanceFields, zTradelinkAccountGovernanceFields]).meta({ description: "Governance fields" });
1555
-
1556
- // src/accounts/types.ts
1557
- var zAccountCommonFields = z11.object({
1558
- id: z11.string().meta({ description: "Internal unique identifier" }),
1559
- legacyId: z11.number().meta({ description: "Legacy internal unique identifier (for retro-compatibility)" }),
1560
- name: z11.string().meta({ description: "Name" }),
1561
- currency: zCurrencyString,
1562
- network: zNetwork,
1563
- contractAddress: z11.string().nullable().meta({ description: "Token contract address for Token account" }),
1564
- index: z11.number().gte(0).meta({ description: "BIP44 account index" }),
1565
- derivationPath: z11.string().meta({ description: "Derivation path" }),
1566
- status: z11.enum(ActivationStatus).meta({ description: "Status" }),
1567
- createdAt: z11.coerce.date().meta({ description: "Creation timestamp" }),
1568
- updatedAt: z11.coerce.date().meta({ description: "Last modification timestamp" })
1569
- });
1570
- var zRawSigningAssetFields = z11.object({ type: z11.literal(AccountType.RAW_SIGNING).meta({ description: "Account type" }) }).meta({ description: "Raw signing account" });
1571
- var zAccountAssetFields = z11.discriminatedUnion("type", [zRawSigningAssetFields, ...zNetworkAssetFields.options]).meta({ description: "Account asset fields" });
1572
- var zAccountResponse = zAccountCommonFields.extend({
1573
- asset: zAccountAssetFields,
1574
- governance: zAccountGovernanceFields
1775
+ var zNote = z13.object({
1776
+ title: z13.string().meta({ description: "Note title" }),
1777
+ content: z13.string().meta({ description: "Note content" })
1575
1778
  });
1576
- z11.enum([
1577
- "name",
1578
- "currency",
1579
- "index",
1580
- "createdAt",
1581
- "updatedAt"
1582
- ]).default("createdAt");
1583
- var zRawSigningLiveData = zCommonLiveData.extend({
1584
- type: z11.literal(AccountType.RAW_SIGNING).meta({ description: "Account type" })
1585
- }).meta({ description: "Raw signing account" });
1586
- z11.discriminatedUnion("type", [
1587
- zRawSigningLiveData,
1588
- ...zAccountLiveData.options
1779
+ var zValueTransactionOperationType = z.enum([
1780
+ AllowedAction.SEND,
1781
+ AllowedAction.STAKE,
1782
+ AllowedAction.DEPLOY_CONTRACT,
1783
+ AllowedAction.EXECUTE_CONTRACT,
1784
+ AllowedAction.ACTIVATE_TOKEN,
1785
+ AllowedAction.RECEIVE
1589
1786
  ]);
1590
- z11.object({
1591
- address: z11.string().meta({ description: "Address" }),
1592
- derivationPath: z11.string().nullable().meta({ description: "Derivation path" })
1787
+ var zValueTransactionOperation = z.object({
1788
+ type: zValueTransactionOperationType,
1789
+ currency: zCurrencyString,
1790
+ recipient: z.string().nonempty(),
1791
+ destinationTag: z.string().nonempty().optional(),
1792
+ value: zUnsignedIntString
1593
1793
  });
1594
- z11.object({
1595
- amount: zIntString.meta({ description: "Amount in the smallest unit of the currency" }),
1596
- currency: zCurrency
1794
+ var zSigningOperationType = z.enum([AllowedAction.SIGN_MESSAGE, AllowedAction.SIGN_DIGESTS]);
1795
+ var zSigningOperation = z.object({
1796
+ type: zSigningOperationType
1597
1797
  });
1598
- z11.object({
1599
- id: z11.string().nonempty().meta({ description: "Staking position ID (if applicable)" }),
1600
- validator: z11.string().nonempty().meta({ description: "Validator address" }),
1601
- state: z11.enum(["ACTIVE", "INACTIVE", "ACTIVATING", "DEACTIVATING", "UNKNOWN"]).meta({ description: "Stake state" }),
1602
- staked: z11.string().meta({ description: "Staked amount" }),
1603
- rewards: z11.object({
1604
- total: z11.string().meta({ description: "Total rewards" })
1605
- })
1798
+ var zClassicOperationType = z.enum([
1799
+ AllowedAction.SEND,
1800
+ AllowedAction.STAKE,
1801
+ AllowedAction.DEPLOY_CONTRACT,
1802
+ AllowedAction.EXECUTE_CONTRACT,
1803
+ AllowedAction.SIGN_MESSAGE,
1804
+ AllowedAction.ACTIVATE_TOKEN,
1805
+ AllowedAction.RECEIVE
1806
+ ]);
1807
+ z.enum([AllowedAction.SIGN_DIGESTS]);
1808
+ var zOperationType = z.enum([
1809
+ ...zValueTransactionOperationType.options,
1810
+ ...zSigningOperationType.options
1811
+ ]);
1812
+ z.discriminatedUnion("type", [
1813
+ zValueTransactionOperation,
1814
+ zSigningOperation
1815
+ ]);
1816
+
1817
+ // src/prisma-utils/policy.ts
1818
+ var zThreshold = z.object({
1819
+ min: zUnsignedIntString.nullable().meta({ description: "Minimum transaction amount" }),
1820
+ max: zUnsignedIntString.nullable().meta({ description: "Maximum transaction amount" })
1821
+ }).meta({ description: "Threshold for the transaction value" });
1822
+ var zWhitelistIds = z.array(z.string().min(1)).meta({ description: "IDs of whitelists for the recipient address" });
1823
+ var zGovRuleJsonObject = z.object({
1824
+ // Required.
1825
+ operationType: zOperationType.meta({ description: "Allowed operation type" }),
1826
+ // Optional threshold on transaction value: null `min` = 0, null `max` = +inf
1827
+ threshold: zThreshold,
1828
+ // Optional whitelist on transaction recipient: Empty list means no whitelist.
1829
+ whitelistIds: zWhitelistIds,
1830
+ reviewConfigId: z.string().min(1).meta({ description: "Id of ReviewConfig" }),
1831
+ // HSM id for the rule
1832
+ hsmId: zHsmObjectId
1833
+ }).meta({ description: "INTERNAL: Governance rule JSON representation in DB" });
1834
+ var zGovRulesJsonArray = z.array(zGovRuleJsonObject);
1835
+ var parseFields = (policy) => {
1836
+ const rulesJsonArray = zGovRulesJsonArray.parse(policy.rulesJsonArray);
1837
+ return { ...policy, rulesJsonArray };
1838
+ };
1839
+
1840
+ // src/prisma-utils/review-config.ts
1841
+ var review_config_exports = {};
1842
+ __export(review_config_exports, {
1843
+ INCLUDE_MEMBERS: () => INCLUDE_MEMBERS
1844
+ });
1845
+ var INCLUDE_MEMBERS = {
1846
+ users: true,
1847
+ groups: {
1848
+ include: { members: true }
1849
+ }
1850
+ };
1851
+ var zUpdateQuorumRequestData = z13.object({
1852
+ quorum: z13.number().int().min(2).meta({ description: "Workspace quorum" })
1606
1853
  });
1607
- z11.object({
1608
- address: z11.string().meta({ description: "Validator address" }),
1609
- apy: z11.string().nullable().meta({ description: "Validator APY" }),
1610
- balance: z11.string().nullable().meta({ description: "Validator balance" }),
1611
- commissionRate: z11.string().nullable().meta({ description: "Validator commission rate" }),
1612
- description: z11.string().nullable().meta({ description: "Description" }),
1613
- logo: z11.string().nullable().meta({ description: "Logo URL" }),
1614
- name: z11.string().nullable().meta({ description: "Validator name" }),
1615
- url: z11.string().nullable().meta({ description: "Validator URL" })
1854
+ var NonRootAdminPermission = omit(AdminPermission, "ROOT");
1855
+ var zWorkspaceRuleRequestData = z13.object({
1856
+ permission: z13.enum(NonRootAdminPermission).meta({ description: "Granted permissions" }),
1857
+ reviewConfig: zReviewStepWithUsersArray.meta({ description: "List of admin review steps" })
1616
1858
  });
1617
-
1618
- // src/accounts/app-types.ts
1619
- z11.discriminatedUnion(
1859
+ z13.discriminatedUnion(
1620
1860
  zTransactionResponse._zod.def.discriminator,
1621
1861
  ensureNonEmptyArray(
1622
- zTransactionResponse.options.map(
1623
- (_) => _.extend({
1624
- note: zNote.nullable().meta({ description: "Optional transaction note" })
1625
- })
1626
- )
1862
+ zTransactionResponse.options.map((_) => _.extend({ note: zNote.nullable() }))
1627
1863
  )
1628
1864
  );
1629
- var zWhitelistAddress = z11.object({
1630
- name: z11.string().min(1).max(50),
1865
+ var zTradelinkWhitelistAddress = z13.object({
1866
+ name: z13.string().min(1),
1631
1867
  currency: zCurrencyString,
1632
- address: z11.string().min(1).max(200),
1633
- // Destination tags are numeric-only or alpha-numeric.
1634
- // Empty array (or undefined) means no check on destination tag.
1635
- destinationTags: z11.array(z11.string().min(1).regex(/^\w+$/)).optional()
1868
+ address: z13.string().min(1)
1636
1869
  });
1637
- var zWhitelistAddresses = z11.array(zWhitelistAddress);
1638
- var zWhitelistName = z11.string().min(1).max(45).meta({ description: "Whitelist name" });
1639
- var zCreateWhitelistRequestData = z11.object({
1640
- name: zWhitelistName,
1641
- description: z11.string().nullable(),
1642
- addresses: zWhitelistAddresses,
1643
- type: z11.enum(WhitelistType)
1644
- });
1645
- var zEditWhitelistRequestData = z11.object({
1646
- name: zWhitelistName,
1647
- addresses: zWhitelistAddresses
1648
- });
1649
-
1650
- // src/policies/db-utils.ts
1651
- var zBaseGovRuleData = z11.object({
1652
- // Steps of users that will need to review operations
1653
- reviewSteps: zReviewStepsArray,
1654
- // Optional threshold on transaction value: null `min` = 0, null `max` = +inf
1655
- threshold: policy_exports.zThreshold.optional(),
1656
- // Optional whitelist on transaction recipient: Empty list means no whitelist.
1657
- whitelistIds: policy_exports.zWhitelistIds.optional()
1658
- });
1659
- var zClassicGovRuleData = zBaseGovRuleData.extend({
1660
- operationType: zClassicOperationType.meta({ description: "Allowed operation type" })
1661
- }).meta({ description: "Account governance rule", id: "ClassicGovRuleData" });
1662
- zBaseGovRuleData.extend({
1663
- operationType: zOperationType.meta({ description: "Allowed operation type" })
1664
- }).meta({ description: "Governance rule", id: "GovRuleResponse" });
1665
- ({
1666
- reviewConfigs: { include: review_config_exports.INCLUDE_MEMBERS }
1870
+ z13.array(zTradelinkWhitelistAddress);
1871
+ var zTradelinkId = z13.string().meta({ description: "Unique identifier in Tradelink service" });
1872
+ var zTradelinkOrgEntityResponse = z13.object({
1873
+ tradelinkId: zTradelinkId,
1874
+ name: z13.string().meta({ description: "Name" }),
1875
+ code: z13.string().meta({ description: "Code" }),
1876
+ logoUrl: z13.string().meta({ description: "Logo URL" })
1667
1877
  });
1668
- var zPolicyName = z11.string().min(1).max(19).meta({ description: "Policy name" });
1669
- var zCurrency2 = z11.string().min(1).max(40).regex(/^\w+$/).meta({ description: "Currency" });
1670
- var zCreatePublicPolicyRequestData = z11.object({
1671
- name: zPolicyName,
1672
- description: z11.string().nullable().meta({ description: "Description" }),
1673
- currency: zCurrency2.nullable(),
1674
- govRules: z11.array(zClassicGovRuleData).meta({ description: "Governance rules" })
1878
+ zTradelinkOrgEntityResponse.omit({
1879
+ tradelinkId: true
1675
1880
  });
1676
- var zEditPublicPolicyRequestData = z11.object({
1677
- name: zPolicyName,
1678
- description: z11.string().nullable().meta({ description: "Description" }),
1679
- govRules: z11.array(zClassicGovRuleData).meta({ description: "Governance rules" })
1881
+ z13.object({
1882
+ tradelinkId: zTradelinkId
1680
1883
  });
1681
- var zAccountName = z11.string().min(1).max(40).meta({ description: "Account name" });
1682
- var zSignDigestsGovRuleData = z11.object({
1683
- operationType: z11.literal("SIGN_DIGESTS"),
1684
- reviewSteps: zReviewStepWithUsersArray
1685
- // we need to control for API users only
1686
- }).meta({ description: "Digest signing rule" });
1687
- var zAccountPolicyRequestData = z11.union([
1688
- z11.object({ policyId: z11.string() }).meta({ description: "Account policy" }),
1689
- z11.object({ rules: z11.array(zClassicGovRuleData) }).meta({ description: "Account governance rules" })
1690
- ]).meta({ description: "Account policy or governance rules" });
1691
- var zCreateAccountGovernanceData = z11.discriminatedUnion("type", [
1692
- z11.object({
1693
- type: z11.literal(AccountGovernanceType.CLASSIC),
1694
- policy: zAccountPolicyRequestData
1695
- }).meta({ description: "Classic governance" }),
1696
- z11.object({
1697
- type: z11.literal(AccountGovernanceType.TRADELINK),
1698
- assetManagerId: z11.string(),
1699
- exchangeConfigs: zTradelinkExchangeConfigs
1700
- }).meta({ description: "Tradelink governance" }),
1701
- z11.object({
1702
- type: z11.literal(AccountGovernanceType.RAW_SIGNING),
1703
- policy: z11.object({ rules: z11.array(zSignDigestsGovRuleData) })
1704
- }).meta({ description: "Raw signing governance" })
1705
- ]).meta({ description: "Governance fields" });
1706
- var zCreateAccountUserInputData = z11.object({
1707
- name: zAccountName,
1708
- currency: zCurrencyString,
1709
- // "bitcoin"
1710
- index: z11.number().nonnegative().optional().meta({ description: "Account index" }),
1711
- contractAddress: z11.string().min(1).optional().meta({ description: "Account contract address" }),
1712
- governance: zCreateAccountGovernanceData
1884
+ var zTradelinkExchangeConfig = z13.object({
1885
+ exchangeId: z13.string().meta({ description: "Tradelink exchange id" }),
1886
+ repledgeAuthorized: z13.boolean().meta({
1887
+ description: "Determines whether this exchange is authorized to repledge on this account"
1888
+ }),
1889
+ needsAssetManagerApprovalForSettlements: z13.boolean().meta({
1890
+ description: 'Determines whether asset manager will "pre-approve" the settlement requests on this account'
1891
+ })
1713
1892
  });
1714
- var zCreateAccountRequestData = zCreateAccountUserInputData.omit({ index: true }).extend({
1715
- index: z11.number().nonnegative().meta({ description: "Account index" }),
1716
- derivationPath: z11.string().meta({ description: "Account bip44 derivation path" }),
1717
- type: z11.enum(AccountType)
1718
- // "BITCOIN_LIKE"
1719
- }).meta({
1720
- description: "Create account request data",
1721
- id: "CreateAccountRequestData"
1893
+ var zTradelinkExchangeConfigs = z13.array(zTradelinkExchangeConfig);
1894
+ z13.object({
1895
+ workspaceName: zWorkspaceName,
1896
+ custodian: z13.object({ name: z13.string() }),
1897
+ assetManagers: z13.array(z13.object({ name: z13.string() })),
1898
+ exchanges: z13.array(z13.object({ name: z13.string() }))
1722
1899
  });
1723
- var zEditAccountGovernanceData = z11.discriminatedUnion("type", [
1724
- z11.object({
1725
- type: z11.literal(AccountGovernanceType.CLASSIC),
1726
- policy: zAccountPolicyRequestData
1727
- }).meta({ description: "Classic governance" }),
1728
- z11.object({
1729
- type: z11.literal(AccountGovernanceType.TRADELINK),
1730
- exchangeConfigs: zTradelinkExchangeConfigs
1731
- }).meta({ description: "Tradelink governance" }),
1732
- z11.object({
1733
- type: z11.literal(AccountGovernanceType.RAW_SIGNING),
1734
- policy: z11.object({ rules: z11.array(zSignDigestsGovRuleData) })
1735
- }).meta({ description: "Raw signing governance" })
1736
- ]).meta({ description: "Governance fields" });
1737
- var zEditAccountRequestData = z11.object({
1738
- name: zAccountName,
1739
- governance: zEditAccountGovernanceData
1740
- }).meta({
1741
- description: "Edit account request data",
1742
- id: "EditAccountRequestData"
1900
+ z13.object({
1901
+ tradelinkId: z13.string(),
1902
+ workspaceName: zWorkspaceName,
1903
+ custodian: zTradelinkOrgEntityResponse,
1904
+ assetManagers: z13.array(zTradelinkOrgEntityResponse),
1905
+ exchanges: z13.array(zTradelinkOrgEntityResponse)
1743
1906
  });
1744
- var zEditTokenRuleRequestData = z11.object({
1745
- parentAccountId: z11.string().min(1).meta({ description: "Parent account unique ID" }),
1746
- contractAddress: z11.string().min(1).meta({ description: "Token contract address" }),
1747
- rules: z11.array(zClassicGovRuleData).meta({ description: "Account governance rules" })
1907
+ var zTradelinkAsset = z13.object({
1908
+ name: z13.string(),
1909
+ magnitude: z13.number().int().nonnegative()
1748
1910
  });
1749
-
1750
- // src/accounts/app-utils.ts
1751
- var getAccountAssetFields = (account) => {
1752
- switch (account.type) {
1753
- case AccountType.BITCOIN_LIKE:
1754
- return {
1755
- type: account.type,
1756
- xpub: account.xpub
1757
- };
1758
- case AccountType.ETHEREUM_LIKE:
1759
- return {
1760
- type: account.type,
1761
- address: account.address,
1762
- contractAddress: account.contractAddress
1763
- };
1764
- case AccountType.CARDANO_LIKE:
1765
- return {
1766
- type: account.type,
1767
- address: account.address
1768
- };
1769
- case AccountType.SOLANA_LIKE:
1770
- return {
1771
- type: account.type,
1772
- address: account.address,
1773
- contractAddress: account.contractAddress
1774
- };
1775
- case AccountType.TEZOS_LIKE:
1776
- return {
1777
- type: account.type,
1778
- address: account.address
1779
- };
1780
- case AccountType.STELLAR_LIKE:
1781
- return {
1782
- type: account.type,
1783
- address: account.address
1784
- };
1785
- case AccountType.SUI_LIKE:
1786
- return {
1787
- type: account.type,
1788
- address: account.address
1789
- };
1790
- case AccountType.RIPPLE_LIKE:
1791
- return {
1792
- type: account.type,
1793
- address: account.address
1794
- };
1795
- case AccountType.POLKADOT_LIKE:
1796
- return {
1797
- type: account.type,
1798
- address: account.address
1799
- };
1800
- case AccountType.TRON_LIKE:
1801
- return {
1802
- type: account.type,
1803
- address: account.address,
1804
- contractAddress: account.contractAddress
1805
- };
1806
- case AccountType.GENERIC_LIKE:
1807
- case AccountType.RAW_SIGNING:
1808
- return {
1809
- type: account.type
1810
- };
1811
- case AccountType.CANTON_LIKE:
1812
- return {
1813
- type: account.type,
1814
- address: account.address
1815
- };
1816
- /* v8 ignore start */
1817
- default:
1818
- unreachable(account.type);
1819
- }
1820
- };
1821
- var getAccountGovernanceFields = (account) => {
1822
- switch (account.governanceType) {
1823
- case AccountGovernanceType.CLASSIC:
1824
- case AccountGovernanceType.RAW_SIGNING:
1825
- return {
1826
- type: AccountGovernanceType.CLASSIC,
1827
- policyId: account.classicGovernanceMixin.policyId
1828
- };
1829
- case AccountGovernanceType.TRADELINK:
1830
- return {
1831
- type: AccountGovernanceType.TRADELINK,
1832
- assetManagerId: account.tradelinkGovernanceMixin.assetManagerId,
1833
- exchangeConfigs: zTradelinkExchangeConfigs.parse(
1834
- account.tradelinkGovernanceMixin.exchangeConfigs
1835
- )
1836
- };
1837
- /* v8 ignore start */
1838
- default:
1839
- unreachable(account.governanceType);
1840
- }
1841
- };
1842
- var serializeAccount = (account) => {
1843
- const asset = getAccountAssetFields(account);
1844
- const governance = getAccountGovernanceFields(account);
1845
- const response = {
1846
- ...account,
1847
- network: account.currency,
1848
- legacyId: account.gateId,
1849
- governance,
1850
- asset
1851
- };
1852
- return zAccountResponse.parse(response);
1853
- };
1854
-
1855
- // src/compat/patch-request-expired-at.ts
1856
- var patchRequestExpiredAt = (data) => ({
1857
- ...data,
1858
- expiredAt: data.expiresAt
1911
+ z13.object({
1912
+ tradelinkId: zTradelinkId,
1913
+ asset: zTradelinkAsset,
1914
+ state: z13.enum([
1915
+ "PLEDGE_READY",
1916
+ "PLEDGE_INCREMENT_PENDING_APPROVAL",
1917
+ "PLEDGE_APPROVED",
1918
+ "PLEDGE_REJECTED",
1919
+ "UNPLEDGE_PENDING_APPROVAL",
1920
+ "UNPLEDGE_APPROVED",
1921
+ "UNPLEDGE_REJECTED",
1922
+ "REPLEDGE_PENDING_APPROVAL",
1923
+ "REPLEDGE_APPROVED",
1924
+ "REPLEDGE_REJECTED",
1925
+ "ASSIGNED_TO_SETTLEMENT",
1926
+ "OUTBOUND_TRANSACTION_CONFIRMED",
1927
+ "OUTBOUND_TRANSACTION_FAILED",
1928
+ "RECOVERING_FROM_FAILURE",
1929
+ "PLEDGE_CONSUMED"
1930
+ ]),
1931
+ isLocked: z13.boolean(),
1932
+ amount: z13.string().meta({ description: "Currently pledged amount" }),
1933
+ pending: z13.string().meta({ description: "Requested pledge increment, not yet approved" }),
1934
+ repledge: z13.string().meta({ description: "TODO: describe this field" }),
1935
+ exchangeTradelinkId: z13.string(),
1936
+ accountId: z13.string()
1937
+ });
1938
+ z13.object({
1939
+ workspaceName: z13.string(),
1940
+ clientAccountId: z13.string().meta({ description: "Account ID from the client side" }),
1941
+ exchangeTradelinkId: zTradelinkId,
1942
+ asset: zTradelinkAsset
1859
1943
  });
1860
- var patchTezosRequestData = (data) => {
1861
- if (data.type !== RequestType.CREATE_TRANSACTION) {
1862
- return data;
1863
- }
1864
- const transaction = get(data, ["data", "transaction"]);
1865
- if (!isRecord(transaction)) {
1866
- return data;
1867
- }
1868
- if (transaction.type === "TEZOS_LIKE_DELEGATE") {
1869
- transaction.amount = transaction.amount ?? "0";
1870
- } else if (transaction.type === "TEZOS_LIKE_UNDELEGATE") {
1871
- transaction.amount = transaction.amount ?? "0";
1872
- transaction.recipient = transaction.recipient ?? "0";
1873
- }
1874
- return data;
1875
- };
1876
- var zSciConfigData = z11.object({
1877
- dapps: z11.array(z11.string()).nullable().meta({ description: "Allowed DApps, null allows all" }),
1878
- customContractCallEnabled: z11.boolean().meta({ description: "Allow non-DApp SCI" })
1944
+ z13.object({
1945
+ pledgeTradelinkId: zTradelinkId,
1946
+ amount: zUnsignedIntString,
1947
+ asset: zTradelinkAsset
1879
1948
  });
1880
- var zCreateSciConfigRequestData = z11.object({
1881
- account: z11.string().meta({ description: "Account UUID" }),
1882
- config: zSciConfigData
1949
+ z13.object({
1950
+ tradelinkId: z13.string(),
1951
+ pledgeTradelinkId: z13.string(),
1952
+ state: z13.enum([
1953
+ "REGISTERED",
1954
+ "PENDING_REPLEDGE_CREATION_APPROVAL",
1955
+ "PENDING_REPLEDGE_APPROVAL",
1956
+ "PENDING_CREATION_APPROVAL",
1957
+ "PENDING_PRE_APPROVAL",
1958
+ "PRE_APPROVED",
1959
+ "APPROVED",
1960
+ "REJECTED",
1961
+ "CONFIRMED",
1962
+ "FAILED",
1963
+ "CANCELED"
1964
+ ]),
1965
+ // For now we only consider the outbound settlement
1966
+ outboundTransactionHash: z13.string().nullable()
1883
1967
  });
1884
- var zEditSciConfigRequestData = z11.object({
1885
- config: zSciConfigData
1968
+ var zTradelinkActivateAccountRequestData = z13.null();
1969
+ var zTradelinkCustodianRequestData = z13.object({
1970
+ settlement: zReviewStepWithUsersArray.meta({ description: "List of settlement review steps" }),
1971
+ withdraw: zReviewStepWithUsersArray.meta({ description: "List of withdraw review steps" }),
1972
+ arbitration: zReviewStepWithUsersArray.meta({ description: "List of arbitration review steps" })
1886
1973
  });
1887
- var zRequestReviewStep = z.object({
1888
- stageName: z.string().regex(/^\w+$/).meta({ description: "The review stage name" }),
1889
- quorum: z.int().min(1).meta({ description: "Quorum for the review step" })
1974
+ var zTradelinkEntityRequestData = z13.object({
1975
+ tradelinkId: z13.string().min(1),
1976
+ groups: zReviewStepWithUsersArray.meta({ description: "List of asset manager review groups" }),
1977
+ whitelist: z13.array(zTradelinkWhitelistAddress).meta({ description: "List of asset manager whitelisted addresses" })
1890
1978
  });
1891
- var zRequestReviewSteps = z.array(zRequestReviewStep);
1892
- var zGroupName = z11.string().min(1).max(19).meta({ description: "Group name" });
1893
- var zCreateGroupRequestData = z11.object({
1894
- name: zGroupName,
1895
- description: z11.string().nullable().meta({ description: "Group description" }),
1896
- members: z11.array(z11.string()).meta({ description: "List of group members ids" })
1979
+ var zTradelinkAdjustPledgeRequestData = z13.object({
1980
+ accountId: z13.string().meta({ description: "Account id" }),
1981
+ exchangeId: z13.string().meta({ description: "Exchange id" }),
1982
+ amount: zIntString.meta({ description: "Amount to add to pledge" })
1897
1983
  });
1898
- var zEditGroupRequestData = z11.object({
1899
- name: zGroupName,
1900
- description: z11.string().nullable().meta({ description: "Group description" }),
1901
- members: z11.array(z11.string()).meta({ description: "List of group members ids" })
1984
+ var zTradelinkRepledgeRequestData = z13.object({
1985
+ accountId: z13.string().meta({ description: "Account id" }),
1986
+ exchangeId: z13.string().meta({ description: "Exchange id" }),
1987
+ amount: zIntString.meta({ description: "Amount to add to pledge" })
1902
1988
  });
1903
- var zApiKeyName = z11.string().min(1).max(19).meta({ description: "API key name" });
1904
- var zCreateApiKeyRequestData = z11.object({
1905
- name: zApiKeyName,
1906
- entities: z11.array(z11.string()).meta({ description: "List of related entities ids" }),
1907
- scopes: z11.object({}).meta({ description: "FIXME to be precised" })
1908
- }).meta({ description: "Create read-only API key request data" });
1909
- var zEditApiKeyRequestData = zCreateApiKeyRequestData.meta({
1910
- description: "Edit read-only API key request data"
1989
+ var zTradelinkCreateSettlementRequestData = z13.object({
1990
+ accountId: z13.string().meta({ description: "Account id" }),
1991
+ exchangeId: z13.string().meta({ description: "Exchange id" }),
1992
+ transaction: zSendOnlyTransactionData
1911
1993
  });
1912
- var zEntityName = z11.string().min(1).max(19).meta({ description: "Entity name" });
1913
- var zCreateEntityRequestData = z11.object({
1914
- name: zEntityName,
1915
- accounts: z11.array(z11.string())
1994
+ var zTradelinkForceUnpledgeRequestData = z13.object({
1995
+ accountId: z13.string().meta({ description: "Account id" }),
1996
+ exchangeId: z13.string().meta({ description: "Exchange id" })
1916
1997
  });
1917
- var zEditEntityRequestData = z11.object({
1918
- name: zEntityName,
1919
- accounts: z11.array(z11.string())
1998
+ var zTradelinkWithdrawRequestData = z13.object({
1999
+ accountId: z13.string().meta({ description: "Account id" }),
2000
+ transaction: zSendOnlyTransactionData
1920
2001
  });
1921
-
1922
- // src/requests/request-data.ts
1923
- var zVaultRequestMixinsByType = {
1924
- // Workspaces
1925
- [RequestType.UPDATE_QUORUM]: z11.object({
1926
- type: z11.literal(RequestType.UPDATE_QUORUM),
1927
- data: zUpdateQuorumRequestData
1928
- }),
1929
- // Operator requests
1930
- [RequestType.CREATE_TRANSACTION]: z11.object({
1931
- type: z11.literal(RequestType.CREATE_TRANSACTION),
1932
- data: zCreateTransactionRequestData,
1933
- meta: z11.object({
1934
- hash: z11.string().nullable()
1935
- }).optional().nullable()
1936
- }),
1937
- [RequestType.SIGN_MESSAGE]: z11.object({
1938
- type: z11.literal(RequestType.SIGN_MESSAGE),
1939
- data: zSignMessageRequestData
1940
- }),
1941
- [RequestType.SIGN_DIGESTS]: z11.object({
1942
- type: z11.literal(RequestType.SIGN_DIGESTS),
1943
- data: zSignDigestsRequestData
1944
- }),
1945
- // Accounts
1946
- [RequestType.CREATE_ACCOUNT]: z11.object({
1947
- type: z11.literal(RequestType.CREATE_ACCOUNT),
1948
- data: zCreateAccountRequestData
1949
- }),
1950
- [RequestType.EDIT_ACCOUNT]: z11.object({
1951
- type: z11.literal(RequestType.EDIT_ACCOUNT),
1952
- targetId: z11.string(),
1953
- data: zEditAccountRequestData
1954
- }),
1955
- [RequestType.EDIT_TOKEN_RULE]: z11.object({
1956
- type: z11.literal(RequestType.EDIT_TOKEN_RULE),
1957
- targetId: z11.string(),
1958
- data: zEditTokenRuleRequestData
1959
- }),
1960
- // Groups
1961
- [RequestType.CREATE_GROUP]: z11.object({
1962
- type: z11.literal(RequestType.CREATE_GROUP),
1963
- data: zCreateGroupRequestData
1964
- }),
1965
- [RequestType.EDIT_GROUP]: z11.object({
1966
- type: z11.literal(RequestType.EDIT_GROUP),
1967
- targetId: z11.string(),
1968
- data: zEditGroupRequestData
1969
- }),
1970
- [RequestType.REVOKE_GROUP]: z11.object({
1971
- type: z11.literal(RequestType.REVOKE_GROUP),
1972
- targetId: z11.string(),
1973
- data: zRevokeUserRequestData
1974
- }),
1975
- // Whitelists
1976
- [RequestType.CREATE_WHITELIST]: z11.object({
1977
- type: z11.literal(RequestType.CREATE_WHITELIST),
1978
- data: zCreateWhitelistRequestData
1979
- }),
1980
- [RequestType.EDIT_WHITELIST]: z11.object({
1981
- type: z11.literal(RequestType.EDIT_WHITELIST),
1982
- targetId: z11.string(),
1983
- data: zEditWhitelistRequestData
1984
- }),
1985
- // Entities
1986
- [RequestType.CREATE_ENTITY]: z11.object({
1987
- type: z11.literal(RequestType.CREATE_ENTITY),
1988
- data: zCreateEntityRequestData
1989
- }),
1990
- [RequestType.EDIT_ENTITY]: z11.object({
1991
- type: z11.literal(RequestType.EDIT_ENTITY),
1992
- data: zEditEntityRequestData
1993
- }),
1994
- [RequestType.REVOKE_ENTITY]: z11.object({
1995
- type: z11.literal(RequestType.REVOKE_ENTITY),
1996
- data: z11.object({})
1997
- }),
1998
- // Users
1999
- [RequestType.CREATE_PSD_USER]: z11.object({
2000
- type: z11.literal(RequestType.CREATE_PSD_USER),
2001
- data: zCreatePsdUserRequestData
2002
+ var zTradelinkArbitrationRequestData = z13.object({
2003
+ accountId: z13.string().meta({ description: "Account id" }),
2004
+ transaction: zSendOnlyTransactionData
2005
+ });
2006
+ var zTradelinkRequestMixinsByType = {
2007
+ [RequestType.TRADELINK_ACTIVATE_ACCOUNT]: z13.object({
2008
+ type: z13.literal(RequestType.TRADELINK_ACTIVATE_ACCOUNT),
2009
+ targetId: z13.string(),
2010
+ data: zTradelinkActivateAccountRequestData
2002
2011
  }),
2003
- [RequestType.CREATE_API_USER]: z11.object({
2004
- type: z11.literal(RequestType.CREATE_API_USER),
2005
- data: zCreateApiUserRequestData
2012
+ [RequestType.TRADELINK_CREATE_CUSTODIAN]: z13.object({
2013
+ type: z13.literal(RequestType.TRADELINK_CREATE_CUSTODIAN),
2014
+ data: zTradelinkCustodianRequestData
2006
2015
  }),
2007
- [RequestType.CREATE_API_USER_ACCESS]: z11.object({
2008
- type: z11.literal(RequestType.CREATE_API_USER_ACCESS),
2009
- data: zCreateApiUserAccessRequestData
2016
+ [RequestType.TRADELINK_EDIT_CUSTODIAN]: z13.object({
2017
+ type: z13.literal(RequestType.TRADELINK_EDIT_CUSTODIAN),
2018
+ targetId: z13.string(),
2019
+ data: zTradelinkCustodianRequestData
2010
2020
  }),
2011
- [RequestType.REVOKE_USER]: z11.object({
2012
- type: z11.literal(RequestType.REVOKE_USER),
2013
- targetId: z11.string(),
2014
- data: zRevokeUserRequestData
2021
+ [RequestType.TRADELINK_CREATE_EXCHANGE]: z13.object({
2022
+ type: z13.literal(RequestType.TRADELINK_CREATE_EXCHANGE),
2023
+ data: zTradelinkEntityRequestData
2015
2024
  }),
2016
- // Admin gov rules
2017
- [RequestType.EDIT_WORKSPACE_RULE]: z11.object({
2018
- type: z11.literal(RequestType.EDIT_WORKSPACE_RULE),
2019
- data: zWorkspaceRuleRequestData
2025
+ [RequestType.TRADELINK_EDIT_EXCHANGE]: z13.object({
2026
+ type: z13.literal(RequestType.TRADELINK_EDIT_EXCHANGE),
2027
+ targetId: z13.string(),
2028
+ data: zTradelinkEntityRequestData
2020
2029
  }),
2021
- // SCI configs
2022
- [RequestType.CREATE_SCICONFIG]: z11.object({
2023
- type: z11.literal(RequestType.CREATE_SCICONFIG),
2024
- data: zCreateSciConfigRequestData
2030
+ [RequestType.TRADELINK_CREATE_ASSET_MANAGER]: z13.object({
2031
+ type: z13.literal(RequestType.TRADELINK_CREATE_ASSET_MANAGER),
2032
+ data: zTradelinkEntityRequestData
2025
2033
  }),
2026
- [RequestType.EDIT_SCICONFIG]: z11.object({
2027
- type: z11.literal(RequestType.EDIT_SCICONFIG),
2028
- data: zEditSciConfigRequestData
2034
+ [RequestType.TRADELINK_EDIT_ASSET_MANAGER]: z13.object({
2035
+ type: z13.literal(RequestType.TRADELINK_EDIT_ASSET_MANAGER),
2036
+ targetId: z13.string(),
2037
+ data: zTradelinkEntityRequestData
2029
2038
  }),
2030
- // API keys
2031
- [RequestType.CREATE_API_KEY]: z11.object({
2032
- type: z11.literal(RequestType.CREATE_API_KEY),
2033
- data: zCreateApiKeyRequestData
2039
+ [RequestType.TRADELINK_ADJUST_PLEDGE]: z13.object({
2040
+ type: z13.literal(RequestType.TRADELINK_ADJUST_PLEDGE),
2041
+ data: zTradelinkAdjustPledgeRequestData
2034
2042
  }),
2035
- [RequestType.EDIT_API_KEY]: z11.object({
2036
- type: z11.literal(RequestType.EDIT_API_KEY),
2037
- data: zEditApiKeyRequestData
2043
+ [RequestType.TRADELINK_REPLEDGE]: z13.object({
2044
+ type: z13.literal(RequestType.TRADELINK_REPLEDGE),
2045
+ data: zTradelinkRepledgeRequestData
2038
2046
  }),
2039
- [RequestType.REVOKE_API_KEY]: z11.object({
2040
- type: z11.literal(RequestType.REVOKE_API_KEY),
2041
- data: z11.object({})
2047
+ [RequestType.TRADELINK_CREATE_SETTLEMENT]: z13.object({
2048
+ type: z13.literal(RequestType.TRADELINK_CREATE_SETTLEMENT),
2049
+ data: zTradelinkCreateSettlementRequestData,
2050
+ meta: z13.object({
2051
+ hash: z13.string().nullable()
2052
+ }).optional().nullable()
2042
2053
  }),
2043
- // Policies
2044
- [RequestType.CREATE_POLICY]: z11.object({
2045
- type: z11.literal(RequestType.CREATE_POLICY),
2046
- data: zCreatePublicPolicyRequestData
2054
+ [RequestType.TRADELINK_FORCE_UNPLEDGE]: z13.object({
2055
+ type: z13.literal(RequestType.TRADELINK_FORCE_UNPLEDGE),
2056
+ data: zTradelinkForceUnpledgeRequestData
2047
2057
  }),
2048
- [RequestType.EDIT_POLICY]: z11.object({
2049
- type: z11.literal(RequestType.EDIT_POLICY),
2050
- targetId: z11.string(),
2051
- data: zEditPublicPolicyRequestData
2058
+ [RequestType.TRADELINK_WITHDRAW]: z13.object({
2059
+ type: z13.literal(RequestType.TRADELINK_WITHDRAW),
2060
+ data: zTradelinkWithdrawRequestData,
2061
+ meta: z13.object({
2062
+ hash: z13.string().nullable()
2063
+ }).optional().nullable()
2052
2064
  }),
2053
- // Tradelink-related requests
2054
- ...zTradelinkRequestMixinsByType
2065
+ [RequestType.TRADELINK_ARBITRATE]: z13.object({
2066
+ type: z13.literal(RequestType.TRADELINK_ARBITRATE),
2067
+ data: zTradelinkArbitrationRequestData,
2068
+ meta: z13.object({
2069
+ hash: z13.string().nullable()
2070
+ }).optional().nullable()
2071
+ })
2055
2072
  };
2056
2073
 
2057
- // src/requests/app-types.ts
2058
- var zRequestReviewResponse = z11.object({
2059
- // Note: Do NOT include `quorum` as it is already available in the request's `reviewSteps` field.
2060
- stepIndex: z11.number().int().meta({ description: "Index of the governance step in the request workflow" }),
2061
- userId: z11.string().meta({ description: "Reviewer id" }),
2062
- status: z11.enum(RequestReviewStatus).meta({ description: "Review status" }),
2063
- createdAt: z11.coerce.date().meta({ description: "Created date" }),
2064
- updatedAt: z11.coerce.date().meta({ description: "Updated date" })
2065
- });
2066
- var zVaultRequestCommonMixin = z11.object({
2067
- id: z11.string().meta({ description: "Request unique identifier" }),
2068
- legacyId: z11.number().meta({ description: "Legacy internal unique identifier (for retro-compatibility)" }),
2069
- state: z11.enum(RequestState).meta({ description: "Request state" }),
2070
- reviewSteps: zRequestReviewSteps.meta({ description: "Request review steps" }),
2071
- currentStepIndex: z11.number().int().min(0).meta({ description: "Index of the current approval step" }),
2072
- expiresAt: z11.coerce.date().meta({ description: "Request expiration date" }),
2073
- expiredAt: z11.coerce.date().optional().meta({ description: "Deprecated: use expiresAt" }),
2074
- targetId: z11.string().nullable().meta({ description: "Optional ID of the target object" }),
2075
- note: zNote.nullable().meta({ description: "Optional request note" }),
2076
- reviews: z11.array(zRequestReviewResponse).meta({ description: "Requests reviews" }),
2077
- // `type` and `data` are correlated -- See `zVaultRequestMixinsByType`
2078
- createdAt: z11.coerce.date().meta({ description: "Creation timestamp" }),
2079
- updatedAt: z11.coerce.date().meta({ description: "Last modification timestamp" }),
2080
- createdById: z11.string().meta({ description: "ID of the user who created the request" }),
2081
- // `inflight` is fetched from ONGOING RequestSaga
2082
- inflight: z11.object({
2083
- lastError: z11.string().nullable().meta({ description: "Error message from the last failure" }),
2084
- numFailed: z11.number().int().meta({ description: "Number of failures so far" }),
2085
- retryAfter: z11.coerce.date().meta({ description: "Date after which next retry is scheduled" })
2086
- }).optional().meta({ description: "Extra information if the request is currently being processed" })
2074
+ // src/accounts/account-governance-fields.ts
2075
+ var zClassicAccountGovernanceFields = z.object({
2076
+ type: z.literal(AccountGovernanceType.CLASSIC).meta({ description: "Classic account governance" }),
2077
+ policyId: z.string().meta({ description: "Identifier of corresponding governance policy" })
2078
+ }).meta({ description: "Classic" });
2079
+ var zTradelinkAccountGovernanceFields = z.object({
2080
+ type: z.literal(AccountGovernanceType.TRADELINK).meta({ description: "Tradelink account governance" }),
2081
+ assetManagerId: z.string().meta({ description: "Identifier of corresponding asset manager" }),
2082
+ exchangeConfigs: zTradelinkExchangeConfigs.meta({
2083
+ description: "Tradelink exchange configurations"
2084
+ })
2085
+ }).meta({ description: "Tradelink" });
2086
+ var zAccountGovernanceFields = z.discriminatedUnion("type", [zClassicAccountGovernanceFields, zTradelinkAccountGovernanceFields]).meta({ description: "Governance fields" });
2087
+
2088
+ // src/accounts/types.ts
2089
+ var zAccountCommonFields = z13.object({
2090
+ id: z13.string().meta({ description: "Internal unique identifier" }),
2091
+ legacyId: z13.number().meta({ description: "Legacy internal unique identifier (for retro-compatibility)" }),
2092
+ name: z13.string().meta({ description: "Name" }),
2093
+ currency: zCurrencyString,
2094
+ network: zNetwork,
2095
+ contractAddress: z13.string().nullable().meta({ description: "Token contract address for Token account" }),
2096
+ index: z13.number().gte(0).meta({ description: "BIP44 account index" }),
2097
+ derivationPath: z13.string().meta({ description: "Derivation path" }),
2098
+ status: z13.enum(ActivationStatus).meta({ description: "Status" }),
2099
+ createdAt: z13.coerce.date().meta({ description: "Creation timestamp" }),
2100
+ updatedAt: z13.coerce.date().meta({ description: "Last modification timestamp" })
2101
+ });
2102
+ var zRawSigningAssetFields = z13.object({ type: z13.literal(AccountType.RAW_SIGNING).meta({ description: "Account type" }) }).meta({ description: "Raw signing account" });
2103
+ var zAccountAssetFields = z13.discriminatedUnion("type", [zRawSigningAssetFields, ...zNetworkAssetFields.options]).meta({ description: "Account asset fields" });
2104
+ var zAccountResponse = zAccountCommonFields.extend({
2105
+ asset: zAccountAssetFields,
2106
+ governance: zAccountGovernanceFields
2087
2107
  });
2088
- var allowedRequestCreationInputByType = {
2089
- [RequestType.UPDATE_QUORUM]: zVaultRequestMixinsByType[RequestType.UPDATE_QUORUM],
2090
- [RequestType.CREATE_PSD_USER]: zVaultRequestMixinsByType[RequestType.CREATE_PSD_USER],
2091
- [RequestType.CREATE_API_USER]: zVaultRequestMixinsByType[RequestType.CREATE_API_USER],
2092
- [RequestType.CREATE_GROUP]: zVaultRequestMixinsByType[RequestType.CREATE_GROUP],
2093
- [RequestType.EDIT_GROUP]: zVaultRequestMixinsByType[RequestType.EDIT_GROUP],
2094
- [RequestType.CREATE_WHITELIST]: zVaultRequestMixinsByType[RequestType.CREATE_WHITELIST],
2095
- [RequestType.EDIT_WHITELIST]: zVaultRequestMixinsByType[RequestType.EDIT_WHITELIST],
2096
- [RequestType.CREATE_TRANSACTION]: zVaultRequestMixinsByType[RequestType.CREATE_TRANSACTION],
2097
- [RequestType.SIGN_MESSAGE]: z11.object({
2098
- type: z11.literal(RequestType.SIGN_MESSAGE),
2099
- data: zSignMessageUserInputData
2100
- }),
2101
- [RequestType.CREATE_POLICY]: zVaultRequestMixinsByType[RequestType.CREATE_POLICY],
2102
- [RequestType.EDIT_POLICY]: zVaultRequestMixinsByType[RequestType.EDIT_POLICY],
2103
- [RequestType.CREATE_ACCOUNT]: z11.object({
2104
- type: z11.literal(RequestType.CREATE_ACCOUNT),
2105
- data: zCreateAccountUserInputData
2106
- }),
2107
- [RequestType.EDIT_ACCOUNT]: zVaultRequestMixinsByType[RequestType.EDIT_ACCOUNT],
2108
- [RequestType.TRADELINK_ACTIVATE_ACCOUNT]: zVaultRequestMixinsByType[RequestType.TRADELINK_ACTIVATE_ACCOUNT],
2109
- [RequestType.TRADELINK_CREATE_CUSTODIAN]: zVaultRequestMixinsByType[RequestType.TRADELINK_CREATE_CUSTODIAN],
2110
- [RequestType.TRADELINK_EDIT_CUSTODIAN]: zVaultRequestMixinsByType[RequestType.TRADELINK_EDIT_CUSTODIAN],
2111
- [RequestType.TRADELINK_CREATE_EXCHANGE]: zVaultRequestMixinsByType[RequestType.TRADELINK_CREATE_EXCHANGE],
2112
- [RequestType.TRADELINK_EDIT_EXCHANGE]: zVaultRequestMixinsByType[RequestType.TRADELINK_EDIT_EXCHANGE],
2113
- [RequestType.TRADELINK_CREATE_ASSET_MANAGER]: zVaultRequestMixinsByType[RequestType.TRADELINK_CREATE_ASSET_MANAGER],
2114
- [RequestType.TRADELINK_EDIT_ASSET_MANAGER]: zVaultRequestMixinsByType[RequestType.TRADELINK_EDIT_ASSET_MANAGER],
2115
- [RequestType.TRADELINK_ADJUST_PLEDGE]: zVaultRequestMixinsByType[RequestType.TRADELINK_ADJUST_PLEDGE],
2116
- [RequestType.TRADELINK_REPLEDGE]: zVaultRequestMixinsByType[RequestType.TRADELINK_REPLEDGE],
2117
- [RequestType.TRADELINK_FORCE_UNPLEDGE]: zVaultRequestMixinsByType[RequestType.TRADELINK_FORCE_UNPLEDGE],
2118
- [RequestType.TRADELINK_CREATE_SETTLEMENT]: zVaultRequestMixinsByType[RequestType.TRADELINK_CREATE_SETTLEMENT],
2119
- [RequestType.TRADELINK_WITHDRAW]: zVaultRequestMixinsByType[RequestType.TRADELINK_WITHDRAW],
2120
- [RequestType.TRADELINK_ARBITRATE]: zVaultRequestMixinsByType[RequestType.TRADELINK_ARBITRATE],
2121
- [RequestType.REVOKE_USER]: zVaultRequestMixinsByType[RequestType.REVOKE_USER],
2122
- [RequestType.EDIT_WORKSPACE_RULE]: zVaultRequestMixinsByType[RequestType.EDIT_WORKSPACE_RULE]
2123
- };
2124
- var zRequestCreationInputCommonMixin = z11.object({
2125
- note: zNote.optional().meta({ description: "Optional request note" })
2108
+ z13.enum([
2109
+ "name",
2110
+ "currency",
2111
+ "index",
2112
+ "createdAt",
2113
+ "updatedAt"
2114
+ ]).default("createdAt");
2115
+ var zRawSigningLiveData = zCommonLiveData.extend({
2116
+ type: z13.literal(AccountType.RAW_SIGNING).meta({ description: "Account type" })
2117
+ }).meta({ description: "Raw signing account" });
2118
+ z13.discriminatedUnion("type", [
2119
+ zRawSigningLiveData,
2120
+ ...zAccountLiveData.options
2121
+ ]);
2122
+ z13.object({
2123
+ address: z13.string().meta({ description: "Address" }),
2124
+ derivationPath: z13.string().nullable().meta({ description: "Derivation path" })
2126
2125
  });
2127
- z11.object({
2128
- request: z11.discriminatedUnion(
2129
- "type",
2130
- ensureNonEmptyArray(
2131
- Object.values(allowedRequestCreationInputByType).map((_) => {
2132
- const requestType = _.shape.type.value;
2133
- return _.extend(zRequestCreationInputCommonMixin.shape).meta({
2134
- description: `${requestType} request data`
2135
- });
2126
+ z13.object({
2127
+ amount: zIntString.meta({ description: "Amount in the smallest unit of the currency" }),
2128
+ currency: zCurrency
2129
+ });
2130
+ z13.object({
2131
+ id: z13.string().nonempty().meta({ description: "Staking position ID (if applicable)" }),
2132
+ validator: z13.string().nonempty().meta({ description: "Validator address" }),
2133
+ state: z13.enum(["ACTIVE", "INACTIVE", "ACTIVATING", "DEACTIVATING", "UNKNOWN"]).meta({ description: "Stake state" }),
2134
+ staked: z13.string().meta({ description: "Staked amount" }),
2135
+ rewards: z13.object({
2136
+ total: z13.string().meta({ description: "Total rewards" })
2137
+ })
2138
+ });
2139
+ z13.enum(["staked", "rewards", "total"]).default("total");
2140
+ z13.object({
2141
+ address: z13.string().meta({ description: "Validator address" }),
2142
+ apy: z13.string().nullable().meta({ description: "Validator APY" }),
2143
+ balance: z13.string().nullable().meta({ description: "Validator balance" }),
2144
+ commissionRate: z13.string().nullable().meta({ description: "Validator commission rate" }),
2145
+ description: z13.string().nullable().meta({ description: "Description" }),
2146
+ logo: z13.string().nullable().meta({ description: "Logo URL" }),
2147
+ name: z13.string().nullable().meta({ description: "Validator name" }),
2148
+ url: z13.string().nullable().meta({ description: "Validator URL" })
2149
+ });
2150
+ z13.enum(["balance"]).default("balance");
2151
+ var zMessageType = z13.enum(MessageType).meta({ description: "Type of the message to sign" });
2152
+ var zMessageData = zHexString.nonempty().meta({
2153
+ description: "Hex data to sign, either a json string for EIP712, or a raw string for EIP191"
2154
+ });
2155
+ var zMessage = z13.object({
2156
+ type: zMessageType,
2157
+ data: zMessageData
2158
+ });
2159
+ z13.object({
2160
+ id: z13.string().meta({ description: "Unique identifier" }),
2161
+ type: zMessageType,
2162
+ data: zMessageData,
2163
+ address: z13.string().meta({ description: "Address of the signing key" }),
2164
+ derivationPath: z13.string().meta({ description: "Derivation path of the signing key" }),
2165
+ signature: zHsmSignature.meta({ description: "Signature of the message" }),
2166
+ createdById: z13.string().meta({ description: "ID of the creator" }),
2167
+ createdAt: z13.coerce.date().meta({ description: "Creation timestamp" })
2168
+ }).meta({ description: "Signed message", id: "SignedMessageResponse" });
2169
+ var zCreateTransactionRequestData = z13.object({
2170
+ accountId: z13.string().min(1).meta({ description: "Target account id" }),
2171
+ transaction: zTransactionData
2172
+ }).meta({
2173
+ description: "Create transaction request data",
2174
+ id: "CreateTransactionRequestData"
2175
+ });
2176
+ var zSignMessageRequestData = z13.object({
2177
+ message: zMessage.meta({ description: "Message to sign" }),
2178
+ accountId: z13.string().min(1).meta({ description: "Target account id" }),
2179
+ address: z13.string().nonempty().meta({ description: "Address with which to sign the message" }),
2180
+ derivationPath: z13.string().nonempty().meta({ description: "Derivation path of the signing address" })
2181
+ });
2182
+ var zSignMessageUserInputData = zSignMessageRequestData.partial({
2183
+ address: true,
2184
+ derivationPath: true
2185
+ });
2186
+ var zDigestData = z13.object({
2187
+ digest: zHexString.meta({ description: "The hex string digest to sign" }),
2188
+ derivationPath: z13.string().nonempty().meta({ description: "The derivation path with which to sign the digest" })
2189
+ });
2190
+ var zSignDigestsRequestData = z13.object({
2191
+ accountId: z13.string().min(1).meta({ description: "Target account id" }),
2192
+ digests: z13.array(zDigestData).meta({ description: "The digests to sign" })
2193
+ });
2194
+ z13.object({
2195
+ signatures: z13.array(zHsmSignature)
2196
+ });
2197
+
2198
+ // src/accounts/app-types.ts
2199
+ z13.discriminatedUnion(
2200
+ zTransactionResponse._zod.def.discriminator,
2201
+ ensureNonEmptyArray(
2202
+ zTransactionResponse.options.map(
2203
+ (_) => _.extend({
2204
+ note: zNote.nullable().meta({ description: "Optional transaction note" }),
2205
+ requestId: z13.string().nullable().meta({ description: "Request ID associated with the transaction, if available" })
2136
2206
  })
2137
2207
  )
2138
2208
  )
2209
+ );
2210
+ var zWhitelistAddress = z13.object({
2211
+ name: z13.string().min(1).max(50),
2212
+ currency: zCurrencyString,
2213
+ address: z13.string().min(1).max(200),
2214
+ // Destination tags are numeric-only or alpha-numeric.
2215
+ // Empty array (or undefined) means no check on destination tag.
2216
+ destinationTags: z13.array(z13.string().min(1).regex(/^\w+$/)).optional()
2139
2217
  });
2140
- var zVaultRequestResponse = z11.discriminatedUnion(
2141
- "type",
2142
- ensureNonEmptyArray(
2143
- Object.values(zVaultRequestMixinsByType).map((_) => {
2144
- const requestType = _.shape.type.value;
2145
- return _.extend(zVaultRequestCommonMixin.shape).meta({
2146
- description: `${requestType} request`
2147
- });
2148
- })
2149
- )
2150
- ).meta({
2151
- description: "Vault request response data",
2152
- id: "VaultRequestResponse"
2218
+ var zWhitelistAddresses = z13.array(zWhitelistAddress);
2219
+ var zWhitelistName = z13.string().min(1).max(45).meta({ description: "Whitelist name" });
2220
+ var zCreateWhitelistRequestData = z13.object({
2221
+ name: zWhitelistName,
2222
+ description: z13.string().nullable(),
2223
+ addresses: zWhitelistAddresses,
2224
+ type: z13.enum(WhitelistType)
2153
2225
  });
2154
- z11.enum([
2155
- "state",
2156
- "expiresAt",
2157
- "createdAt",
2158
- "updatedAt"
2159
- ]).default("createdAt");
2160
- z11.object({
2161
- pubKey: z11.string().meta({ description: "Public key of the current user" }),
2162
- challenge: zUserChallenge.meta({
2163
- description: "Challenge data to sign with the user's private key"
2164
- })
2226
+ var zEditWhitelistRequestData = z13.object({
2227
+ name: zWhitelistName,
2228
+ addresses: zWhitelistAddresses
2165
2229
  });
2166
- var shouldHaveTargetHsmId = (request) => {
2167
- switch (request.type) {
2168
- case RequestType.CREATE_ENTITY:
2169
- case RequestType.EDIT_ENTITY:
2170
- case RequestType.REVOKE_ENTITY:
2171
- case RequestType.CREATE_SCICONFIG:
2172
- case RequestType.EDIT_SCICONFIG:
2173
- case RequestType.CREATE_API_KEY:
2174
- case RequestType.EDIT_API_KEY:
2175
- case RequestType.REVOKE_API_KEY:
2176
- case RequestType.EDIT_WORKSPACE_RULE:
2177
- case RequestType.UPDATE_QUORUM:
2178
- return false;
2179
- case RequestType.CREATE_PSD_USER:
2180
- case RequestType.CREATE_API_USER:
2181
- case RequestType.CREATE_API_USER_ACCESS:
2182
- // targeting / editing an existing `User`
2183
- case RequestType.REVOKE_USER:
2184
- case RequestType.CREATE_TRANSACTION:
2185
- case RequestType.SIGN_MESSAGE:
2186
- case RequestType.SIGN_DIGESTS:
2187
- case RequestType.CREATE_ACCOUNT:
2188
- case RequestType.EDIT_ACCOUNT:
2189
- case RequestType.TRADELINK_ACTIVATE_ACCOUNT:
2190
- case RequestType.CREATE_GROUP:
2191
- case RequestType.EDIT_GROUP:
2192
- case RequestType.REVOKE_GROUP:
2193
- case RequestType.CREATE_WHITELIST:
2194
- case RequestType.EDIT_WHITELIST:
2195
- case RequestType.CREATE_POLICY:
2196
- case RequestType.EDIT_POLICY:
2197
- case RequestType.TRADELINK_CREATE_CUSTODIAN:
2198
- case RequestType.TRADELINK_EDIT_CUSTODIAN:
2199
- case RequestType.TRADELINK_CREATE_EXCHANGE:
2200
- case RequestType.TRADELINK_EDIT_EXCHANGE:
2201
- case RequestType.TRADELINK_CREATE_ASSET_MANAGER:
2202
- case RequestType.TRADELINK_EDIT_ASSET_MANAGER:
2203
- return request.state !== RequestState.INITIAL;
2204
- case RequestType.EDIT_TOKEN_RULE:
2205
- return true;
2206
- }
2207
- };
2208
- var shouldHaveTargetId = (request) => {
2209
- switch (request.type) {
2210
- case RequestType.CREATE_API_KEY:
2211
- case RequestType.EDIT_API_KEY:
2212
- case RequestType.REVOKE_API_KEY:
2213
- return false;
2214
- case RequestType.CREATE_TRANSACTION:
2215
- case RequestType.SIGN_DIGESTS:
2216
- return false;
2217
- case RequestType.UPDATE_QUORUM:
2218
- case RequestType.CREATE_PSD_USER:
2219
- case RequestType.CREATE_API_USER:
2220
- case RequestType.CREATE_ACCOUNT:
2221
- case RequestType.CREATE_GROUP:
2222
- case RequestType.CREATE_WHITELIST:
2223
- case RequestType.CREATE_ENTITY:
2224
- case RequestType.CREATE_SCICONFIG:
2225
- case RequestType.CREATE_POLICY:
2226
- case RequestType.SIGN_MESSAGE:
2227
- case RequestType.TRADELINK_CREATE_CUSTODIAN:
2228
- case RequestType.TRADELINK_CREATE_EXCHANGE:
2229
- case RequestType.TRADELINK_CREATE_ASSET_MANAGER:
2230
- return request.state === RequestState.EXECUTED;
2231
- case RequestType.EDIT_WORKSPACE_RULE:
2232
- case RequestType.EDIT_ACCOUNT:
2233
- case RequestType.TRADELINK_ACTIVATE_ACCOUNT:
2234
- case RequestType.EDIT_TOKEN_RULE:
2235
- // EDIT_TOKEN_RULE targetId is the parent account which must always exist, even when creating new token rule.
2236
- case RequestType.EDIT_GROUP:
2237
- case RequestType.REVOKE_GROUP:
2238
- case RequestType.EDIT_WHITELIST:
2239
- case RequestType.EDIT_ENTITY:
2240
- case RequestType.REVOKE_ENTITY:
2241
- case RequestType.CREATE_API_USER_ACCESS:
2242
- case RequestType.REVOKE_USER:
2243
- case RequestType.EDIT_SCICONFIG:
2244
- case RequestType.EDIT_POLICY:
2245
- case RequestType.TRADELINK_EDIT_CUSTODIAN:
2246
- case RequestType.TRADELINK_EDIT_EXCHANGE:
2247
- case RequestType.TRADELINK_EDIT_ASSET_MANAGER:
2248
- case RequestType.TRADELINK_ADJUST_PLEDGE:
2249
- case RequestType.TRADELINK_REPLEDGE:
2250
- case RequestType.TRADELINK_CREATE_SETTLEMENT:
2251
- case RequestType.TRADELINK_FORCE_UNPLEDGE:
2252
- case RequestType.TRADELINK_WITHDRAW:
2253
- case RequestType.TRADELINK_ARBITRATE:
2254
- return true;
2255
- }
2256
- };
2257
2230
 
2258
- // src/requests/app-utils/index.ts
2259
- function serializeVaultRequest(request) {
2260
- const serialized = {
2261
- ...request,
2262
- legacyId: request.gateId
2263
- };
2264
- switch (request.type) {
2265
- case "CREATE_TRANSACTION":
2266
- case "TRADELINK_WITHDRAW":
2267
- case "TRADELINK_ARBITRATE":
2268
- case "TRADELINK_CREATE_SETTLEMENT":
2269
- Object.assign(serialized, {
2270
- meta: {
2271
- hash: request.transactionMeta?.hash ?? null
2272
- }
2273
- });
2274
- break;
2275
- }
2276
- let patched = zVaultRequestResponse.parse(serialized);
2277
- patched = patchRequestExpiredAt(patched);
2278
- patched = patchTezosRequestData(patched);
2279
- return patched;
2280
- }
2281
- var fakeUniqueName = (length = 20) => faker.string.alphanumeric({ length, casing: "lower" });
2282
- var fakeHexString = (length, casing = "upper") => faker.string.hexadecimal({ prefix: "", casing, length });
2283
- var fakePubKey = () => fakeHexString(130);
2284
- var fakeIntegerId = () => faker.number.int({ min: 1, max: 2e9 });
2285
- var fakeGateId = fakeIntegerId;
2286
- var fakeBase64String = (length) => btoa(faker.string.sample(length));
2287
- var fakePsdSignature = () => fakeBase64String(100);
2288
- var fakeJws = () => times(3, () => faker.string.hexadecimal({ prefix: "", length: 100 })).join(".");
2289
- var fakeHsmObjectId = () => faker.string.uuid();
2290
- var fakeHsmCertificate = () => ({
2291
- codeHash: fakeBase64String(10),
2292
- attestationPub: fakeBase64String(20),
2293
- certificate: fakeBase64String(20),
2294
- signature: fakeBase64String(20)
2231
+ // src/policies/db-utils.ts
2232
+ var zBaseGovRuleData = z13.object({
2233
+ // Steps of users that will need to review operations
2234
+ reviewSteps: zReviewStepsArray,
2235
+ // Optional threshold on transaction value: null `min` = 0, null `max` = +inf
2236
+ threshold: policy_exports.zThreshold.optional(),
2237
+ // Optional whitelist on transaction recipient: Empty list means no whitelist.
2238
+ whitelistIds: policy_exports.zWhitelistIds.optional()
2295
2239
  });
2296
- var fakePsdChallenge = () => ({
2297
- challengeType: "PSD",
2298
- wActions: [fakeBase64String(50), fakeBase64String(50), fakeBase64String(50)],
2299
- handshake: fakeBase64String(100),
2300
- handshakeAttestation: fakeHsmCertificate(),
2301
- partitionId: fakeBase64String(20)
2240
+ var zClassicGovRuleData = zBaseGovRuleData.extend({
2241
+ operationType: zClassicOperationType.meta({ description: "Allowed operation type" })
2242
+ }).meta({ description: "Account governance rule", id: "ClassicGovRuleData" });
2243
+ zBaseGovRuleData.extend({
2244
+ operationType: zOperationType.meta({ description: "Allowed operation type" })
2245
+ }).meta({ description: "Governance rule", id: "GovRuleResponse" });
2246
+ ({
2247
+ reviewConfigs: { include: review_config_exports.INCLUDE_MEMBERS }
2302
2248
  });
2303
- var fakeWorkspaceName = () => faker.string.alpha({ length: 8, casing: "lower" });
2304
- var injectSyncId = (obj) => {
2305
- let { syncId } = obj;
2306
- if (syncId === void 0) {
2307
- if (obj.gateType !== null && obj.gateId !== 0) {
2308
- syncId = buildGateSyncId(obj.workspaceName, obj.gateType, obj.gateId);
2309
- } else if (obj.gateType === null && obj.gateId === 0) {
2310
- syncId = faker.string.uuid();
2311
- } else {
2312
- throw new Error(`Invalid gateType and gateId: ${obj.gateType}, ${obj.gateId}`);
2313
- }
2314
- }
2315
- return { ...obj, syncId };
2316
- };
2317
- var genAssetFieldsForType = (type) => {
2318
- const hsmXpub = faker.string.hexadecimal({ prefix: "", casing: "upper", length: 66 });
2319
- const hsmChainCode = faker.string.hexadecimal({ prefix: "", casing: "upper", length: 64 });
2320
- switch (type) {
2321
- case "BITCOIN_LIKE":
2249
+ var zPolicyName = z13.string().min(1).max(19).meta({ description: "Policy name" });
2250
+ var zCurrency2 = z13.string().min(1).max(40).regex(/^\w+$/).meta({ description: "Currency" });
2251
+ var zCreatePublicPolicyRequestData = z13.object({
2252
+ name: zPolicyName,
2253
+ description: z13.string().nullable().meta({ description: "Description" }),
2254
+ currency: zCurrency2.nullable(),
2255
+ govRules: z13.array(zClassicGovRuleData).meta({ description: "Governance rules" })
2256
+ });
2257
+ var zEditPublicPolicyRequestData = z13.object({
2258
+ name: zPolicyName,
2259
+ description: z13.string().nullable().meta({ description: "Description" }),
2260
+ govRules: z13.array(zClassicGovRuleData).meta({ description: "Governance rules" })
2261
+ });
2262
+ var zAccountName = z13.string().min(1).max(40).meta({ description: "Account name" });
2263
+ z13.enum(["standalone", "legacy"]);
2264
+ var zSignDigestsGovRuleData = z13.object({
2265
+ operationType: z13.literal("SIGN_DIGESTS"),
2266
+ reviewSteps: zReviewStepWithUsersArray
2267
+ // we need to control for API users only
2268
+ }).meta({ description: "Digest signing rule" });
2269
+ var zAccountPolicyRequestData = z13.union([
2270
+ z13.object({ policyId: z13.string() }).meta({ description: "Account policy" }),
2271
+ z13.object({ rules: z13.array(zClassicGovRuleData) }).meta({ description: "Account governance rules" })
2272
+ ]).meta({ description: "Account policy or governance rules" });
2273
+ var zCreateAccountGovernanceData = z13.discriminatedUnion("type", [
2274
+ z13.object({
2275
+ type: z13.literal(AccountGovernanceType.CLASSIC),
2276
+ policy: zAccountPolicyRequestData
2277
+ }).meta({ description: "Classic governance" }),
2278
+ z13.object({
2279
+ type: z13.literal(AccountGovernanceType.TRADELINK),
2280
+ assetManagerId: z13.string(),
2281
+ exchangeConfigs: zTradelinkExchangeConfigs
2282
+ }).meta({ description: "Tradelink governance" }),
2283
+ z13.object({
2284
+ type: z13.literal(AccountGovernanceType.RAW_SIGNING),
2285
+ policy: z13.object({ rules: z13.array(zSignDigestsGovRuleData) })
2286
+ }).meta({ description: "Raw signing governance" })
2287
+ ]).meta({ description: "Governance fields" });
2288
+ var zCreateAccountUserInputData = z13.object({
2289
+ name: zAccountName,
2290
+ currency: zCurrencyString,
2291
+ // "bitcoin"
2292
+ index: z13.number().nonnegative().optional().meta({ description: "Account index" }),
2293
+ contractAddress: z13.string().min(1).optional().meta({ description: "Account contract address" }),
2294
+ governance: zCreateAccountGovernanceData
2295
+ });
2296
+ var zCreateAccountRequestData = zCreateAccountUserInputData.omit({ index: true }).extend({
2297
+ index: z13.number().nonnegative().meta({ description: "Account index" }),
2298
+ derivationPath: z13.string().meta({ description: "Account bip44 derivation path" }),
2299
+ type: z13.enum(AccountType)
2300
+ // "BITCOIN_LIKE"
2301
+ }).meta({
2302
+ description: "Create account request data",
2303
+ id: "CreateAccountRequestData"
2304
+ });
2305
+ var zEditAccountGovernanceData = z13.discriminatedUnion("type", [
2306
+ z13.object({
2307
+ type: z13.literal(AccountGovernanceType.CLASSIC),
2308
+ policy: zAccountPolicyRequestData
2309
+ }).meta({ description: "Classic governance" }),
2310
+ z13.object({
2311
+ type: z13.literal(AccountGovernanceType.TRADELINK),
2312
+ exchangeConfigs: zTradelinkExchangeConfigs
2313
+ }).meta({ description: "Tradelink governance" }),
2314
+ z13.object({
2315
+ type: z13.literal(AccountGovernanceType.RAW_SIGNING),
2316
+ policy: z13.object({ rules: z13.array(zSignDigestsGovRuleData) })
2317
+ }).meta({ description: "Raw signing governance" })
2318
+ ]).meta({ description: "Governance fields" });
2319
+ var zEditAccountRequestData = z13.object({
2320
+ name: zAccountName,
2321
+ governance: zEditAccountGovernanceData
2322
+ }).meta({
2323
+ description: "Edit account request data",
2324
+ id: "EditAccountRequestData"
2325
+ });
2326
+ var zEditTokenRuleRequestData = z13.object({
2327
+ parentAccountId: z13.string().min(1).meta({ description: "Parent account unique ID" }),
2328
+ contractAddress: z13.string().min(1).meta({ description: "Token contract address" }),
2329
+ rules: z13.array(zClassicGovRuleData).meta({ description: "Account governance rules" })
2330
+ });
2331
+
2332
+ // src/accounts/app-utils.ts
2333
+ var getAccountAssetFields = (account) => {
2334
+ switch (account.type) {
2335
+ case AccountType.BITCOIN_LIKE:
2322
2336
  return {
2323
- type,
2324
- currency: faker.helpers.arrayElement(["bitcoin", "bitcoin_testnet"]),
2325
- derivationPath: "84'/0'/0'",
2326
- address: null,
2327
- contractAddress: null,
2328
- xpub: faker.string.hexadecimal({ prefix: "", length: 120 }),
2329
- hsmXpub,
2330
- hsmChainCode
2337
+ type: account.type,
2338
+ xpub: account.xpub
2331
2339
  };
2332
- case "ETHEREUM_LIKE":
2340
+ case AccountType.ETHEREUM_LIKE:
2333
2341
  return {
2334
- type,
2335
- currency: faker.helpers.arrayElement(["ethereum", "ethereum_goerli"]),
2336
- derivationPath: "44'/60'/0'",
2337
- address: faker.finance.ethereumAddress(),
2338
- contractAddress: null,
2339
- xpub: null,
2340
- hsmXpub,
2341
- hsmChainCode
2342
+ type: account.type,
2343
+ address: account.address,
2344
+ contractAddress: account.contractAddress
2342
2345
  };
2343
- case "CANTON_LIKE":
2346
+ case AccountType.CARDANO_LIKE:
2344
2347
  return {
2345
- type,
2346
- currency: "canton",
2347
- derivationPath: "44'/6767'/0'/0'/0'",
2348
- address: faker.string.alphanumeric({ length: 34, casing: "mixed" }),
2349
- contractAddress: null,
2350
- xpub: null,
2351
- hsmXpub,
2352
- hsmChainCode: null
2348
+ type: account.type,
2349
+ address: account.address
2353
2350
  };
2354
- case "CARDANO_LIKE":
2351
+ case AccountType.SOLANA_LIKE:
2355
2352
  return {
2356
- type,
2357
- currency: faker.helpers.arrayElement(["cardano"]),
2358
- derivationPath: "1852'/1815'/0'",
2359
- address: `addr${faker.string.alphanumeric({ length: 100, casing: "lower" })}`,
2360
- contractAddress: null,
2361
- xpub: null,
2362
- hsmXpub,
2363
- hsmChainCode
2353
+ type: account.type,
2354
+ address: account.address,
2355
+ contractAddress: account.contractAddress
2364
2356
  };
2365
- case "SOLANA_LIKE":
2357
+ case AccountType.TEZOS_LIKE:
2366
2358
  return {
2367
- type,
2368
- currency: faker.helpers.arrayElement(["solana"]),
2369
- derivationPath: "44'/501'/0'",
2370
- address: faker.string.alphanumeric({ length: 44, casing: "lower" }),
2371
- contractAddress: null,
2372
- xpub: null,
2373
- hsmXpub,
2374
- hsmChainCode: null
2359
+ type: account.type,
2360
+ address: account.address
2375
2361
  };
2376
- case "TEZOS_LIKE":
2362
+ case AccountType.STELLAR_LIKE:
2377
2363
  return {
2378
- type,
2379
- currency: faker.helpers.arrayElement(["tezos"]),
2380
- derivationPath: "44'/1729'/0'",
2381
- address: `tz${faker.string.alphanumeric({ length: 34, casing: "mixed" })}`,
2382
- contractAddress: null,
2383
- xpub: null,
2384
- hsmXpub,
2385
- hsmChainCode
2364
+ type: account.type,
2365
+ address: account.address
2386
2366
  };
2387
- case "STELLAR_LIKE":
2367
+ case AccountType.SUI_LIKE:
2388
2368
  return {
2389
- type,
2390
- currency: faker.helpers.arrayElement(["stellar"]),
2391
- derivationPath: "44'/148'/0'",
2392
- address: faker.string.alphanumeric({ length: 56, casing: "upper" }),
2393
- contractAddress: null,
2394
- xpub: null,
2395
- hsmXpub,
2396
- hsmChainCode
2369
+ type: account.type,
2370
+ address: account.address
2397
2371
  };
2398
- case "RIPPLE_LIKE":
2372
+ case AccountType.RIPPLE_LIKE:
2399
2373
  return {
2400
- type,
2401
- currency: faker.helpers.arrayElement(["ripple"]),
2402
- derivationPath: "44'/144'/0'",
2403
- address: faker.string.alphanumeric({ length: 34, casing: "mixed" }),
2404
- contractAddress: null,
2405
- xpub: `xpub${faker.string.alphanumeric({ length: 107, casing: "mixed" })}`,
2406
- hsmXpub,
2407
- hsmChainCode
2374
+ type: account.type,
2375
+ address: account.address
2408
2376
  };
2409
- case "POLKADOT_LIKE":
2377
+ case AccountType.POLKADOT_LIKE:
2410
2378
  return {
2411
- type,
2412
- currency: faker.helpers.arrayElement(["polkadot"]),
2413
- derivationPath: "44'/354'/0'",
2414
- address: faker.string.alphanumeric({ length: 48, casing: "mixed" }),
2415
- contractAddress: null,
2416
- xpub: null,
2417
- hsmXpub,
2418
- hsmChainCode: null
2379
+ type: account.type,
2380
+ address: account.address
2419
2381
  };
2420
- case "TRON_LIKE":
2382
+ case AccountType.TRON_LIKE:
2421
2383
  return {
2422
- type,
2423
- currency: faker.helpers.arrayElement(["tron"]),
2424
- derivationPath: "44'/195'/0'",
2425
- address: faker.string.alphanumeric({ length: 34, casing: "mixed" }),
2426
- contractAddress: null,
2427
- xpub: null,
2428
- hsmXpub,
2429
- hsmChainCode
2384
+ type: account.type,
2385
+ address: account.address,
2386
+ contractAddress: account.contractAddress
2430
2387
  };
2431
- case "SUI_LIKE":
2388
+ case AccountType.GENERIC_LIKE:
2389
+ case AccountType.RAW_SIGNING:
2432
2390
  return {
2433
- type,
2434
- currency: faker.helpers.arrayElement(["sui"]),
2435
- derivationPath: "44'/784'/0'",
2436
- address: faker.string.alphanumeric({ length: 34, casing: "mixed" }),
2437
- contractAddress: null,
2438
- xpub: null,
2439
- hsmXpub,
2440
- hsmChainCode: null
2391
+ type: account.type
2441
2392
  };
2442
- case "GENERIC_LIKE":
2393
+ case AccountType.CANTON_LIKE:
2443
2394
  return {
2444
- type,
2445
- currency: faker.helpers.arrayElement(["cosmos"]),
2446
- derivationPath: "44'/118'/0'",
2447
- address: faker.string.alphanumeric({ length: 34, casing: "mixed" }),
2448
- contractAddress: null,
2449
- xpub: null,
2450
- hsmXpub,
2451
- hsmChainCode
2395
+ type: account.type,
2396
+ address: account.address
2452
2397
  };
2453
- case "RAW_SIGNING":
2398
+ /* v8 ignore next -- @preserve */
2399
+ default:
2400
+ unreachable(account.type);
2401
+ }
2402
+ };
2403
+ var getAccountGovernanceFields = (account) => {
2404
+ switch (account.governanceType) {
2405
+ case AccountGovernanceType.CLASSIC:
2406
+ case AccountGovernanceType.RAW_SIGNING:
2454
2407
  return {
2455
- type,
2456
- currency: faker.helpers.arrayElement(["ethereum", "bitcoin"]),
2457
- derivationPath: "44'/118'/0'",
2458
- address: null,
2459
- contractAddress: null,
2460
- xpub: null,
2461
- hsmXpub,
2462
- hsmChainCode
2408
+ type: AccountGovernanceType.CLASSIC,
2409
+ policyId: account.classicGovernanceMixin.policyId
2410
+ };
2411
+ case AccountGovernanceType.TRADELINK:
2412
+ return {
2413
+ type: AccountGovernanceType.TRADELINK,
2414
+ assetManagerId: account.tradelinkGovernanceMixin.assetManagerId,
2415
+ exchangeConfigs: zTradelinkExchangeConfigs.parse(
2416
+ account.tradelinkGovernanceMixin.exchangeConfigs
2417
+ )
2463
2418
  };
2419
+ /* v8 ignore next -- @preserve */
2420
+ default:
2421
+ unreachable(account.governanceType);
2422
+ }
2423
+ };
2424
+ var serializeAccount = (account) => {
2425
+ const asset = getAccountAssetFields(account);
2426
+ const governance = getAccountGovernanceFields(account);
2427
+ const response = {
2428
+ ...account,
2429
+ network: account.currency,
2430
+ legacyId: account.gateId,
2431
+ governance,
2432
+ asset
2433
+ };
2434
+ return zAccountResponse.parse(response);
2435
+ };
2436
+
2437
+ // src/compat/patch-request-expired-at.ts
2438
+ var patchRequestExpiredAt = (data) => ({
2439
+ ...data,
2440
+ expiredAt: data.expiresAt
2441
+ });
2442
+ var patchTezosRequestData = (data) => {
2443
+ if (data.type !== RequestType.CREATE_TRANSACTION) {
2444
+ return data;
2445
+ }
2446
+ const transaction = get(data, ["data", "transaction"]);
2447
+ if (!isRecord(transaction)) {
2448
+ return data;
2449
+ }
2450
+ if (transaction.type === "TEZOS_LIKE_DELEGATE") {
2451
+ transaction.amount = transaction.amount ?? "0";
2452
+ } else if (transaction.type === "TEZOS_LIKE_UNDELEGATE") {
2453
+ transaction.amount = transaction.amount ?? "0";
2454
+ transaction.recipient = transaction.recipient ?? "0";
2464
2455
  }
2456
+ return data;
2457
+ };
2458
+ var zSciConfigData = z13.object({
2459
+ dapps: z13.array(z13.string()).nullable().meta({ description: "Allowed DApps, null allows all" }),
2460
+ customContractCallEnabled: z13.boolean().meta({ description: "Allow non-DApp SCI" })
2461
+ });
2462
+ var zCreateSciConfigRequestData = z13.object({
2463
+ account: z13.string().meta({ description: "Account UUID" }),
2464
+ config: zSciConfigData
2465
+ });
2466
+ var zEditSciConfigRequestData = z13.object({
2467
+ config: zSciConfigData
2468
+ });
2469
+ var zRequestReviewStep = z.object({
2470
+ stageName: z.string().regex(/^\w+$/).meta({ description: "The review stage name" }),
2471
+ quorum: z.int().min(1).meta({ description: "Quorum for the review step" })
2472
+ });
2473
+ var zRequestReviewSteps = z.array(zRequestReviewStep);
2474
+ var zGroupName = z13.string().min(1).max(19).meta({ description: "Group name" });
2475
+ var zCreateGroupRequestData = z13.object({
2476
+ name: zGroupName,
2477
+ description: z13.string().nullable().meta({ description: "Group description" }),
2478
+ members: z13.array(z13.string()).meta({ description: "List of group members ids" })
2479
+ });
2480
+ var zEditGroupRequestData = z13.object({
2481
+ name: zGroupName,
2482
+ description: z13.string().nullable().meta({ description: "Group description" }),
2483
+ members: z13.array(z13.string()).meta({ description: "List of group members ids" })
2484
+ });
2485
+ var zApiKeyName = z13.string().min(1).max(19).meta({ description: "API key name" });
2486
+ var zCreateApiKeyRequestData = z13.object({
2487
+ name: zApiKeyName,
2488
+ entities: z13.array(z13.string()).meta({ description: "List of related entities ids" }),
2489
+ scopes: z13.object({}).meta({ description: "FIXME to be precised" })
2490
+ }).meta({ description: "Create read-only API key request data" });
2491
+ var zEditApiKeyRequestData = zCreateApiKeyRequestData.meta({
2492
+ description: "Edit read-only API key request data"
2493
+ });
2494
+ var zEntityName = z13.string().min(1).max(19).meta({ description: "Entity name" });
2495
+ var zCreateEntityRequestData = z13.object({
2496
+ name: zEntityName,
2497
+ accounts: z13.array(z13.string())
2498
+ });
2499
+ var zEditEntityRequestData = z13.object({
2500
+ name: zEntityName,
2501
+ accounts: z13.array(z13.string())
2502
+ });
2503
+
2504
+ // src/requests/request-data.ts
2505
+ var zVaultRequestMixinsByType = {
2506
+ // Workspaces
2507
+ [RequestType.UPDATE_QUORUM]: z13.object({
2508
+ type: z13.literal(RequestType.UPDATE_QUORUM),
2509
+ data: zUpdateQuorumRequestData
2510
+ }),
2511
+ // Operator requests
2512
+ [RequestType.CREATE_TRANSACTION]: z13.object({
2513
+ type: z13.literal(RequestType.CREATE_TRANSACTION),
2514
+ data: zCreateTransactionRequestData,
2515
+ meta: z13.object({
2516
+ hash: z13.string().nullable()
2517
+ }).optional().nullable()
2518
+ }),
2519
+ [RequestType.SIGN_MESSAGE]: z13.object({
2520
+ type: z13.literal(RequestType.SIGN_MESSAGE),
2521
+ data: zSignMessageRequestData
2522
+ }),
2523
+ [RequestType.SIGN_DIGESTS]: z13.object({
2524
+ type: z13.literal(RequestType.SIGN_DIGESTS),
2525
+ data: zSignDigestsRequestData
2526
+ }),
2527
+ // Accounts
2528
+ [RequestType.CREATE_ACCOUNT]: z13.object({
2529
+ type: z13.literal(RequestType.CREATE_ACCOUNT),
2530
+ data: zCreateAccountRequestData
2531
+ }),
2532
+ [RequestType.EDIT_ACCOUNT]: z13.object({
2533
+ type: z13.literal(RequestType.EDIT_ACCOUNT),
2534
+ targetId: z13.string(),
2535
+ data: zEditAccountRequestData
2536
+ }),
2537
+ [RequestType.EDIT_TOKEN_RULE]: z13.object({
2538
+ type: z13.literal(RequestType.EDIT_TOKEN_RULE),
2539
+ targetId: z13.string(),
2540
+ data: zEditTokenRuleRequestData
2541
+ }),
2542
+ // Groups
2543
+ [RequestType.CREATE_GROUP]: z13.object({
2544
+ type: z13.literal(RequestType.CREATE_GROUP),
2545
+ data: zCreateGroupRequestData
2546
+ }),
2547
+ [RequestType.EDIT_GROUP]: z13.object({
2548
+ type: z13.literal(RequestType.EDIT_GROUP),
2549
+ targetId: z13.string(),
2550
+ data: zEditGroupRequestData
2551
+ }),
2552
+ [RequestType.REVOKE_GROUP]: z13.object({
2553
+ type: z13.literal(RequestType.REVOKE_GROUP),
2554
+ targetId: z13.string(),
2555
+ data: zRevokeUserRequestData
2556
+ }),
2557
+ // Whitelists
2558
+ [RequestType.CREATE_WHITELIST]: z13.object({
2559
+ type: z13.literal(RequestType.CREATE_WHITELIST),
2560
+ data: zCreateWhitelistRequestData
2561
+ }),
2562
+ [RequestType.EDIT_WHITELIST]: z13.object({
2563
+ type: z13.literal(RequestType.EDIT_WHITELIST),
2564
+ targetId: z13.string(),
2565
+ data: zEditWhitelistRequestData
2566
+ }),
2567
+ // Entities
2568
+ [RequestType.CREATE_ENTITY]: z13.object({
2569
+ type: z13.literal(RequestType.CREATE_ENTITY),
2570
+ data: zCreateEntityRequestData
2571
+ }),
2572
+ [RequestType.EDIT_ENTITY]: z13.object({
2573
+ type: z13.literal(RequestType.EDIT_ENTITY),
2574
+ data: zEditEntityRequestData
2575
+ }),
2576
+ [RequestType.REVOKE_ENTITY]: z13.object({
2577
+ type: z13.literal(RequestType.REVOKE_ENTITY),
2578
+ data: z13.object({})
2579
+ }),
2580
+ // Users
2581
+ [RequestType.CREATE_PSD_USER]: z13.object({
2582
+ type: z13.literal(RequestType.CREATE_PSD_USER),
2583
+ data: zCreatePsdUserRequestData
2584
+ }),
2585
+ [RequestType.CREATE_API_USER]: z13.object({
2586
+ type: z13.literal(RequestType.CREATE_API_USER),
2587
+ data: zCreateApiUserRequestData
2588
+ }),
2589
+ [RequestType.CREATE_API_USER_ACCESS]: z13.object({
2590
+ type: z13.literal(RequestType.CREATE_API_USER_ACCESS),
2591
+ data: zCreateApiUserAccessRequestData
2592
+ }),
2593
+ [RequestType.REVOKE_USER]: z13.object({
2594
+ type: z13.literal(RequestType.REVOKE_USER),
2595
+ targetId: z13.string(),
2596
+ data: zRevokeUserRequestData
2597
+ }),
2598
+ // Admin gov rules
2599
+ [RequestType.EDIT_WORKSPACE_RULE]: z13.object({
2600
+ type: z13.literal(RequestType.EDIT_WORKSPACE_RULE),
2601
+ data: zWorkspaceRuleRequestData
2602
+ }),
2603
+ // SCI configs
2604
+ [RequestType.CREATE_SCICONFIG]: z13.object({
2605
+ type: z13.literal(RequestType.CREATE_SCICONFIG),
2606
+ data: zCreateSciConfigRequestData
2607
+ }),
2608
+ [RequestType.EDIT_SCICONFIG]: z13.object({
2609
+ type: z13.literal(RequestType.EDIT_SCICONFIG),
2610
+ data: zEditSciConfigRequestData
2611
+ }),
2612
+ // API keys
2613
+ [RequestType.CREATE_API_KEY]: z13.object({
2614
+ type: z13.literal(RequestType.CREATE_API_KEY),
2615
+ data: zCreateApiKeyRequestData
2616
+ }),
2617
+ [RequestType.EDIT_API_KEY]: z13.object({
2618
+ type: z13.literal(RequestType.EDIT_API_KEY),
2619
+ data: zEditApiKeyRequestData
2620
+ }),
2621
+ [RequestType.REVOKE_API_KEY]: z13.object({
2622
+ type: z13.literal(RequestType.REVOKE_API_KEY),
2623
+ data: z13.object({})
2624
+ }),
2625
+ // Policies
2626
+ [RequestType.CREATE_POLICY]: z13.object({
2627
+ type: z13.literal(RequestType.CREATE_POLICY),
2628
+ data: zCreatePublicPolicyRequestData
2629
+ }),
2630
+ [RequestType.EDIT_POLICY]: z13.object({
2631
+ type: z13.literal(RequestType.EDIT_POLICY),
2632
+ targetId: z13.string(),
2633
+ data: zEditPublicPolicyRequestData
2634
+ }),
2635
+ // Tradelink-related requests
2636
+ ...zTradelinkRequestMixinsByType
2465
2637
  };
2466
- var genGovernanceFieldsForType = (governanceType, {
2467
- accountId,
2468
- policyId,
2469
- assetManagerId
2470
- }) => {
2471
- switch (governanceType) {
2472
- case AccountGovernanceType.CLASSIC:
2473
- case AccountGovernanceType.RAW_SIGNING:
2474
- return {
2475
- governanceType,
2476
- classicGovernanceMixin: {
2477
- id: faker.number.int(),
2478
- policyId: policyId ?? faker.string.uuid(),
2479
- accountId
2480
- },
2481
- tradelinkGovernanceMixin: null
2482
- };
2483
- case AccountGovernanceType.TRADELINK:
2484
- return {
2485
- governanceType,
2486
- classicGovernanceMixin: null,
2487
- tradelinkGovernanceMixin: {
2488
- id: faker.number.int(),
2489
- assetManagerId: assetManagerId ?? faker.string.uuid(),
2490
- accountId,
2491
- exchangeConfigs: [],
2492
- status: ActivationStatus.ACTIVE
2493
- }
2494
- };
2495
- }
2638
+
2639
+ // src/requests/app-types.ts
2640
+ var zRequestReviewResponse = z13.object({
2641
+ // Note: Do NOT include `quorum` as it is already available in the request's `reviewSteps` field.
2642
+ stepIndex: z13.number().int().meta({ description: "Index of the governance step in the request workflow" }),
2643
+ userId: z13.string().meta({ description: "Reviewer id" }),
2644
+ status: z13.enum(RequestReviewStatus).meta({ description: "Review status" }),
2645
+ createdAt: z13.coerce.date().meta({ description: "Created date" }),
2646
+ updatedAt: z13.coerce.date().meta({ description: "Updated date" })
2647
+ });
2648
+ var zVaultRequestCommonMixin = z13.object({
2649
+ id: z13.string().meta({ description: "Request unique identifier" }),
2650
+ legacyId: z13.number().meta({ description: "Legacy internal unique identifier (for retro-compatibility)" }),
2651
+ state: z13.enum(RequestState).meta({ description: "Request state" }),
2652
+ reviewSteps: zRequestReviewSteps.meta({ description: "Request review steps" }),
2653
+ currentStepIndex: z13.number().int().min(0).meta({ description: "Index of the current approval step" }),
2654
+ expiresAt: z13.coerce.date().meta({ description: "Request expiration date" }),
2655
+ expiredAt: z13.coerce.date().optional().meta({ description: "Deprecated: use expiresAt" }),
2656
+ targetId: z13.string().nullable().meta({ description: "Optional ID of the target object" }),
2657
+ note: zNote.nullable().meta({ description: "Optional request note" }),
2658
+ reviews: z13.array(zRequestReviewResponse).meta({ description: "Requests reviews" }),
2659
+ // `type` and `data` are correlated -- See `zVaultRequestMixinsByType`
2660
+ createdAt: z13.coerce.date().meta({ description: "Creation timestamp" }),
2661
+ updatedAt: z13.coerce.date().meta({ description: "Last modification timestamp" }),
2662
+ createdById: z13.string().meta({ description: "ID of the user who created the request" }),
2663
+ // `inflight` is fetched from ONGOING RequestSaga
2664
+ inflight: z13.object({
2665
+ lastError: z13.string().nullable().meta({ description: "Error message from the last failure" }),
2666
+ numFailed: z13.number().int().meta({ description: "Number of failures so far" }),
2667
+ retryAfter: z13.coerce.date().meta({ description: "Date after which next retry is scheduled" })
2668
+ }).optional().meta({ description: "Extra information if the request is currently being processed" })
2669
+ });
2670
+ var allowedRequestCreationInputByType = {
2671
+ [RequestType.UPDATE_QUORUM]: zVaultRequestMixinsByType[RequestType.UPDATE_QUORUM],
2672
+ [RequestType.CREATE_PSD_USER]: zVaultRequestMixinsByType[RequestType.CREATE_PSD_USER],
2673
+ [RequestType.CREATE_API_USER]: zVaultRequestMixinsByType[RequestType.CREATE_API_USER],
2674
+ [RequestType.CREATE_GROUP]: zVaultRequestMixinsByType[RequestType.CREATE_GROUP],
2675
+ [RequestType.EDIT_GROUP]: zVaultRequestMixinsByType[RequestType.EDIT_GROUP],
2676
+ [RequestType.CREATE_WHITELIST]: zVaultRequestMixinsByType[RequestType.CREATE_WHITELIST],
2677
+ [RequestType.EDIT_WHITELIST]: zVaultRequestMixinsByType[RequestType.EDIT_WHITELIST],
2678
+ [RequestType.CREATE_TRANSACTION]: zVaultRequestMixinsByType[RequestType.CREATE_TRANSACTION],
2679
+ [RequestType.SIGN_MESSAGE]: z13.object({
2680
+ type: z13.literal(RequestType.SIGN_MESSAGE),
2681
+ data: zSignMessageUserInputData
2682
+ }),
2683
+ [RequestType.CREATE_POLICY]: zVaultRequestMixinsByType[RequestType.CREATE_POLICY],
2684
+ [RequestType.EDIT_POLICY]: zVaultRequestMixinsByType[RequestType.EDIT_POLICY],
2685
+ [RequestType.CREATE_ACCOUNT]: z13.object({
2686
+ type: z13.literal(RequestType.CREATE_ACCOUNT),
2687
+ data: zCreateAccountUserInputData
2688
+ }),
2689
+ [RequestType.EDIT_ACCOUNT]: zVaultRequestMixinsByType[RequestType.EDIT_ACCOUNT],
2690
+ [RequestType.TRADELINK_ACTIVATE_ACCOUNT]: zVaultRequestMixinsByType[RequestType.TRADELINK_ACTIVATE_ACCOUNT],
2691
+ [RequestType.TRADELINK_CREATE_CUSTODIAN]: zVaultRequestMixinsByType[RequestType.TRADELINK_CREATE_CUSTODIAN],
2692
+ [RequestType.TRADELINK_EDIT_CUSTODIAN]: zVaultRequestMixinsByType[RequestType.TRADELINK_EDIT_CUSTODIAN],
2693
+ [RequestType.TRADELINK_CREATE_EXCHANGE]: zVaultRequestMixinsByType[RequestType.TRADELINK_CREATE_EXCHANGE],
2694
+ [RequestType.TRADELINK_EDIT_EXCHANGE]: zVaultRequestMixinsByType[RequestType.TRADELINK_EDIT_EXCHANGE],
2695
+ [RequestType.TRADELINK_CREATE_ASSET_MANAGER]: zVaultRequestMixinsByType[RequestType.TRADELINK_CREATE_ASSET_MANAGER],
2696
+ [RequestType.TRADELINK_EDIT_ASSET_MANAGER]: zVaultRequestMixinsByType[RequestType.TRADELINK_EDIT_ASSET_MANAGER],
2697
+ [RequestType.TRADELINK_ADJUST_PLEDGE]: zVaultRequestMixinsByType[RequestType.TRADELINK_ADJUST_PLEDGE],
2698
+ [RequestType.TRADELINK_REPLEDGE]: zVaultRequestMixinsByType[RequestType.TRADELINK_REPLEDGE],
2699
+ [RequestType.TRADELINK_FORCE_UNPLEDGE]: zVaultRequestMixinsByType[RequestType.TRADELINK_FORCE_UNPLEDGE],
2700
+ [RequestType.TRADELINK_CREATE_SETTLEMENT]: zVaultRequestMixinsByType[RequestType.TRADELINK_CREATE_SETTLEMENT],
2701
+ [RequestType.TRADELINK_WITHDRAW]: zVaultRequestMixinsByType[RequestType.TRADELINK_WITHDRAW],
2702
+ [RequestType.TRADELINK_ARBITRATE]: zVaultRequestMixinsByType[RequestType.TRADELINK_ARBITRATE],
2703
+ [RequestType.REVOKE_USER]: zVaultRequestMixinsByType[RequestType.REVOKE_USER],
2704
+ [RequestType.EDIT_WORKSPACE_RULE]: zVaultRequestMixinsByType[RequestType.EDIT_WORKSPACE_RULE]
2496
2705
  };
2497
- var genAccount = (opts) => {
2498
- const { policyId, assetManagerId, ...rest } = opts ?? {};
2499
- const commonFields = {
2500
- id: faker.string.uuid(),
2501
- workspaceName: fakeWorkspaceName(),
2502
- name: fakeUniqueName(),
2503
- hsmId: fakeHsmObjectId(),
2504
- status: ActivationStatus.ACTIVE,
2505
- index: faker.number.int({ min: 0, max: 10 }),
2506
- gateId: fakeGateId(),
2507
- gateType: GateAccountType.Account,
2508
- lesWalletId: faker.string.uuid(),
2509
- createdAt: faker.date.past(),
2510
- updatedAt: faker.date.past()
2706
+ var zRequestCreationInputCommonMixin = z13.object({
2707
+ note: zNote.optional().meta({ description: "Optional request note" })
2708
+ });
2709
+ z13.object({
2710
+ request: z13.discriminatedUnion(
2711
+ "type",
2712
+ ensureNonEmptyArray(
2713
+ Object.values(allowedRequestCreationInputByType).map((_) => {
2714
+ const requestType = _.shape.type.value;
2715
+ return _.extend(zRequestCreationInputCommonMixin.shape).meta({
2716
+ description: `${requestType} request data`
2717
+ });
2718
+ })
2719
+ )
2720
+ )
2721
+ });
2722
+ var zVaultRequestResponse = z13.discriminatedUnion(
2723
+ "type",
2724
+ ensureNonEmptyArray(
2725
+ Object.values(zVaultRequestMixinsByType).map((_) => {
2726
+ const requestType = _.shape.type.value;
2727
+ return _.extend(zVaultRequestCommonMixin.shape).meta({
2728
+ description: `${requestType} request`
2729
+ });
2730
+ })
2731
+ )
2732
+ ).meta({
2733
+ description: "Vault request response data",
2734
+ id: "VaultRequestResponse"
2735
+ });
2736
+ z13.enum([
2737
+ "state",
2738
+ "expiresAt",
2739
+ "createdAt",
2740
+ "updatedAt"
2741
+ ]).default("createdAt");
2742
+ z13.object({
2743
+ pubKey: z13.string().meta({ description: "Public key of the current user" }),
2744
+ challenge: zUserChallenge.meta({
2745
+ description: "Challenge data to sign with the user's private key"
2746
+ })
2747
+ });
2748
+
2749
+ // src/requests/app-utils/index.ts
2750
+ function serializeVaultRequest(request) {
2751
+ const serialized = {
2752
+ ...request,
2753
+ legacyId: request.gateId
2511
2754
  };
2512
- const assetFields = genAssetFieldsForType(
2513
- opts?.type ?? faker.helpers.arrayElement(Object.values(AccountType))
2514
- );
2515
- const governanceFields = genGovernanceFieldsForType(
2516
- opts?.governanceType ?? faker.helpers.arrayElement(Object.values(AccountGovernanceType)),
2517
- { accountId: commonFields.id, policyId, assetManagerId }
2518
- );
2519
- return injectSyncId({
2520
- ...commonFields,
2521
- ...governanceFields,
2522
- ...assetFields,
2523
- ...rest
2524
- });
2525
- };
2526
- var genRequestReviewSteps = (numSteps) => times(1, () => ({ stageName: "default", quorum: 2 }));
2527
- var genVaultRequest = (opts) => {
2528
- const { type, state = RequestState.PENDING_APPROVAL, data, ...custom } = opts;
2529
- const targetHsmId = shouldHaveTargetHsmId({ type, state }) ? type === RequestType.CREATE_PSD_USER ? fakePubKey() : fakeHsmObjectId() : null;
2530
- const targetId = shouldHaveTargetId({ type, state }) ? faker.string.uuid() : null;
2531
- return injectSyncId({
2532
- id: faker.string.uuid(),
2533
- workspaceName: fakeWorkspaceName(),
2534
- type,
2535
- state,
2536
- reviewSteps: genRequestReviewSteps(),
2537
- currentStepIndex: 0,
2538
- expiresAt: faker.date.future(),
2539
- targetHsmId,
2540
- createdById: faker.string.uuid(),
2541
- createdAt: faker.date.past(),
2542
- updatedAt: faker.date.past(),
2543
- note: null,
2544
- managedData: null,
2545
- data,
2546
- targetId,
2547
- gateTargetType: "Whatsoever",
2548
- gateTargetId: 0,
2549
- gateType: "Request",
2550
- gateId: fakeGateId(),
2551
- // Note: Custom properties will overwrite the default ones. It is still possible for caller
2552
- // to overwrite `targetId`. Thus it is not guaranteed that these values will always be
2553
- // consistent with `type` and `state`.
2554
- ...custom
2555
- });
2556
- };
2557
- var genVaultRequestReview = (opts) => {
2558
- const status = opts?.status ?? RequestReviewStatus.PENDING;
2559
- const challenge = opts?.challenge ?? fakePsdChallenge();
2560
- const { challengeType } = challenge;
2561
- let signature;
2562
- if (status !== RequestReviewStatus.APPROVED) {
2563
- signature = null;
2564
- } else {
2565
- switch (challengeType) {
2566
- case ChallengeType.PSD:
2567
- signature = fakePsdSignature();
2568
- break;
2569
- case ChallengeType.API:
2570
- signature = fakeJws();
2571
- break;
2572
- }
2755
+ switch (request.type) {
2756
+ case "CREATE_TRANSACTION":
2757
+ case "TRADELINK_WITHDRAW":
2758
+ case "TRADELINK_ARBITRATE":
2759
+ case "TRADELINK_CREATE_SETTLEMENT":
2760
+ Object.assign(serialized, {
2761
+ meta: {
2762
+ hash: request.transactionMeta?.hash ?? null
2763
+ }
2764
+ });
2765
+ break;
2573
2766
  }
2574
- return {
2575
- id: faker.number.int(),
2576
- requestId: faker.string.uuid(),
2577
- stageName: "default",
2578
- // assume the simple case where there is one single stage
2579
- stepIndex: 0,
2580
- userId: faker.string.uuid(),
2581
- pubKey: fakePubKey(),
2582
- challengeType,
2583
- challenge,
2584
- signature,
2585
- status,
2586
- createdAt: faker.date.past(),
2587
- updatedAt: faker.date.past(),
2588
- ...opts
2589
- };
2590
- };
2767
+ let patched = zVaultRequestResponse.parse(serialized);
2768
+ patched = patchRequestExpiredAt(patched);
2769
+ patched = patchTezosRequestData(patched);
2770
+ return patched;
2771
+ }
2591
2772
 
2592
2773
  // src/__fakes__/responses.ts
2593
2774
  function genVaultRequestResponse(opts, reviews = []) {
@@ -2600,6 +2781,7 @@ function genAccountResponse(overrides) {
2600
2781
  const account = serializeAccount(dbAccount);
2601
2782
  return zAccountResponse.parse(account);
2602
2783
  }
2784
+ /* v8 ignore next -- @preserve */
2603
2785
 
2604
2786
  export { genAccountResponse, genVaultRequestResponse, genVaultRequestReview };
2605
2787
  //# sourceMappingURL=fakes.mjs.map