@ledgerhq/revault-api 1.81.0 → 1.82.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import z from "zod";
1
+ import z, { z as z$1 } from "zod";
2
2
  //#region src/hsm/hsm-requests-types.ts
3
3
  const HSM_OBJECT_TYPES = [
4
4
  "Account",
@@ -50,7 +50,320 @@ z.object({
50
50
  object_contents: z.array(z.unknown()),
51
51
  objects_missing_merkle_tree_id: z.array(z.string())
52
52
  });
53
+ z$1.string().regex(/^[0-9a-fA-F]+$/);
54
+ const zIntString = z$1.string().nonempty().regex(/^(-?[1-9]\d*|0)$/);
55
+ const zUnsignedIntString = z$1.string().nonempty().regex(/^([1-9]\d*|0)$/);
56
+ const zCurrencyString = z$1.string().nonempty().max(40).regex(/^\w+$/).meta({ description: "Will be deprecated soon, use network instead. Currency" });
57
+ const zNetwork = z$1.string().nonempty().max(40).regex(/^\w+$/).meta({ description: "Network (Same as currency for now)" });
58
+ z$1.object({
59
+ network: zNetwork,
60
+ contractAddress: z$1.string().nonempty().nullable().meta({ description: "Token issuer" }),
61
+ tokenIdentifier: z$1.string().nonempty().nullable().meta({ description: "Token identifier" })
62
+ });
63
+ z$1.string().regex(/^[\w-]+$/).nonempty();
64
+ z$1.string().regex(/^[\w-]+$/).nonempty();
65
+ z$1.string().min(1).max(45).meta({ description: "HSM object name" });
66
+ z$1.string().min(1).max(63).regex(/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/);
67
+ z$1.codec(z$1.iso.datetime(), z$1.date(), {
68
+ decode: (isoString) => new Date(isoString),
69
+ encode: (date) => date.toISOString()
70
+ });
71
+ //#endregion
72
+ //#region src/networks/common.ts
73
+ const NetworkFamily = {
74
+ BITCOIN_LIKE: "BITCOIN_LIKE",
75
+ CANTON_LIKE: "CANTON_LIKE",
76
+ CARDANO_LIKE: "CARDANO_LIKE",
77
+ ETHEREUM_LIKE: "ETHEREUM_LIKE",
78
+ GENERIC_LIKE: "GENERIC_LIKE",
79
+ HEDERA_LIKE: "HEDERA_LIKE",
80
+ POLKADOT_LIKE: "POLKADOT_LIKE",
81
+ RIPPLE_LIKE: "RIPPLE_LIKE",
82
+ SOLANA_LIKE: "SOLANA_LIKE",
83
+ STELLAR_LIKE: "STELLAR_LIKE",
84
+ SUI_LIKE: "SUI_LIKE",
85
+ TEZOS_LIKE: "TEZOS_LIKE",
86
+ TRON_LIKE: "TRON_LIKE"
87
+ };
88
+ /**
89
+ * Ensure that this is a hex string and transform it to lowercase with 0x prefix.
90
+ * Not to be used for EIP-55 addresses or other attributes where letter casing is important!
91
+ */
92
+ /* v8 ignore next -- @preserve */
93
+ const zHexDataString = z.codec(z.string().regex(/^(?:0x|0X)?[a-fA-F0-9]+$/), z.string(), {
94
+ decode: (hex) => `0x${hex.toLowerCase().replace("0x", "")}`,
95
+ encode: (hex) => hex
96
+ });
97
+ const zCommonLiveData = z.object({
98
+ id: z.string().meta({ description: "Account internal unique identifier" }),
99
+ balance: z.object({
100
+ total: z.string().meta({ description: "Total balance" }),
101
+ pending: z.string().meta({ description: "Pending balance" }),
102
+ reserved: z.string().meta({ description: "Minimum balance the account must always keep (0 if none)" })
103
+ }).meta({ description: "Balance fields" })
104
+ });
105
+ /**
106
+ * Schema of `Request.data.transaction`
107
+ */
108
+ const zCommonTransactionData = z.object({
109
+ amount: zUnsignedIntString.meta({ description: "Transaction amount" }),
110
+ currency: zCurrencyString.meta({ description: "Will be deprecated soon, use Account.network. Transaction currency" }),
111
+ maxFee: zUnsignedIntString.nullable().meta({ description: "Transaction max fee" }),
112
+ recipient: z.string().nonempty().meta({ description: "Transaction recipient" })
113
+ });
114
+ const zFeeStrategyCustom = z.object({ type: z.enum([
115
+ "SLOW",
116
+ "NORMAL",
117
+ "FAST",
118
+ "CUSTOM"
119
+ ]) });
120
+ z.object({ type: z.enum([
121
+ "SLOW",
122
+ "NORMAL",
123
+ "FAST"
124
+ ]) });
125
+ const zTransactionStatus = z.enum([
126
+ "SUCCESSFUL",
127
+ "FAILED",
128
+ "PENDING",
129
+ "UNKNOWN"
130
+ ]);
131
+ const zCommonTransactionResponse = z.object({
132
+ id: z.string().meta({ description: "Internal unique identifier" }),
133
+ hash: z.string().meta({ description: "Transaction hash" }),
134
+ block: z.object({
135
+ height: z.string().nullable().meta({ description: "Transaction block height" }),
136
+ time: z.string().nullable().meta({ description: "Transaction block time" })
137
+ }),
138
+ status: zTransactionStatus.meta({ description: "Transaction status" }),
139
+ confirmations: z.string().meta({ description: "Block confirmations" }),
140
+ amount: z.string().meta({ description: "Transaction amount" }),
141
+ fee: z.string().meta({ description: "Transaction fee" }),
142
+ senders: z.array(z.string()).meta({ description: "Senders (can be multiple for UTXOs-based accounts)" }),
143
+ recipients: z.array(z.string()).meta({ description: "Recipients (can be multiple for multi-output transactions)" })
144
+ });
145
+ z.object({
146
+ type: z.literal(NetworkFamily.ETHEREUM_LIKE).meta({ description: "Account type" }),
147
+ address: z.string().nullable().meta({ description: "Account address" })
148
+ }).meta({ description: "Ethereum-like" });
149
+ const zEthereumLikeStakingData = z.object({
150
+ totalStaking: z.string().meta({ description: "Total staked amount" }),
151
+ totalRewards: z.string().meta({ description: "Total of rewards" }),
152
+ availableRewards: z.string().meta({ description: "Available rewards" }).optional(),
153
+ networkApy: z.number().meta({ description: "Network APY" }).optional()
154
+ }).nullable().meta({ description: "Ethereum-like staking data" });
155
+ const zEthereumLikeStakingFields = z.object({
156
+ type: z.literal(NetworkFamily.ETHEREUM_LIKE).meta({ description: "Account type" }),
157
+ staking: zEthereumLikeStakingData.optional()
158
+ });
159
+ zCommonLiveData.extend(zEthereumLikeStakingFields.shape).meta({ description: "Ethereum-like" });
160
+ z.object({
161
+ type: z.literal(NetworkFamily.ETHEREUM_LIKE),
162
+ baseFees: zIntString,
163
+ gasLimit: zIntString,
164
+ nonce: z.string(),
165
+ priorityFees: zIntString,
166
+ executionFees: zIntString.nullish(),
167
+ maxExecutionFees: zIntString.nullish()
168
+ }).meta({ description: "Ethereum-like fees" });
169
+ const zEthereumLikeTransferTransactionType = z.enum(["ETHEREUM_LIKE_SEND", "ETHEREUM_LIKE_RECEIVE"]).meta({ description: "Ethereum-like transaction type" });
170
+ const zEthereumLikeContractTransactionType = z.enum(["ETHEREUM_LIKE_EXECUTE_CONTRACT", "ETHEREUM_LIKE_DEPLOY_CONTRACT"]).meta({ description: "Ethereum-like transaction type" });
171
+ const zEthereumLikeStakingTransactionType = z.enum([
172
+ "ETHEREUM_LIKE_STAKE_DEPOSIT",
173
+ "ETHEREUM_LIKE_STAKE_TOP_UP",
174
+ "ETHEREUM_LIKE_STAKE_WITHDRAW",
175
+ "ETHEREUM_LIKE_STAKE_CONSOLIDATE",
176
+ "ETHEREUM_LIKE_STAKE_UPGRADE"
177
+ ]).meta({ description: "Ethereum-like staking transaction type" });
178
+ z.enum([
179
+ ...zEthereumLikeTransferTransactionType.options,
180
+ ...zEthereumLikeContractTransactionType.options,
181
+ ...zEthereumLikeStakingTransactionType.options
182
+ ]).meta({ description: "Ethereum-like transaction type" });
183
+ const zEthereumLikeLegacyFeeStrategy = zFeeStrategyCustom.extend({
184
+ gasPrice: zUnsignedIntString.meta({ description: "Gas price" }),
185
+ gasLimit: zUnsignedIntString.meta({ description: "Gas limit" })
186
+ }).meta({ description: "Ethereum-like legacy fee strategy" });
187
+ const zEthereumLikeEip1559FeeStrategy = zFeeStrategyCustom.extend({
188
+ maxPriorityFeePerGas: zUnsignedIntString.meta({ description: "Maximum priority fee per gas" }),
189
+ maxFeePerGas: zUnsignedIntString.meta({ description: "Maximum fee per gas (base + priority)" }),
190
+ gasLimit: zUnsignedIntString.meta({ description: "Gas limit" })
191
+ }).meta({ description: "Ethereum-like EIP-1559 fee strategy" });
192
+ const zEthereumLikeFeeStrategy = z.union([zEthereumLikeLegacyFeeStrategy, zEthereumLikeEip1559FeeStrategy]).meta({
193
+ description: "Ethereum-like fee strategy",
194
+ id: "EthereumLikeFeeStrategy"
195
+ });
196
+ const zEthereumCommonTransactionData = zCommonTransactionData.extend({ replacingTxHash: z.string().optional().meta({ description: "Hash of the original transaction to replace. If provided, the new transaction will replace the one matching this hash." }) });
197
+ const zEthereumLikeDeployContractData = zEthereumCommonTransactionData.extend({
198
+ type: z.literal(zEthereumLikeContractTransactionType.enum.ETHEREUM_LIKE_DEPLOY_CONTRACT),
199
+ recipient: z.literal(""),
200
+ contractData: zHexDataString.meta({ description: "Contract data in hexadecimal format" }),
201
+ feeStrategy: zEthereumLikeFeeStrategy
202
+ }).meta({
203
+ description: "Ethereum-like deploy contract data",
204
+ id: "EthereumLikeDeployContractData"
205
+ });
206
+ const zEthereumLikeExecuteContractData = zEthereumCommonTransactionData.extend({
207
+ type: z.literal(zEthereumLikeContractTransactionType.enum.ETHEREUM_LIKE_EXECUTE_CONTRACT),
208
+ contractData: zHexDataString.meta({ description: "Contract call data in hexadecimal format" }),
209
+ feeStrategy: zEthereumLikeFeeStrategy
210
+ }).meta({
211
+ description: "Ethereum-like execute contract data",
212
+ id: "EthereumLikeExecuteContractData"
213
+ });
214
+ const zEthereumLikeSendData = zEthereumCommonTransactionData.extend({
215
+ type: z.literal(zEthereumLikeTransferTransactionType.enum.ETHEREUM_LIKE_SEND),
216
+ feeStrategy: zEthereumLikeFeeStrategy
217
+ }).meta({
218
+ description: "Ethereum-like send data",
219
+ id: "EthereumLikeSendData"
220
+ });
221
+ const MAX_VALIDATORS_PER_BATCH = 150;
222
+ const zEthereumLikeStakingProvider = z.string().nonempty().meta({ description: "Staking provider to use, as identified by the staking validators endpoint" });
223
+ const zEthereumLikeStakingDepositData = zEthereumCommonTransactionData.omit({
224
+ recipient: true,
225
+ amount: true
226
+ }).extend({
227
+ type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_DEPOSIT),
228
+ feeStrategy: zEthereumLikeFeeStrategy,
229
+ amountPerValidator: zUnsignedIntString.meta({ description: "Amount to stake per validator" }),
230
+ numberOfValidators: zUnsignedIntString.refine((v) => {
231
+ const n = BigInt(v);
232
+ return n >= 1n && n <= BigInt(MAX_VALIDATORS_PER_BATCH);
233
+ }, { message: `Number of validators must be between 1 and ${MAX_VALIDATORS_PER_BATCH}` }).meta({ description: "Number of validators to stake with" }),
234
+ stakingProvider: zEthereumLikeStakingProvider,
235
+ withdrawalAddress: z.string().regex(/^0x[a-fA-F0-9]{40}$/, { message: "Withdrawal address must be 20 bytes" }).meta({ description: "Execution-layer withdrawal address in hexadecimal format (20 bytes)" })
236
+ }).meta({
237
+ description: "Ethereum-like staking deposit data",
238
+ id: "EthereumLikeStakingDepositData"
239
+ });
240
+ const zEthereumLikeStakingTopUpData = zEthereumCommonTransactionData.omit({
241
+ recipient: true,
242
+ amount: true
243
+ }).extend({
244
+ type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_TOP_UP),
245
+ feeStrategy: zEthereumLikeFeeStrategy,
246
+ validators: z.array(z.object({
247
+ validatorPubKey: zHexDataString.refine((v) => v.length === 98, { message: "Validator public key must be 48 bytes" }).meta({ description: "Validator public key in hexadecimal format (48 bytes)" }),
248
+ amount: zUnsignedIntString.meta({ description: "Amount to stake per validator" })
249
+ })).min(1, { message: "A top-up must include at least one validator" })
250
+ }).meta({
251
+ description: "Ethereum-like staking top-up deposit data",
252
+ id: "EthereumLikeStakingTopUpData"
253
+ });
254
+ const zEthereumLikeStakingWithdrawData = zEthereumCommonTransactionData.omit({ recipient: true }).extend({
255
+ type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_WITHDRAW),
256
+ feeStrategy: zEthereumLikeFeeStrategy,
257
+ validatorPubKey: zHexDataString.refine((v) => v.length === 98, { message: "Validator public key must be 48 bytes" }).meta({ description: "Validator public key in hexadecimal format (48 bytes)" }),
258
+ maxExecutionFees: zUnsignedIntString.meta({ description: "Max execution fee for the withdrawal transaction (in wei)" }).optional()
259
+ }).meta({
260
+ description: "Ethereum-like staking withdraw data",
261
+ id: "EthereumLikeStakingWithdrawData"
262
+ });
263
+ const zEthereumLikeStakingConsolidateData = zEthereumCommonTransactionData.omit({ recipient: true }).extend({
264
+ type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_CONSOLIDATE),
265
+ feeStrategy: zEthereumLikeFeeStrategy,
266
+ sourcePubKey: zHexDataString.refine((v) => v.length === 98, { message: "Source validator public key must be 48 bytes" }).meta({ description: "Source validator public key in hexadecimal format (48 bytes)" }),
267
+ targetPubKey: zHexDataString.refine((v) => v.length === 98, { message: "Target validator public key must be 48 bytes" }).meta({ description: "Target validator public key in hexadecimal format (48 bytes)" }),
268
+ maxExecutionFees: zUnsignedIntString.meta({ description: "Max execution fee for the consolidation transaction (in wei)" }).optional()
269
+ }).meta({
270
+ description: "Ethereum-like staking consolidate data",
271
+ id: "EthereumLikeStakingConsolidateData"
272
+ });
273
+ const zEthereumLikeStakingUpgradeData = zEthereumCommonTransactionData.omit({ recipient: true }).extend({
274
+ type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_UPGRADE),
275
+ feeStrategy: zEthereumLikeFeeStrategy,
276
+ validatorPubKey: zHexDataString.refine((v) => v.length === 98, { message: "Validator public key must be 48 bytes" }).meta({ description: "Validator public key in hexadecimal format (48 bytes)" }),
277
+ maxExecutionFees: zUnsignedIntString.meta({ description: "Max execution fee for the upgrade transaction (in wei)" }).optional()
278
+ }).meta({
279
+ description: "Ethereum-like staking upgrade data",
280
+ id: "EthereumLikeStakingUpgradeData"
281
+ });
282
+ z.discriminatedUnion("type", [
283
+ zEthereumLikeDeployContractData,
284
+ zEthereumLikeExecuteContractData,
285
+ zEthereumLikeSendData,
286
+ zEthereumLikeStakingDepositData,
287
+ zEthereumLikeStakingTopUpData,
288
+ zEthereumLikeStakingWithdrawData,
289
+ zEthereumLikeStakingConsolidateData,
290
+ zEthereumLikeStakingUpgradeData
291
+ ]);
292
+ const zValidator = z.object({
293
+ pubkey: z.string(),
294
+ depositAmount: zUnsignedIntString,
295
+ signature: z.string(),
296
+ depositDataRoot: z.string()
297
+ });
298
+ z.object({
299
+ contractAddress: z.string(),
300
+ validators: z.array(zValidator)
301
+ });
302
+ const zEthereumLikeTransferCoinFields = z.object({
303
+ type: zEthereumLikeTransferTransactionType,
304
+ gasPrice: z.string(),
305
+ gasLimit: z.string(),
306
+ nonce: z.string()
307
+ });
308
+ const zEthereumLikeContractCoinFields = zEthereumLikeTransferCoinFields.extend({
309
+ type: zEthereumLikeContractTransactionType,
310
+ contractData: z.string().meta({ description: "Contract deployment or contract execution data" })
311
+ });
312
+ const zEthereumLikeStakingCoinFields = zEthereumLikeContractCoinFields.extend({ type: zEthereumLikeStakingTransactionType });
313
+ const zEthereumLikeStakeDepositValidatorResponse = z.object({
314
+ validatorPubKey: zHexDataString.meta({ description: "Validator public key" }),
315
+ stakingProvider: zEthereumLikeStakingProvider.nullable().meta({ description: "Staking provider inferred from the validator public key, when known" }),
316
+ withdrawalCredentials: zHexDataString.meta({ description: "Validator withdrawal credentials" }),
317
+ withdrawalAddress: z.string().nullable().meta({ description: "Execution withdrawal address, when encoded by the credentials" }),
318
+ signature: zHexDataString.meta({ description: "BLS deposit signature" }),
319
+ depositDataRoot: zHexDataString.meta({ description: "Beacon deposit data root" }),
320
+ amount: zUnsignedIntString.meta({ description: "Validator deposit amount in wei" })
321
+ });
322
+ const zEthereumLikeStakeTopUpValidatorResponse = z.object({
323
+ validatorPubKey: zHexDataString.meta({ description: "Validator public key" }),
324
+ stakingProvider: zEthereumLikeStakingProvider.nullable().meta({ description: "Staking provider inferred from the validator public key, when known" }),
325
+ amount: zUnsignedIntString.meta({ description: "Validator top-up amount in wei" })
326
+ });
327
+ const zEthereumLikeStakeDepositResponseFields = zEthereumLikeStakingCoinFields.extend({
328
+ type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_DEPOSIT),
329
+ validators: z.array(zEthereumLikeStakeDepositValidatorResponse)
330
+ });
331
+ const zEthereumLikeStakeTopUpResponseFields = zEthereumLikeStakingCoinFields.extend({
332
+ type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_TOP_UP),
333
+ validators: z.array(zEthereumLikeStakeTopUpValidatorResponse)
334
+ });
335
+ const zEthereumLikeStakeWithdrawResponseFields = zEthereumLikeStakingCoinFields.extend({
336
+ type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_WITHDRAW),
337
+ validatorPubKey: zHexDataString.meta({ description: "Validator public key" }),
338
+ stakingProvider: zEthereumLikeStakingProvider.nullable().meta({ description: "Staking provider inferred from the validator public key, when known" }),
339
+ withdrawalAmount: zUnsignedIntString.meta({ description: "Requested withdrawal amount in wei" }),
340
+ isFullExit: z.boolean().meta({ description: "Whether the zero amount requests a full exit" }),
341
+ executionFee: zUnsignedIntString.meta({ description: "EIP-7002 request fee in wei" })
342
+ });
343
+ const zEthereumLikeStakeConsolidateResponseFields = zEthereumLikeStakingCoinFields.extend({
344
+ type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_CONSOLIDATE),
345
+ sourcePubKey: zHexDataString.meta({ description: "Source validator public key" }),
346
+ sourceStakingProvider: zEthereumLikeStakingProvider.nullable().meta({ description: "Staking provider inferred from the source validator public key, when known" }),
347
+ targetPubKey: zHexDataString.meta({ description: "Target validator public key" }),
348
+ targetStakingProvider: zEthereumLikeStakingProvider.nullable().meta({ description: "Staking provider inferred from the target validator public key, when known" }),
349
+ executionFee: zUnsignedIntString.meta({ description: "EIP-7251 request fee in wei" })
350
+ });
351
+ const zEthereumLikeStakeUpgradeResponseFields = zEthereumLikeStakingCoinFields.extend({
352
+ type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_UPGRADE),
353
+ validatorPubKey: zHexDataString.meta({ description: "Validator public key" }),
354
+ stakingProvider: zEthereumLikeStakingProvider.nullable().meta({ description: "Staking provider inferred from the validator public key, when known" }),
355
+ executionFee: zUnsignedIntString.meta({ description: "EIP-7251 request fee in wei" })
356
+ });
357
+ z.discriminatedUnion("type", [
358
+ zCommonTransactionResponse.extend(zEthereumLikeTransferCoinFields.shape).meta({ description: "Ethereum-like transfer transaction" }),
359
+ zCommonTransactionResponse.extend(zEthereumLikeContractCoinFields.shape).meta({ description: "Ethereum-like contract transaction" }),
360
+ zCommonTransactionResponse.extend(zEthereumLikeStakeDepositResponseFields.shape).meta({ description: "Ethereum validator deposit transaction" }),
361
+ zCommonTransactionResponse.extend(zEthereumLikeStakeTopUpResponseFields.shape).meta({ description: "Ethereum validator top-up transaction" }),
362
+ zCommonTransactionResponse.extend(zEthereumLikeStakeWithdrawResponseFields.shape).meta({ description: "Ethereum validator withdrawal request transaction" }),
363
+ zCommonTransactionResponse.extend(zEthereumLikeStakeConsolidateResponseFields.shape).meta({ description: "Ethereum validator consolidation request transaction" }),
364
+ zCommonTransactionResponse.extend(zEthereumLikeStakeUpgradeResponseFields.shape).meta({ description: "Ethereum validator credential upgrade transaction" })
365
+ ]).meta({ description: "Ethereum-like transaction" });
53
366
  //#endregion
