@ledgerhq/revault-api 1.89.0 → 1.91.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.mjs CHANGED
@@ -7,13 +7,21 @@ import z, { z as z$1 } from "zod";
7
7
  *
8
8
  * A null `admissibleOperations` means admission is not reported — an older backend, or a chain
9
9
  * that has no such notion — and is deliberately permissive: refusing every action on a missing
10
- * verdict would disable a whole account, while the broadcast 409 remains the backstop.
10
+ * verdict would disable a whole account, while the broadcast 409 remains the backstop. A pending
11
+ * credential upgrade is still honoured then: it is reported, not missing, and locks the position.
11
12
  *
12
13
  * Lives apart from `read-models` so `app-lib` can publish it without the bundler following that
13
14
  * module's runtime imports into every consumer of this package. The imports here are types only,
14
15
  * and erased.
15
16
  */
16
- const admitsStakeOperation = (position, operation) => position.admissibleOperations == null || position.admissibleOperations.includes(operation);
17
+ const admitsStakeOperation = (position, operation) => position.admissibleOperations == null ? !position.pendingOperations?.some((_) => _.kind === "CREDENTIAL_UPGRADE") : position.admissibleOperations.includes(operation);
18
+ //#endregion
19
+ //#region src/core/accounts/stake-sort.ts
20
+ const zStakeSortByField = z$1.enum([
21
+ "staked",
22
+ "rewards",
23
+ "total"
24
+ ]);
17
25
  //#endregion
18
26
  //#region src/core/accounts/staking-networks.ts
19
27
  /**
@@ -386,6 +394,23 @@ const TRANSACTION_CHECK_SUPPORTED_TYPES = [
386
394
  */
387
395
  const isTransactionCheckSupportedType = (type) => TRANSACTION_CHECK_SUPPORTED_TYPES.some((supportedType) => supportedType === type);
388
396
  //#endregion
397
+ //#region src/entrypoints/api/accounts/sort.ts
398
+ const zAccountSortByField = z$1.enum([
399
+ "name",
400
+ "currency",
401
+ "index",
402
+ "createdAt",
403
+ "updatedAt"
404
+ ]);
405
+ //#endregion
406
+ //#region src/entrypoints/api/groups/sort.ts
407
+ const zGroupSortByField = z$1.enum([
408
+ "name",
409
+ "status",
410
+ "createdAt",
411
+ "updatedAt"
412
+ ]);
413
+ //#endregion
389
414
  //#region src/services/hsm/hsm-requests-types.ts