54
- export { HSM_OBJECT_TYPES };
367
+ export { HSM_OBJECT_TYPES, zEthereumLikeEip1559FeeStrategy };
55
368
 
56
369
  //# sourceMappingURL=index.mjs.map
package/lib/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/hsm/hsm-requests-types.ts"],"sourcesContent":["import z from \"zod\";\n\nexport const HSM_OBJECT_TYPES = [\n \"Account\",\n \"AdminGroup\",\n \"AssetManager\",\n \"Exchange\",\n \"Group\",\n \"Partition\",\n \"PledgeState\",\n \"Policy\",\n \"AccountRuleSet\",\n \"Tradelink\",\n \"User\",\n \"WalletAccountList\",\n \"Whitelist\",\n] as const;\n\nexport type HsmObjectType = (typeof HSM_OBJECT_TYPES)[number];\n\nexport const zObjectsVersionResponse = z.object({\n cid: z.coerce.string(),\n total_accounts: z.number(),\n accounts_report: z.record(z.string(), z.number()),\n total_objects: z.number(),\n objects_report: z.record(z.string(), z.number()),\n});\n\nexport type ObjectsVersionResponse = z.infer<typeof zObjectsVersionResponse>;\n\nconst zVersionedObjectInfo = z.object({\n uid: z.string(),\n object_type: z.string(),\n index: z.number(),\n hsm_object_type_id: z.number(),\n anti_replay_value: z.number(),\n expected_anti_replay_value: z.number(),\n schema_version: z.number(),\n});\n\nexport type VersionedObjectInfo = z.infer<typeof zVersionedObjectInfo>;\n\nexport const zGetObjectsInfoResponse = z.object({\n cid: z.coerce.string(),\n uid: z.string().nullable(),\n objects_count: z.number(),\n hsm_requests_count: z.number(),\n status: z.string(),\n valid_objects: z.array(zVersionedObjectInfo),\n invalid_objects: z.array(zVersionedObjectInfo),\n objects_missing_merkle_tree_id: z.array(z.string()),\n});\n\nexport type GetObjectsInfoResponse = z.infer<typeof zGetObjectsInfoResponse>;\n\nexport const zObjectsContentResponse = z.object({\n cid: z.coerce.string(),\n uid: z.string().nullable(),\n objects_count: z.number(),\n hsm_requests_count: z.number(),\n status: z.string(),\n // Structure varies by object type; intentionally untyped for raw dump display.\n object_contents: z.array(z.unknown()),\n objects_missing_merkle_tree_id: z.array(z.string()),\n});\n\nexport type ObjectsContentResponse = z.infer<typeof zObjectsContentResponse>;\n"],"mappings":";;AAEA,MAAa,mBAAmB;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAIuC,EAAE,OAAO;CAC9C,KAAK,EAAE,OAAO,OAAO;CACrB,gBAAgB,EAAE,OAAO;CACzB,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC;CAChD,eAAe,EAAE,OAAO;CACxB,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC;AACjD,CAAC;AAID,MAAM,uBAAuB,EAAE,OAAO;CACpC,KAAK,EAAE,OAAO;CACd,aAAa,EAAE,OAAO;CACtB,OAAO,EAAE,OAAO;CAChB,oBAAoB,EAAE,OAAO;CAC7B,mBAAmB,EAAE,OAAO;CAC5B,4BAA4B,EAAE,OAAO;CACrC,gBAAgB,EAAE,OAAO;AAC3B,CAAC;AAIsC,EAAE,OAAO;CAC9C,KAAK,EAAE,OAAO,OAAO;CACrB,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS;CACzB,eAAe,EAAE,OAAO;CACxB,oBAAoB,EAAE,OAAO;CAC7B,QAAQ,EAAE,OAAO;CACjB,eAAe,EAAE,MAAM,oBAAoB;CAC3C,iBAAiB,EAAE,MAAM,oBAAoB;CAC7C,gCAAgC,EAAE,MAAM,EAAE,OAAO,CAAC;AACpD,CAAC;AAIsC,EAAE,OAAO;CAC9C,KAAK,EAAE,OAAO,OAAO;CACrB,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS;CACzB,eAAe,EAAE,OAAO;CACxB,oBAAoB,EAAE,OAAO;CAC7B,QAAQ,EAAE,OAAO;CAEjB,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC;CACpC,gCAAgC,EAAE,MAAM,EAAE,OAAO,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"index.mjs","names":["z"],"sources":["../src/hsm/hsm-requests-types.ts","../src/zod-utils.ts","../src/networks/common.ts","../src/networks/ethereum/schemas.ts"],"sourcesContent":["import z from \"zod\";\n\nexport const HSM_OBJECT_TYPES = [\n \"Account\",\n \"AdminGroup\",\n \"AssetManager\",\n \"Exchange\",\n \"Group\",\n \"Partition\",\n \"PledgeState\",\n \"Policy\",\n \"AccountRuleSet\",\n \"Tradelink\",\n \"User\",\n \"WalletAccountList\",\n \"Whitelist\",\n] as const;\n\nexport type HsmObjectType = (typeof HSM_OBJECT_TYPES)[number];\n\nexport const zObjectsVersionResponse = z.object({\n cid: z.coerce.string(),\n total_accounts: z.number(),\n accounts_report: z.record(z.string(), z.number()),\n total_objects: z.number(),\n objects_report: z.record(z.string(), z.number()),\n});\n\nexport type ObjectsVersionResponse = z.infer<typeof zObjectsVersionResponse>;\n\nconst zVersionedObjectInfo = z.object({\n uid: z.string(),\n object_type: z.string(),\n index: z.number(),\n hsm_object_type_id: z.number(),\n anti_replay_value: z.number(),\n expected_anti_replay_value: z.number(),\n schema_version: z.number(),\n});\n\nexport type VersionedObjectInfo = z.infer<typeof zVersionedObjectInfo>;\n\nexport const zGetObjectsInfoResponse = z.object({\n cid: z.coerce.string(),\n uid: z.string().nullable(),\n objects_count: z.number(),\n hsm_requests_count: z.number(),\n status: z.string(),\n valid_objects: z.array(zVersionedObjectInfo),\n invalid_objects: z.array(zVersionedObjectInfo),\n objects_missing_merkle_tree_id: z.array(z.string()),\n});\n\nexport type GetObjectsInfoResponse = z.infer<typeof zGetObjectsInfoResponse>;\n\nexport const zObjectsContentResponse = z.object({\n cid: z.coerce.string(),\n uid: z.string().nullable(),\n objects_count: z.number(),\n hsm_requests_count: z.number(),\n status: z.string(),\n // Structure varies by object type; intentionally untyped for raw dump display.\n object_contents: z.array(z.unknown()),\n objects_missing_merkle_tree_id: z.array(z.string()),\n});\n\nexport type ObjectsContentResponse = z.infer<typeof zObjectsContentResponse>;\n","import { z } from \"zod\";\n\nexport const zHexString = z.string().regex(/^[0-9a-fA-F]+$/);\n\nexport const zIntString = z\n .string()\n .nonempty()\n .regex(/^(-?[1-9]\\d*|0)$/);\n\nexport const zUnsignedIntString = z\n .string()\n .nonempty()\n .regex(/^([1-9]\\d*|0)$/);\n\nexport const zCurrencyString = z\n .string()\n .nonempty()\n .max(40)\n .regex(/^\\w+$/)\n .meta({ description: \"Will be deprecated soon, use network instead. Currency\" });\n\nexport const zNetwork = z\n .string()\n .nonempty()\n .max(40)\n .regex(/^\\w+$/)\n .meta({ description: \"Network (Same as currency for now)\" });\n\nexport const zCurrency = z.object({\n network: zNetwork,\n contractAddress: z.string().nonempty().nullable().meta({ description: \"Token issuer\" }),\n tokenIdentifier: z.string().nonempty().nullable().meta({ description: \"Token identifier\" }),\n});\n\nexport const zObjectId = z\n .string()\n .regex(/^[\\w-]+$/) // UUID, GUID, NanoID, CUID... or just a slug\n .nonempty();\n\nexport type ObjectId = z.infer<typeof zObjectId>;\n\nexport const zHsmObjectId = z\n .string()\n .regex(/^[\\w-]+$/) // TODO: what is the exact format of an HSM ID?\n .nonempty();\n\nexport type HsmObjectId = z.infer<typeof zHsmObjectId>;\n\nexport const zHsmObjectName = z.string().min(1).max(45).meta({ description: \"HSM object name\" });\n\n/** DNS hostname or label conforming to RFC 1123. */\nexport const zDns1123Label = z\n .string()\n .min(1)\n .max(63)\n .regex(/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/);\n\n/* v8 ignore next -- @preserve */\nexport const zDateCodec = z.codec(z.iso.datetime(), z.date(), {\n decode: (isoString) => new Date(isoString), // ISO string → Date\n encode: (date) => date.toISOString(), // Date → ISO string\n});\n","import z from \"zod\";\n\nimport type { AccountType } from \"@/generated/prisma/client\";\nimport { zCurrencyString, zUnsignedIntString } from \"@/zod-utils\";\n\n// #region ---------- Utils -----------------------------------------------------------------------\n\nexport type NetworkFamily = Exclude<AccountType, \"RAW_SIGNING\">;\n\nexport const NetworkFamily = {\n BITCOIN_LIKE: \"BITCOIN_LIKE\",\n CANTON_LIKE: \"CANTON_LIKE\",\n CARDANO_LIKE: \"CARDANO_LIKE\",\n ETHEREUM_LIKE: \"ETHEREUM_LIKE\",\n GENERIC_LIKE: \"GENERIC_LIKE\",\n HEDERA_LIKE: \"HEDERA_LIKE\",\n POLKADOT_LIKE: \"POLKADOT_LIKE\",\n RIPPLE_LIKE: \"RIPPLE_LIKE\",\n SOLANA_LIKE: \"SOLANA_LIKE\",\n STELLAR_LIKE: \"STELLAR_LIKE\",\n SUI_LIKE: \"SUI_LIKE\",\n TEZOS_LIKE: \"TEZOS_LIKE\",\n TRON_LIKE: \"TRON_LIKE\",\n} satisfies Record<NetworkFamily, NetworkFamily>;\n\n/**\n * Ensure that this is a hex string and transform it to lowercase with 0x prefix.\n * Not to be used for EIP-55 addresses or other attributes where letter casing is important!\n */\n/* v8 ignore next -- @preserve */\nexport const zHexDataString = z.codec(z.string().regex(/^(?:0x|0X)?[a-fA-F0-9]+$/), z.string(), {\n decode: (hex) => `0x${hex.toLowerCase().replace(\"0x\", \"\")}`,\n encode: (hex) => hex,\n});\n\n// #endregion\n\n// #region ---------- Live Data -------------------------------------------------------------------\n\nexport const zCommonLiveData = z.object({\n id: z.string().meta({ description: \"Account internal unique identifier\" }),\n balance: z\n .object({\n total: z.string().meta({ description: \"Total balance\" }),\n pending: z.string().meta({ description: \"Pending balance\" }),\n reserved: z\n .string()\n .meta({ description: \"Minimum balance the account must always keep (0 if none)\" }),\n })\n .meta({ description: \"Balance fields\" }),\n});\n\n// #endregion\n\n// #region ---------- Transaction Data ------------------------------------------------------------\n\n/**\n * Schema of `Request.data.transaction`\n */\nexport const zCommonTransactionData = z.object({\n amount: zUnsignedIntString.meta({ description: \"Transaction amount\" }),\n currency: zCurrencyString.meta({\n description: \"Will be deprecated soon, use Account.network. Transaction currency\",\n }), // TODO: to remove, use account.network instead\n maxFee: zUnsignedIntString.nullable().meta({ description: \"Transaction max fee\" }),\n recipient: z.string().nonempty().meta({ description: \"Transaction recipient\" }),\n});\n\nexport const zFeeStrategyCustom = z.object({\n type: z.enum([\"SLOW\", \"NORMAL\", \"FAST\", \"CUSTOM\"]),\n});\n\nexport const zFeeStrategy = z.object({\n type: z.enum([\"SLOW\", \"NORMAL\", \"FAST\"]),\n});\n\n// #endregion\n\n// #region ---------- Transaction Response --------------------------------------------------------\n\nexport const zTransactionStatus = z.enum([\"SUCCESSFUL\", \"FAILED\", \"PENDING\", \"UNKNOWN\"]);\n\nexport type TransactionStatus = z.infer<typeof zTransactionStatus>;\n\nexport const zCommonTransactionResponse = z.object({\n id: z.string().meta({ description: \"Internal unique identifier\" }),\n hash: z.string().meta({ description: \"Transaction hash\" }),\n block: z.object({\n height: z.string().nullable().meta({ description: \"Transaction block height\" }),\n time: z.string().nullable().meta({ description: \"Transaction block time\" }),\n }),\n status: zTransactionStatus.meta({ description: \"Transaction status\" }),\n confirmations: z.string().meta({ description: \"Block confirmations\" }),\n amount: z.string().meta({ description: \"Transaction amount\" }),\n fee: z.string().meta({ description: \"Transaction fee\" }),\n senders: z\n .array(z.string())\n .meta({ description: \"Senders (can be multiple for UTXOs-based accounts)\" }),\n recipients: z\n .array(z.string())\n .meta({ description: \"Recipients (can be multiple for multi-output transactions)\" }),\n});\n\n// #endregion\n","import z from \"zod\";\n\nimport { zIntString, zUnsignedIntString } from \"@/zod-utils\";\n\nimport {\n NetworkFamily,\n zCommonLiveData,\n zCommonTransactionData,\n zCommonTransactionResponse,\n zFeeStrategyCustom,\n zHexDataString,\n} from \"../common\";\n\n// #region ---------- Asset Fields ----------------------------------------------------------------\n\nexport const zEthereumLikeAssetFields = z\n .object({\n type: z.literal(NetworkFamily.ETHEREUM_LIKE).meta({ description: \"Account type\" }),\n address: z.string().nullable().meta({ description: \"Account address\" }),\n })\n .meta({ description: \"Ethereum-like\" });\n\n// #endregion\n\n// #region ---------- Live Data -------------------------------------------------------------------\n\nconst zEthereumLikeStakingData = z\n .object({\n totalStaking: z.string().meta({ description: \"Total staked amount\" }),\n totalRewards: z.string().meta({ description: \"Total of rewards\" }),\n availableRewards: z.string().meta({ description: \"Available rewards\" }).optional(),\n networkApy: z.number().meta({ description: \"Network APY\" }).optional(),\n })\n .nullable()\n .meta({ description: \"Ethereum-like staking data\" });\n\nexport const zEthereumLikeStakingFields = z.object({\n type: z.literal(NetworkFamily.ETHEREUM_LIKE).meta({ description: \"Account type\" }),\n staking: zEthereumLikeStakingData.optional(),\n});\n\nexport const zEthereumLikeLiveData = zCommonLiveData\n .extend(zEthereumLikeStakingFields.shape)\n .meta({ description: \"Ethereum-like\" });\n\n// #endregion\n\n// #region ---------- Estimated Fee ---------------------------------------------------------------\n\nexport const zEthereumLikeEstimatedFees = z\n .object({\n type: z.literal(NetworkFamily.ETHEREUM_LIKE),\n baseFees: zIntString,\n gasLimit: zIntString,\n nonce: z.string(),\n priorityFees: zIntString,\n executionFees: zIntString.nullish(),\n maxExecutionFees: zIntString.nullish(),\n })\n .meta({ description: \"Ethereum-like fees\" });\n\n// #endregion\n\n// #region ---------- Transaction Type ------------------------------------------------------------\n\nconst zEthereumLikeTransferTransactionType = z\n .enum([\"ETHEREUM_LIKE_SEND\", \"ETHEREUM_LIKE_RECEIVE\"])\n .meta({ description: \"Ethereum-like transaction type\" });\n\nconst zEthereumLikeContractTransactionType = z\n .enum([\"ETHEREUM_LIKE_EXECUTE_CONTRACT\", \"ETHEREUM_LIKE_DEPLOY_CONTRACT\"])\n .meta({ description: \"Ethereum-like transaction type\" });\n\nconst zEthereumLikeStakingTransactionType = z\n .enum([\n \"ETHEREUM_LIKE_STAKE_DEPOSIT\",\n \"ETHEREUM_LIKE_STAKE_TOP_UP\",\n \"ETHEREUM_LIKE_STAKE_WITHDRAW\",\n \"ETHEREUM_LIKE_STAKE_CONSOLIDATE\",\n \"ETHEREUM_LIKE_STAKE_UPGRADE\",\n ])\n .meta({ description: \"Ethereum-like staking transaction type\" });\n\nexport const zEthereumLikeTransactionType = z\n .enum([\n ...zEthereumLikeTransferTransactionType.options,\n ...zEthereumLikeContractTransactionType.options,\n ...zEthereumLikeStakingTransactionType.options,\n ])\n .meta({\n description: \"Ethereum-like transaction type\",\n });\n\nexport type EthereumLikeTransactionType = z.infer<typeof zEthereumLikeTransactionType>;\n\n// #endregion\n\n// #region ---------- Transaction Data ------------------------------------------------------------\n\nconst zEthereumLikeLegacyFeeStrategy = zFeeStrategyCustom\n .extend({\n gasPrice: zUnsignedIntString.meta({ description: \"Gas price\" }),\n gasLimit: zUnsignedIntString.meta({ description: \"Gas limit\" }),\n })\n .meta({ description: \"Ethereum-like legacy fee strategy\" });\n\nexport const zEthereumLikeEip1559FeeStrategy = zFeeStrategyCustom\n .extend({\n maxPriorityFeePerGas: zUnsignedIntString.meta({ description: \"Maximum priority fee per gas\" }),\n maxFeePerGas: zUnsignedIntString.meta({ description: \"Maximum fee per gas (base + priority)\" }),\n gasLimit: zUnsignedIntString.meta({ description: \"Gas limit\" }),\n })\n .meta({ description: \"Ethereum-like EIP-1559 fee strategy\" });\n\nexport type EthereumLikeEip1559FeeStrategy = z.infer<typeof zEthereumLikeEip1559FeeStrategy>;\n\nconst zEthereumLikeFeeStrategy = z\n .union([zEthereumLikeLegacyFeeStrategy, zEthereumLikeEip1559FeeStrategy])\n .meta({\n description: \"Ethereum-like fee strategy\",\n id: \"EthereumLikeFeeStrategy\",\n });\n\nconst zEthereumCommonTransactionData = zCommonTransactionData.extend({\n replacingTxHash: z.string().optional().meta({\n description:\n \"Hash of the original transaction to replace. If provided, the new transaction will replace the one matching this hash.\",\n }),\n});\n\nconst zEthereumLikeDeployContractData = zEthereumCommonTransactionData\n .extend({\n type: z.literal(zEthereumLikeContractTransactionType.enum.ETHEREUM_LIKE_DEPLOY_CONTRACT),\n recipient: z.literal(\"\"), // force an empty string\n contractData: zHexDataString.meta({ description: \"Contract data in hexadecimal format\" }),\n feeStrategy: zEthereumLikeFeeStrategy,\n })\n .meta({\n description: \"Ethereum-like deploy contract data\",\n id: \"EthereumLikeDeployContractData\",\n });\n\nconst zEthereumLikeExecuteContractData = zEthereumCommonTransactionData\n .extend({\n type: z.literal(zEthereumLikeContractTransactionType.enum.ETHEREUM_LIKE_EXECUTE_CONTRACT),\n contractData: zHexDataString.meta({ description: \"Contract call data in hexadecimal format\" }),\n feeStrategy: zEthereumLikeFeeStrategy,\n })\n .meta({\n description: \"Ethereum-like execute contract data\",\n id: \"EthereumLikeExecuteContractData\",\n });\n\nexport const zEthereumLikeSendData = zEthereumCommonTransactionData\n .extend({\n type: z.literal(zEthereumLikeTransferTransactionType.enum.ETHEREUM_LIKE_SEND),\n feeStrategy: zEthereumLikeFeeStrategy,\n })\n .meta({\n description: \"Ethereum-like send data\",\n id: \"EthereumLikeSendData\",\n });\n\n// Upper bound enforced by les-wallet batch provisioning (Kiln caps at 150 validators per request).\nconst MAX_VALIDATORS_PER_BATCH = 150;\n\nconst zEthereumLikeStakingProvider = z.string().nonempty().meta({\n description: \"Staking provider to use, as identified by the staking validators endpoint\",\n});\n\nexport const zEthereumLikeStakingDepositData = zEthereumCommonTransactionData\n .omit({ recipient: true, amount: true })\n .extend({\n type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_DEPOSIT),\n feeStrategy: zEthereumLikeFeeStrategy,\n amountPerValidator: zUnsignedIntString.meta({ description: \"Amount to stake per validator\" }),\n numberOfValidators: zUnsignedIntString\n .refine(\n (v) => {\n const n = BigInt(v);\n return n >= 1n && n <= BigInt(MAX_VALIDATORS_PER_BATCH);\n },\n { message: `Number of validators must be between 1 and ${MAX_VALIDATORS_PER_BATCH}` },\n )\n .meta({\n description: \"Number of validators to stake with\",\n }),\n stakingProvider: zEthereumLikeStakingProvider,\n withdrawalAddress: z\n .string()\n .regex(/^0x[a-fA-F0-9]{40}$/, { message: \"Withdrawal address must be 20 bytes\" })\n .meta({ description: \"Execution-layer withdrawal address in hexadecimal format (20 bytes)\" }),\n })\n .meta({\n description: \"Ethereum-like staking deposit data\",\n id: \"EthereumLikeStakingDepositData\",\n });\n\nexport const zEthereumLikeStakingTopUpData = zEthereumCommonTransactionData\n .omit({ recipient: true, amount: true })\n .extend({\n type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_TOP_UP),\n feeStrategy: zEthereumLikeFeeStrategy,\n validators: z\n .array(\n z.object({\n validatorPubKey: zHexDataString\n .refine((v) => v.length === 2 + 2 * 48, {\n message: \"Validator public key must be 48 bytes\",\n })\n .meta({ description: \"Validator public key in hexadecimal format (48 bytes)\" }),\n amount: zUnsignedIntString.meta({ description: \"Amount to stake per validator\" }),\n }),\n )\n .min(1, { message: \"A top-up must include at least one validator\" }),\n })\n .meta({\n description: \"Ethereum-like staking top-up deposit data\",\n id: \"EthereumLikeStakingTopUpData\",\n });\n\nexport const zEthereumLikeStakingWithdrawData = zEthereumCommonTransactionData\n .omit({ recipient: true })\n .extend({\n type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_WITHDRAW),\n feeStrategy: zEthereumLikeFeeStrategy,\n validatorPubKey: zHexDataString\n .refine((v) => v.length === 2 + 2 * 48, {\n message: \"Validator public key must be 48 bytes\",\n })\n .meta({ description: \"Validator public key in hexadecimal format (48 bytes)\" }),\n maxExecutionFees: zUnsignedIntString\n .meta({\n description: \"Max execution fee for the withdrawal transaction (in wei)\",\n })\n .optional(),\n })\n .meta({\n description: \"Ethereum-like staking withdraw data\",\n id: \"EthereumLikeStakingWithdrawData\",\n });\n\nexport const zEthereumLikeStakingConsolidateData = zEthereumCommonTransactionData\n .omit({ recipient: true })\n .extend({\n type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_CONSOLIDATE),\n feeStrategy: zEthereumLikeFeeStrategy,\n sourcePubKey: zHexDataString\n .refine((v) => v.length === 2 + 2 * 48, {\n message: \"Source validator public key must be 48 bytes\",\n })\n .meta({ description: \"Source validator public key in hexadecimal format (48 bytes)\" }),\n targetPubKey: zHexDataString\n .refine((v) => v.length === 2 + 2 * 48, {\n message: \"Target validator public key must be 48 bytes\",\n })\n .meta({ description: \"Target validator public key in hexadecimal format (48 bytes)\" }),\n maxExecutionFees: zUnsignedIntString\n .meta({\n description: \"Max execution fee for the consolidation transaction (in wei)\",\n })\n .optional(),\n })\n .meta({\n description: \"Ethereum-like staking consolidate data\",\n id: \"EthereumLikeStakingConsolidateData\",\n });\n\nexport const zEthereumLikeStakingUpgradeData = zEthereumCommonTransactionData\n .omit({ recipient: true })\n .extend({\n type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_UPGRADE),\n feeStrategy: zEthereumLikeFeeStrategy,\n validatorPubKey: zHexDataString\n .refine((v) => v.length === 2 + 2 * 48, {\n message: \"Validator public key must be 48 bytes\",\n })\n .meta({ description: \"Validator public key in hexadecimal format (48 bytes)\" }),\n maxExecutionFees: zUnsignedIntString\n .meta({\n description: \"Max execution fee for the upgrade transaction (in wei)\",\n })\n .optional(),\n })\n .meta({\n description: \"Ethereum-like staking upgrade data\",\n id: \"EthereumLikeStakingUpgradeData\",\n });\n\nexport const zEthereumLikeTransactionData = z.discriminatedUnion(\"type\", [\n zEthereumLikeDeployContractData,\n zEthereumLikeExecuteContractData,\n zEthereumLikeSendData,\n zEthereumLikeStakingDepositData,\n zEthereumLikeStakingTopUpData,\n zEthereumLikeStakingWithdrawData,\n zEthereumLikeStakingConsolidateData,\n zEthereumLikeStakingUpgradeData,\n]);\n\nexport type EthereumLikeTransactionData = z.infer<typeof zEthereumLikeTransactionData>;\n\n// #endregion\n\n// #region ---------- Staking Provisioning --------------------------------------------------------\n\nexport const zValidator = z.object({\n pubkey: z.string(),\n depositAmount: zUnsignedIntString,\n signature: z.string(),\n depositDataRoot: z.string(),\n});\n\nexport type Validator = z.infer<typeof zValidator>;\n\nexport const zStakingProvisioning = z.object({\n contractAddress: z.string(),\n validators: z.array(zValidator),\n});\n\nexport type StakingProvisioning = z.infer<typeof zStakingProvisioning>;\n\n// #endregion\n\n// #region ---------- Transaction Response --------------------------------------------------------\n\nconst zEthereumLikeTransferCoinFields = z.object({\n type: zEthereumLikeTransferTransactionType,\n gasPrice: z.string(),\n gasLimit: z.string(),\n nonce: z.string(),\n});\n\nconst zEthereumLikeContractCoinFields = zEthereumLikeTransferCoinFields.extend({\n type: zEthereumLikeContractTransactionType,\n contractData: z.string().meta({ description: \"Contract deployment or contract execution data\" }),\n});\n\nconst zEthereumLikeStakingCoinFields = zEthereumLikeContractCoinFields.extend({\n type: zEthereumLikeStakingTransactionType,\n});\n\nconst zEthereumLikeStakeDepositValidatorResponse = z.object({\n validatorPubKey: zHexDataString.meta({ description: \"Validator public key\" }),\n stakingProvider: zEthereumLikeStakingProvider\n .nullable()\n .meta({ description: \"Staking provider inferred from the validator public key, when known\" }),\n withdrawalCredentials: zHexDataString.meta({ description: \"Validator withdrawal credentials\" }),\n withdrawalAddress: z\n .string()\n .nullable()\n .meta({ description: \"Execution withdrawal address, when encoded by the credentials\" }),\n signature: zHexDataString.meta({ description: \"BLS deposit signature\" }),\n depositDataRoot: zHexDataString.meta({ description: \"Beacon deposit data root\" }),\n amount: zUnsignedIntString.meta({ description: \"Validator deposit amount in wei\" }),\n});\n\nconst zEthereumLikeStakeTopUpValidatorResponse = z.object({\n validatorPubKey: zHexDataString.meta({ description: \"Validator public key\" }),\n stakingProvider: zEthereumLikeStakingProvider\n .nullable()\n .meta({ description: \"Staking provider inferred from the validator public key, when known\" }),\n amount: zUnsignedIntString.meta({ description: \"Validator top-up amount in wei\" }),\n});\n\nconst zEthereumLikeStakeDepositResponseFields = zEthereumLikeStakingCoinFields.extend({\n type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_DEPOSIT),\n validators: z.array(zEthereumLikeStakeDepositValidatorResponse),\n});\n\nconst zEthereumLikeStakeTopUpResponseFields = zEthereumLikeStakingCoinFields.extend({\n type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_TOP_UP),\n validators: z.array(zEthereumLikeStakeTopUpValidatorResponse),\n});\n\nconst zEthereumLikeStakeWithdrawResponseFields = zEthereumLikeStakingCoinFields.extend({\n type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_WITHDRAW),\n validatorPubKey: zHexDataString.meta({ description: \"Validator public key\" }),\n stakingProvider: zEthereumLikeStakingProvider\n .nullable()\n .meta({ description: \"Staking provider inferred from the validator public key, when known\" }),\n withdrawalAmount: zUnsignedIntString.meta({ description: \"Requested withdrawal amount in wei\" }),\n isFullExit: z.boolean().meta({ description: \"Whether the zero amount requests a full exit\" }),\n executionFee: zUnsignedIntString.meta({ description: \"EIP-7002 request fee in wei\" }),\n});\n\nconst zEthereumLikeStakeConsolidateResponseFields = zEthereumLikeStakingCoinFields.extend({\n type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_CONSOLIDATE),\n sourcePubKey: zHexDataString.meta({ description: \"Source validator public key\" }),\n sourceStakingProvider: zEthereumLikeStakingProvider.nullable().meta({\n description: \"Staking provider inferred from the source validator public key, when known\",\n }),\n targetPubKey: zHexDataString.meta({ description: \"Target validator public key\" }),\n targetStakingProvider: zEthereumLikeStakingProvider.nullable().meta({\n description: \"Staking provider inferred from the target validator public key, when known\",\n }),\n executionFee: zUnsignedIntString.meta({ description: \"EIP-7251 request fee in wei\" }),\n});\n\nconst zEthereumLikeStakeUpgradeResponseFields = zEthereumLikeStakingCoinFields.extend({\n type: z.literal(zEthereumLikeStakingTransactionType.enum.ETHEREUM_LIKE_STAKE_UPGRADE),\n validatorPubKey: zHexDataString.meta({ description: \"Validator public key\" }),\n stakingProvider: zEthereumLikeStakingProvider\n .nullable()\n .meta({ description: \"Staking provider inferred from the validator public key, when known\" }),\n executionFee: zUnsignedIntString.meta({ description: \"EIP-7251 request fee in wei\" }),\n});\n\nexport const zEthereumLikeTransactionResponse = z\n .discriminatedUnion(\"type\", [\n zCommonTransactionResponse\n .extend(zEthereumLikeTransferCoinFields.shape)\n .meta({ description: \"Ethereum-like transfer transaction\" }),\n zCommonTransactionResponse\n .extend(zEthereumLikeContractCoinFields.shape)\n .meta({ description: \"Ethereum-like contract transaction\" }),\n zCommonTransactionResponse\n .extend(zEthereumLikeStakeDepositResponseFields.shape)\n .meta({ description: \"Ethereum validator deposit transaction\" }),\n zCommonTransactionResponse\n .extend(zEthereumLikeStakeTopUpResponseFields.shape)\n .meta({ description: \"Ethereum validator top-up transaction\" }),\n zCommonTransactionResponse\n .extend(zEthereumLikeStakeWithdrawResponseFields.shape)\n .meta({ description: \"Ethereum validator withdrawal request transaction\" }),\n zCommonTransactionResponse\n .extend(zEthereumLikeStakeConsolidateResponseFields.shape)\n .meta({ description: \"Ethereum validator consolidation request transaction\" }),\n zCommonTransactionResponse\n .extend(zEthereumLikeStakeUpgradeResponseFields.shape)\n .meta({ description: \"Ethereum validator credential upgrade transaction\" }),\n ])\n .meta({ description: \"Ethereum-like transaction\" });\n\n// #endregion\n"],"mappings":"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"}