390
415
  const HSM_OBJECT_TYPES = [
391
416
  "Account",
@@ -438,6 +463,48 @@ z.object({
438
463
  objects_missing_merkle_tree_id: z.array(z.string())
439
464
  });
440
465
  //#endregion
441
- export { ETHEREUM_STAKING_NETWORKS, HSM_COMPARATORS, HSM_COMPARE_REASONS, HSM_OBJECT_TYPES, admitsStakeOperation, isEthereumStakingNetwork, isTransactionCheckSupportedType, zEthereumLikeEip1559FeeStrategy };
466
+ //#region src/entrypoints/api/policies/sort.ts
467
+ const zPolicySortByField = z$1.enum([
468
+ "name",
469
+ "createdAt",
470
+ "updatedAt"
471
+ ]);
472
+ //#endregion
473
+ //#region src/entrypoints/api/portfolios/sort.ts
474
+ const zPortfolioSortByField = z$1.enum([
475
+ "name",
476
+ "accountCount",
477
+ "memberCount",
478
+ "createdAt",
479
+ "updatedAt"
480
+ ]);
481
+ //#endregion
482
+ //#region src/entrypoints/api/requests/sort.ts
483
+ const zRequestSortByField = z$1.enum([
484
+ "state",
485
+ "expiresAt",
486
+ "createdAt",
487
+ "updatedAt"
488
+ ]);
489
+ //#endregion
490
+ //#region src/entrypoints/api/users/sort.ts
491
+ const zUserSortByField = z$1.enum([
492
+ "name",
493
+ "role",
494
+ "status",
495
+ "createdAt",
496
+ "updatedAt"
497
+ ]);
498
+ //#endregion
499
+ //#region src/entrypoints/api/whitelists/sort.ts
500
+ const zWhitelistSortByField = z$1.enum([
501
+ "name",
502
+ "status",
503
+ "addressCount",
504
+ "createdAt",
505
+ "updatedAt"
506
+ ]);
507
+ //#endregion
508
+ export { ETHEREUM_STAKING_NETWORKS, HSM_COMPARATORS, HSM_COMPARE_REASONS, HSM_OBJECT_TYPES, admitsStakeOperation, isEthereumStakingNetwork, isTransactionCheckSupportedType, zAccountSortByField, zEthereumLikeEip1559FeeStrategy, zGroupSortByField, zPolicySortByField, zPortfolioSortByField, zRequestSortByField, zStakeSortByField, zUserSortByField, zWhitelistSortByField };
442
509
 
443
510
  //# sourceMappingURL=index.mjs.map
package/lib/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["z"],"sources":["../src/core/accounts/stake-admission.ts","../src/core/accounts/staking-networks.ts","../src/core/hsm-comparison.ts","../src/shared/zod-utils.ts","../src/core/networks/common.ts","../src/core/networks/ethereum/schemas.ts","../src/core/scan/supported-types.ts","../src/services/hsm/hsm-requests-types.ts"],"sourcesContent":["import type { Stake, StakeOperation } from \"./read-models\";\n\n/**\n * Whether `operation` may still be started on this position, per the backend that enforces the\n * blocking matrix. Shared with the front-end so the rule has one reading, and kept trivial on\n * purpose: the verdict is computed where the matrix lives, not here.\n *\n * A null `admissibleOperations` means admission is not reported — an older backend, or a chain\n * that has no such notion — and is deliberately permissive: refusing every action on a missing\n * verdict would disable a whole account, while the broadcast 409 remains the backstop.\n *\n * Lives apart from `read-models` so `app-lib` can publish it without the bundler following that\n * module's runtime imports into every consumer of this package. The imports here are types only,\n * and erased.\n */\nexport const admitsStakeOperation = (\n position: Pick<Stake, \"admissibleOperations\">,\n operation: StakeOperation,\n): boolean =>\n position.admissibleOperations == null || position.admissibleOperations.includes(operation);\n","/**\n * Networks where Ethereum staking is served. `ETHEREUM_LIKE` covers every EVM chain, so this list\n * is what separates a chain the product stakes on from Polygon, BSC and the rest — including the\n * testnets LAMA would answer for but the product does not offer. Published through `app-lib` so\n * the front-end gates its Staking UI on the same list.\n */\nexport const ETHEREUM_STAKING_NETWORKS = [\"ethereum\", \"ethereum_hoodi\"] as const;\n\nexport type EthereumStakingNetwork = (typeof ETHEREUM_STAKING_NETWORKS)[number];\n\nexport const isEthereumStakingNetwork = (network: string): network is EthereumStakingNetwork =>\n (ETHEREUM_STAKING_NETWORKS as readonly string[]).includes(network);\n","/** Comparators offered by the backoffice \"Compare with HSM\" diagnostic, one run at a time. */\nexport const HSM_COMPARATORS = [\"whitelists\", \"workspace-name\"] as const;\n\nexport type HsmComparator = (typeof HSM_COMPARATORS)[number];\n\n/**\n * Why a compared object diverges. Reasons are comparator-specific, but they share a single enum so\n * the backoffice can count and group anomalies without knowing which comparator produced them.\n */\nexport const HSM_COMPARE_REASONS = [\n \"has-diffs\",\n \"missing-in-hsm\",\n \"missing-in-revault\",\n \"fetch-failed\",\n \"name-mismatch\",\n \"no-partition-found\",\n \"multiple-partitions-found\",\n] as const;\n\nexport type HsmCompareReason = (typeof HSM_COMPARE_REASONS)[number];\n\n/**\n * One line of evidence under an anomaly. Values are stringified here rather than formatted, so the\n * backoffice owns how a divergence reads on screen.\n */\nexport type HsmCompareDetail =\n | {\n kind: \"field-diff\";\n /** Entry the field belongs to, or null when the field is on the object itself. */\n scope: string | null;\n field: string;\n revault: string;\n hsm: string;\n }\n | { kind: \"only-in-revault\"; entry: string }\n | { kind: \"only-in-hsm\"; entry: string };\n\nexport type HsmCompareAnomaly = {\n reason: HsmCompareReason;\n /** HSM object id, null for anomalies that are not about a single identified object. */\n hsmId: string | null;\n /** Revault-side name, null when only the HSM knows the object. */\n name: string | null;\n details: HsmCompareDetail[];\n};\n\nexport type HsmWorkspaceComparison = {\n workspaceName: string;\n /** Objects actually compared on both sides. Zero means there was nothing to compare. */\n checked: number;\n anomalies: HsmCompareAnomaly[];\n};\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 identifier\" });\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 \"@/shared/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 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 \"@/shared/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 zEthereumLikeConsolidationTarget = z.object({\n id: z.string().nonempty().meta({ description: \"Staking position ID\" }),\n staked: z.string().meta({ description: \"Staked amount of that position\" }),\n});\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 consolidationTargets: z\n .array(zEthereumLikeConsolidationTarget)\n .max(2)\n .optional()\n .meta({\n description:\n \"The smallest positions a stake can be consolidated into, ascending. Only the \" +\n \"smallest target can have room for a given source, so these are enough to decide \" +\n \"any position's eligibility without listing the account. Two entries rather than \" +\n \"one because a position is never its own target. Absent on accounts whose staking \" +\n \"data does not come from position listing.\",\n }),\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\nconst 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({\n description:\n \"Amount to stake per validator, in wei. Must be a multiple of the provider's \" +\n \"`options.stakeAmountStepWei` from the staking validators endpoint (1 gwei when absent).\",\n }),\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\nconst 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\nconst 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\nconst zEthereumLikeStakingConsolidateData = zEthereumCommonTransactionData\n .omit({ recipient: true, amount: 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 sourceStakedAmount: zUnsignedIntString\n .meta({\n description:\n \"Staked balance of the source validator when the request was created, in wei. \" +\n \"Display only: the consolidation moves it on the consensus layer and never sends it.\",\n })\n .optional(),\n })\n .meta({\n description: \"Ethereum-like staking consolidate data\",\n id: \"EthereumLikeStakingConsolidateData\",\n });\n\nconst zEthereumLikeStakingUpgradeData = zEthereumCommonTransactionData\n .omit({ recipient: true, amount: 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\nconst 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","import type { TransactionType } from \"@/core/networks\";\n\nconst TRANSACTION_CHECK_SUPPORTED_TYPES = [\n \"ETHEREUM_LIKE_SEND\",\n \"ETHEREUM_LIKE_EXECUTE_CONTRACT\",\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] as const satisfies readonly TransactionType[];\n\n/**\n * Whether Transaction Check applies to this exact transaction type. This is only the type half of\n * the scope: API code that has the account must use `isInTransactionCheckScope` from\n * `@/core/accounts/transactions`, which also checks that les-wallet can scan the account.\n *\n * Kept free of runtime imports: `@ledgerhq/revault-api` publishes it to clients.\n */\nexport const isTransactionCheckSupportedType = (type: TransactionType): boolean =>\n TRANSACTION_CHECK_SUPPORTED_TYPES.some((supportedType) => supportedType === type);\n","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":"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"}
1
+ {"version":3,"file":"index.mjs","names":["z","z","z","z","z","z","z","z","z"],"sources":["../src/core/accounts/stake-admission.ts","../src/core/accounts/stake-sort.ts","../src/core/accounts/staking-networks.ts","../src/core/hsm-comparison.ts","../src/shared/zod-utils.ts","../src/core/networks/common.ts","../src/core/networks/ethereum/schemas.ts","../src/core/scan/supported-types.ts","../src/entrypoints/api/accounts/sort.ts","../src/entrypoints/api/groups/sort.ts","../src/services/hsm/hsm-requests-types.ts","../src/entrypoints/api/policies/sort.ts","../src/entrypoints/api/portfolios/sort.ts","../src/entrypoints/api/requests/sort.ts","../src/entrypoints/api/users/sort.ts","../src/entrypoints/api/whitelists/sort.ts"],"sourcesContent":["import type { Stake, StakeOperation } from \"./read-models\";\n\n/**\n * Whether `operation` may still be started on this position, per the backend that enforces the\n * blocking matrix. Shared with the front-end so the rule has one reading, and kept trivial on\n * purpose: the verdict is computed where the matrix lives, not here.\n *\n * A null `admissibleOperations` means admission is not reported — an older backend, or a chain\n * that has no such notion — and is deliberately permissive: refusing every action on a missing\n * verdict would disable a whole account, while the broadcast 409 remains the backstop. A pending\n * credential upgrade is still honoured then: it is reported, not missing, and locks the position.\n *\n * Lives apart from `read-models` so `app-lib` can publish it without the bundler following that\n * module's runtime imports into every consumer of this package. The imports here are types only,\n * and erased.\n */\nexport const admitsStakeOperation = (\n // Optional so callers passing only `admissibleOperations` keep compiling.\n position: Pick<Stake, \"admissibleOperations\"> & Partial<Pick<Stake, \"pendingOperations\">>,\n operation: StakeOperation,\n): boolean =>\n position.admissibleOperations == null\n ? !position.pendingOperations?.some((_) => _.kind === \"CREDENTIAL_UPGRADE\")\n : position.admissibleOperations.includes(operation);\n","import { z } from \"zod\";\n\n// A bare enum, without the API default, so that Web can validate its URL `sortBy` with it.\n// It lives apart from `read-models.ts` so `app-lib` can publish it without that module's runtime imports.\nexport const zStakeSortByField = z.enum([\"staked\", \"rewards\", \"total\"]);\n","/**\n * Networks where Ethereum staking is served. `ETHEREUM_LIKE` covers every EVM chain, so this list\n * is what separates a chain the product stakes on from Polygon, BSC and the rest — including the\n * testnets LAMA would answer for but the product does not offer. Published through `app-lib` so\n * the front-end gates its Staking UI on the same list.\n */\nexport const ETHEREUM_STAKING_NETWORKS = [\"ethereum\", \"ethereum_hoodi\"] as const;\n\nexport type EthereumStakingNetwork = (typeof ETHEREUM_STAKING_NETWORKS)[number];\n\nexport const isEthereumStakingNetwork = (network: string): network is EthereumStakingNetwork =>\n (ETHEREUM_STAKING_NETWORKS as readonly string[]).includes(network);\n","/** Comparators offered by the backoffice \"Compare with HSM\" diagnostic, one run at a time. */\nexport const HSM_COMPARATORS = [\"whitelists\", \"workspace-name\"] as const;\n\nexport type HsmComparator = (typeof HSM_COMPARATORS)[number];\n\n/**\n * Why a compared object diverges. Reasons are comparator-specific, but they share a single enum so\n * the backoffice can count and group anomalies without knowing which comparator produced them.\n */\nexport const HSM_COMPARE_REASONS = [\n \"has-diffs\",\n \"missing-in-hsm\",\n \"missing-in-revault\",\n \"fetch-failed\",\n \"name-mismatch\",\n \"no-partition-found\",\n \"multiple-partitions-found\",\n] as const;\n\nexport type HsmCompareReason = (typeof HSM_COMPARE_REASONS)[number];\n\n/**\n * One line of evidence under an anomaly. Values are stringified here rather than formatted, so the\n * backoffice owns how a divergence reads on screen.\n */\nexport type HsmCompareDetail =\n | {\n kind: \"field-diff\";\n /** Entry the field belongs to, or null when the field is on the object itself. */\n scope: string | null;\n field: string;\n revault: string;\n hsm: string;\n }\n | { kind: \"only-in-revault\"; entry: string }\n | { kind: \"only-in-hsm\"; entry: string };\n\nexport type HsmCompareAnomaly = {\n reason: HsmCompareReason;\n /** HSM object id, null for anomalies that are not about a single identified object. */\n hsmId: string | null;\n /** Revault-side name, null when only the HSM knows the object. */\n name: string | null;\n details: HsmCompareDetail[];\n};\n\nexport type HsmWorkspaceComparison = {\n workspaceName: string;\n /** Objects actually compared on both sides. Zero means there was nothing to compare. */\n checked: number;\n anomalies: HsmCompareAnomaly[];\n};\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 identifier\" });\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 \"@/shared/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 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 \"@/shared/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 zEthereumLikeConsolidationTarget = z.object({\n id: z.string().nonempty().meta({ description: \"Staking position ID\" }),\n staked: z.string().meta({ description: \"Staked amount of that position\" }),\n});\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 consolidationTargets: z\n .array(zEthereumLikeConsolidationTarget)\n .max(2)\n .optional()\n .meta({\n description:\n \"The smallest positions a stake can be consolidated into, ascending. Only the \" +\n \"smallest target can have room for a given source, so these are enough to decide \" +\n \"any position's eligibility without listing the account. Two entries rather than \" +\n \"one because a position is never its own target. Absent on accounts whose staking \" +\n \"data does not come from position listing.\",\n }),\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\nconst 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({\n description:\n \"Amount to stake per validator, in wei. Must be a multiple of the provider's \" +\n \"`options.stakeAmountStepWei` from the staking validators endpoint (1 gwei when absent).\",\n }),\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\nconst 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\nconst 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\nconst zEthereumLikeStakingConsolidateData = zEthereumCommonTransactionData\n .omit({ recipient: true, amount: 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 sourceStakedAmount: zUnsignedIntString\n .meta({\n description:\n \"Staked balance of the source validator when the request was created, in wei. \" +\n \"Display only: the consolidation moves it on the consensus layer and never sends it.\",\n })\n .optional(),\n })\n .meta({\n description: \"Ethereum-like staking consolidate data\",\n id: \"EthereumLikeStakingConsolidateData\",\n });\n\nconst zEthereumLikeStakingUpgradeData = zEthereumCommonTransactionData\n .omit({ recipient: true, amount: 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\nconst 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","import type { TransactionType } from \"@/core/networks\";\n\nconst TRANSACTION_CHECK_SUPPORTED_TYPES = [\n \"ETHEREUM_LIKE_SEND\",\n \"ETHEREUM_LIKE_EXECUTE_CONTRACT\",\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] as const satisfies readonly TransactionType[];\n\n/**\n * Whether Transaction Check applies to this exact transaction type. This is only the type half of\n * the scope: API code that has the account must use `isInTransactionCheckScope` from\n * `@/core/accounts/transactions`, which also checks that les-wallet can scan the account.\n *\n * Kept free of runtime imports: `@ledgerhq/revault-api` publishes it to clients.\n */\nexport const isTransactionCheckSupportedType = (type: TransactionType): boolean =>\n TRANSACTION_CHECK_SUPPORTED_TYPES.some((supportedType) => supportedType === type);\n","import { z } from \"zod\";\n\nimport type { AccountResponse } from \"./schemas\";\n\n// A bare enum, without the API default, so that Web can validate its URL `sortBy` with it.\n// It lives apart from `schemas.ts` so `app-lib` can publish it without that module's runtime imports.\nexport const zAccountSortByField = z.enum([\n \"name\",\n \"currency\",\n \"index\",\n \"createdAt\",\n \"updatedAt\",\n] as const satisfies (keyof AccountResponse)[]);\n","import { z } from \"zod\";\n\nimport type { GroupResponse } from \"./schemas\";\n\n// A bare enum, without the API default, so that Web can validate its URL `sortBy` with it.\n// It lives apart from `schemas.ts` so `app-lib` can publish it without that module's runtime imports.\nexport const zGroupSortByField = z.enum([\n \"name\",\n \"status\",\n \"createdAt\",\n \"updatedAt\",\n] as const satisfies (keyof GroupResponse)[]);\n","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\nimport type { PolicyResponse } from \"./schemas\";\n\n// A bare enum, without the API default, so that Web can validate its URL `sortBy` with it.\n// It lives apart from `schemas.ts` so `app-lib` can publish it without that module's runtime imports.\nexport const zPolicySortByField = z.enum([\n \"name\",\n \"createdAt\",\n \"updatedAt\",\n] as const satisfies (keyof PolicyResponse)[]);\n","import { z } from \"zod\";\n\n// A bare enum, without the API default, so that Web can validate its URL `sortBy` with it.\n// It lives apart from `schemas.ts` so `app-lib` can publish it without that module's runtime imports.\nexport const zPortfolioSortByField = z.enum([\n \"name\",\n \"accountCount\",\n \"memberCount\",\n \"createdAt\",\n \"updatedAt\",\n]);\n","import { z } from \"zod\";\n\nimport type { VaultRequestResponse } from \"./schemas\";\n\n// A bare enum, without the API default, so that Web can validate its URL `sortBy` with it.\n// It lives apart from `schemas.ts` so `app-lib` can publish it without that module's runtime imports.\nexport const zRequestSortByField = z.enum([\n \"state\",\n \"expiresAt\",\n \"createdAt\",\n \"updatedAt\",\n] as const satisfies (keyof VaultRequestResponse)[]);\n","import { z } from \"zod\";\n\nimport type { UserResponse } from \"./schemas\";\n\n// A bare enum, without the API default, so that Web can validate its URL `sortBy` with it.\n// It lives apart from `schemas.ts` so `app-lib` can publish it without that module's runtime imports.\nexport const zUserSortByField = z.enum([\n \"name\",\n \"role\",\n \"status\",\n \"createdAt\",\n \"updatedAt\",\n] as const satisfies (keyof UserResponse)[]);\n","import { z } from \"zod\";\n\nimport type { WhitelistResponse } from \"./schemas\";\n\n// A bare enum, without the API default, so that Web can validate its URL `sortBy` with it.\n// It lives apart from `schemas.ts` so `app-lib` can publish it without that module's runtime imports.\nexport const zWhitelistSortByField = z.enum([\n \"name\",\n \"status\",\n \"addressCount\",\n \"createdAt\",\n \"updatedAt\",\n] as const satisfies (keyof WhitelistResponse)[]);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/revault-api",
3
- "version": "1.89.0",
3
+ "version": "1.91.0",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "files": [