@ledgerhq/revault-api 1.78.0 → 1.79.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/fakes.d.mts CHANGED
@@ -1,5 +1,4 @@
1
- import { F as VaultRequestCreateInput, I as VaultRequestResponse, N as RequestDataOf, Yr as AccountResponse, Zi as AccountType, fi as TransactionDataOf, gn as GroupResponse, p as UserResponse, r as WebhookResponse, s as WhitelistResponse, sa as MessageType, si as AccountStakingFields } from "./app-lib-D_o7oP_j.mjs";
2
-
1
+ import { $i as AccountStakingFields, $t as GroupResponse, Ar as AccountType, Br as MessageType, Vi as AccountResponse, _n as RequestDataOf, bn as VaultRequestCreateInput, g as UserResponse, ia as TransactionDataOf, l as WhitelistResponse, r as WebhookResponse, xn as VaultRequestResponse } from "./app-lib-Dewndpdf.mjs";
3
2
  //#region src/__fakes__/trpc/inputs.d.ts
4
3
  type RequestInputDataOf<T extends VaultRequestCreateInput["request"]["type"]> = Extract<VaultRequestCreateInput["request"], {
5
4
  type: T;
package/lib/fakes.mjs CHANGED
@@ -469,8 +469,9 @@ const genEthereumLikeSendData = () => {
469
469
  };
470
470
  };
471
471
  const genEthereumLikeExecuteContractData = () => {
472
+ const sendData = genEthereumLikeSendData();
472
473
  return {
473
- ...omit(genEthereumLikeSendData(), ["type"]),
474
+ ...omit(sendData, ["type"]),
474
475
  type: "ETHEREUM_LIKE_EXECUTE_CONTRACT",
475
476
  contractData: faker.string.hexadecimal({
476
477
  prefix: "",
@@ -480,8 +481,9 @@ const genEthereumLikeExecuteContractData = () => {
480
481
  };
481
482
  };
482
483
  const genEthereumLikeDeployContractData = () => {
484
+ const sendData = genEthereumLikeSendData();
483
485
  return {
484
- ...omit(genEthereumLikeSendData(), ["type"]),
486
+ ...omit(sendData, ["type"]),
485
487
  type: "ETHEREUM_LIKE_DEPLOY_CONTRACT",
486
488
  recipient: "",
487
489
  contractData: faker.string.hexadecimal({
@@ -497,8 +499,9 @@ const genEthHex = (bytes) => faker.string.hexadecimal({
497
499
  length: bytes * 2
498
500
  });
499
501
  const genEthereumLikeStakeData = () => {
502
+ const sendData = genEthereumLikeSendData();
500
503
  return {
501
- ...omit(genEthereumLikeSendData(), [
504
+ ...omit(sendData, [
502
505
  "type",
503
506
  "recipient",
504
507
  "amount"
@@ -514,8 +517,9 @@ const genEthereumLikeStakeData = () => {
514
517
  };
515
518
  };
516
519
  const genEthereumLikeStakeTopUpData = () => {
520
+ const sendData = genEthereumLikeSendData();
517
521
  return {
518
- ...omit(genEthereumLikeSendData(), [
522
+ ...omit(sendData, [
519
523
  "type",
520
524
  "recipient",
521
525
  "amount"
@@ -528,16 +532,18 @@ const genEthereumLikeStakeTopUpData = () => {
528
532
  };
529
533
  };
530
534
  const genEthereumLikeWithdrawData = () => {
535
+ const sendData = genEthereumLikeSendData();
531
536
  return {
532
- ...omit(genEthereumLikeSendData(), ["type", "recipient"]),
537
+ ...omit(sendData, ["type", "recipient"]),
533
538
  type: "ETHEREUM_LIKE_STAKE_WITHDRAW",
534
539
  validatorPubKey: genEthHex(48),
535
540
  maxExecutionFees: faker.number.bigInt({ min: 0 }).toString()
536
541
  };
537
542
  };
538
543
  const genEthereumLikeConsolidateData = () => {
544
+ const sendData = genEthereumLikeSendData();
539
545
  return {
540
- ...omit(genEthereumLikeSendData(), ["type", "recipient"]),
546
+ ...omit(sendData, ["type", "recipient"]),
541
547
  type: "ETHEREUM_LIKE_STAKE_CONSOLIDATE",
542
548
  sourcePubKey: genEthHex(48),
543
549
  targetPubKey: genEthHex(48),
@@ -545,8 +551,9 @@ const genEthereumLikeConsolidateData = () => {
545
551
  };
546
552
  };
547
553
  const genEthereumLikeUpgradeData = () => {
554
+ const sendData = genEthereumLikeSendData();
548
555
  return {
549
- ...omit(genEthereumLikeSendData(), ["type", "recipient"]),
556
+ ...omit(sendData, ["type", "recipient"]),
550
557
  type: "ETHEREUM_LIKE_STAKE_UPGRADE",
551
558
  validatorPubKey: genEthHex(48),
552
559
  maxExecutionFees: faker.number.bigInt({ min: 0 }).toString()
@@ -947,9 +954,7 @@ const genOutgoingTxData = (opts) => {
947
954
  case "TRON_LIKE_SEND_TOKEN":
948
955
  txDataDefaults = genTronLikeTxData(opts.type);
949
956
  break;
950
- default:
951
- txDataDefaults = unreachable(opts.type);
952
- break;
957
+ default: txDataDefaults = unreachable(opts.type);
953
958
  }
954
959
  return {
955
960
  ...txDataDefaults,
@@ -975,9 +980,11 @@ const ACCOUNT_TYPE_DEFAULT_CURRENCY = {
975
980
  TRON_LIKE: "tron"
976
981
  };
977
982
  const genCreateTransactionData = (opts) => {
983
+ const accountId = opts?.accountId ?? faker.string.uuid();
984
+ const txOpts = opts?.transaction ?? { type: "ETHEREUM_LIKE_SEND" };
978
985
  return {
979
- accountId: opts?.accountId ?? faker.string.uuid(),
980
- transaction: genOutgoingTxData(opts?.transaction ?? { type: "ETHEREUM_LIKE_SEND" })
986
+ accountId,
987
+ transaction: genOutgoingTxData(txOpts)
981
988
  };
982
989
  };
983
990
  //#endregion
package/lib/fakes.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fakes.mjs","names":["_exhaustive","_exhaustive","_exhaustive","_exhaustive","_exhaustive"],"sources":["../src/__fakes__/trpc/utils.ts","../src/__fakes__/trpc/inputs.ts","../src/__fakes__/trpc/request-data/account.ts","../src/__fakes__/trpc/request-data/api-key.ts","../src/__fakes__/trpc/request-data/entity.ts","../src/__fakes__/trpc/request-data/group.ts","../src/__fakes__/trpc/request-data/message-signature.ts","../src/__fakes__/trpc/request-data/policy.ts","../src/__fakes__/trpc/request-data/sciconfig.ts","../src/__fakes__/trpc/request-data/tradelink.ts","../src/__fakes__/trpc/transactions/bitcoin.ts","../src/__fakes__/trpc/transactions/canton.ts","../src/__fakes__/trpc/transactions/cardano.ts","../src/__fakes__/trpc/transactions/ethereum.ts","../src/__fakes__/trpc/transactions/generic.ts","../src/__fakes__/trpc/transactions/hedera.ts","../src/__fakes__/trpc/transactions/polkadot.ts","../src/__fakes__/trpc/transactions/ripple.ts","../src/__fakes__/trpc/transactions/solana.ts","../src/__fakes__/trpc/transactions/stellar.ts","../src/__fakes__/trpc/transactions/sui.ts","../src/__fakes__/trpc/transactions/tezos.ts","../src/__fakes__/trpc/transactions/tron.ts","../src/__fakes__/trpc/transactions/index.ts","../src/__fakes__/trpc/request-data/transaction.ts","../src/__fakes__/trpc/request-data/user.ts","../src/__fakes__/trpc/request-data/whitelist.ts","../src/__fakes__/trpc/request-data/workspace-rule.ts","../src/__fakes__/trpc/request-data/index.ts","../src/__fakes__/trpc/responses.ts","../src/__fakes__/trpc/staking.ts"],"sourcesContent":["import { faker } from \"@faker-js/faker\";\n\nexport const unreachable = (value: never): never => {\n throw new Error(`Type checker should have prevented you from reaching here: ${value}`);\n};\n\nexport const genPubKey = (): string =>\n `04${faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 128 })}`;\n\nexport const genHexString = (length: number, casing: \"lower\" | \"upper\"): string =>\n faker.string.hexadecimal({ prefix: \"\", casing, length });\n\n/**\n * Hex-encodes a random ASCII string, so the decoded bytes stay within 0x01–0x7F. Use this for\n * sign-message `data` fixtures: `validateMessage` rejects hex that decodes to non-ASCII\n * bytes (VG-30873), which a raw {@link genHexString} can produce.\n */\nexport const genAsciiHexString = (byteLength = 5): string =>\n Buffer.from(faker.string.alphanumeric({ length: byteLength }), \"utf8\").toString(\"hex\");\n\nexport const genUniqueName = (length = 20): string =>\n faker.string.alphanumeric({ length, casing: \"lower\" });\n","import { faker } from \"@faker-js/faker\";\n\nimport type { VaultRequestCreateInput } from \"@/app-lib\";\n\nimport { genAsciiHexString } from \"./utils\";\n\nexport type RequestInputDataOf<T extends VaultRequestCreateInput[\"request\"][\"type\"]> = Extract<\n VaultRequestCreateInput[\"request\"],\n { type: T }\n>[\"data\"];\n\nexport const genSignMessageInputData = (\n opts?: Partial<RequestInputDataOf<\"SIGN_MESSAGE\">>,\n): RequestInputDataOf<\"SIGN_MESSAGE\"> => ({\n message: {\n type: \"EIP191\",\n data: genAsciiHexString(),\n },\n accountId: faker.string.uuid(),\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nimport { genUniqueName } from \"../utils\";\n\nexport const genCreateAccountData = (\n opts?: Partial<RequestDataOf<\"CREATE_ACCOUNT\">>,\n): RequestDataOf<\"CREATE_ACCOUNT\"> => ({\n name: genUniqueName(),\n type: \"BITCOIN_LIKE\",\n currency: \"bitcoin\",\n contractAddress: null,\n tokenIdentifier: null,\n governance: {\n type: \"CLASSIC\",\n policy: { rules: [] },\n },\n index: 0,\n derivationPath: \"m/84'/0'/0'\",\n bitcoinAddressDerivationMode: \"NEW\",\n ...opts,\n});\n\nexport const genEditAccountData = (\n opts?: Partial<RequestDataOf<\"EDIT_ACCOUNT\">>,\n): RequestDataOf<\"EDIT_ACCOUNT\"> => ({\n name: genUniqueName(),\n governance: {\n type: \"CLASSIC\",\n policy: { rules: [] },\n },\n ...opts,\n});\n\nexport const genEditTokenRuleData = (\n opts?: Partial<RequestDataOf<\"EDIT_TOKEN_RULE\">>,\n): RequestDataOf<\"EDIT_TOKEN_RULE\"> => ({\n parentAccountId: faker.string.uuid(),\n contractAddress: faker.string.alphanumeric({ length: 44 }),\n rules: [\n {\n operationType: \"SEND\",\n reviewSteps: [{ quorum: 1, userIds: [] }],\n },\n ],\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreateApiKeyData = (\n opts?: Partial<RequestDataOf<\"CREATE_API_KEY\">>,\n): RequestDataOf<\"CREATE_API_KEY\"> => ({\n name: faker.company.name().slice(0, 19),\n entities: [],\n scopes: {},\n ...opts,\n});\n\nexport const genEditApiKeyData = (\n opts?: Partial<RequestDataOf<\"EDIT_API_KEY\">>,\n): RequestDataOf<\"EDIT_API_KEY\"> => ({\n name: faker.company.name().slice(0, 19),\n entities: [],\n scopes: {},\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreateEntityData = (\n opts?: Partial<RequestDataOf<\"CREATE_ENTITY\">>,\n): RequestDataOf<\"CREATE_ENTITY\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n accountIds: [],\n memberIds: [],\n ...opts,\n});\n\nexport const genEditEntityData = (\n opts?: Partial<RequestDataOf<\"EDIT_ENTITY\">>,\n): RequestDataOf<\"EDIT_ENTITY\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n accountIds: [],\n memberIds: [],\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreateGroupData = (\n opts?: Partial<RequestDataOf<\"CREATE_GROUP\">>,\n): RequestDataOf<\"CREATE_GROUP\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n members: [],\n ...opts,\n});\n\nexport const genEditGroupData = (\n opts?: Partial<RequestDataOf<\"EDIT_GROUP\">>,\n): RequestDataOf<\"EDIT_GROUP\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n members: [],\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { MessageType, RequestDataOf } from \"@/app-lib\";\n\nimport { genAsciiHexString } from \"../utils\";\n\nexport const genSignMessageData = (\n opts?: Partial<RequestDataOf<\"SIGN_MESSAGE\">> & { messageType?: MessageType },\n): RequestDataOf<\"SIGN_MESSAGE\"> => {\n const messageType = opts?.messageType ?? opts?.message?.type ?? \"EIP191\";\n let message: RequestDataOf<\"SIGN_MESSAGE\">[\"message\"];\n switch (messageType) {\n case \"EIP191\":\n message = {\n type: \"EIP191\",\n data: genAsciiHexString(),\n };\n break;\n case \"EIP712\":\n message = {\n type: \"EIP712\",\n data: {\n types: {\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n ],\n PrimaryType: [\n { name: \"a\", type: \"int256\" },\n { name: \"b\", type: \"bool\" },\n ],\n },\n primaryType: \"PrimaryType\",\n domain: {\n name: \"Test Domain\",\n version: \"1\",\n chainId: 1,\n verifyingContract: \"0x1234567890123456789012345678901234567890\",\n },\n message: {\n a: faker.number.int({ min: 0, max: 1000 }),\n b: faker.datatype.boolean(),\n },\n },\n };\n break;\n case \"CIP8\":\n case \"BIP137\":\n throw new Error(`Unsupported message type in fakes: ${messageType}`);\n }\n return {\n message,\n accountId: faker.string.uuid(),\n address: faker.finance.ethereumAddress(),\n derivationPath: \"44'/60'/0'/0/0\",\n ...opts,\n };\n};\n\nexport const genSignDigestsData = (\n opts?: Partial<RequestDataOf<\"SIGN_DIGESTS\">>,\n): RequestDataOf<\"SIGN_DIGESTS\"> => ({\n accountId: faker.string.uuid(),\n digests: [\n {\n digest: faker.string.hexadecimal({ prefix: \"\", length: 64 }),\n derivationPath: \"m/44'/60'/0'\",\n },\n ],\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreatePolicyData = (\n opts?: Partial<RequestDataOf<\"CREATE_POLICY\">>,\n): RequestDataOf<\"CREATE_POLICY\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n asset: { network: \"bitcoin\", contractAddress: null, tokenIdentifier: null },\n govRules: [],\n ...opts,\n});\n\nexport const genEditPolicyData = (\n opts?: Partial<RequestDataOf<\"EDIT_POLICY\">>,\n): RequestDataOf<\"EDIT_POLICY\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n govRules: [],\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\nimport { times } from \"lodash-es\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreateSciConfigData = (\n opts?: Partial<RequestDataOf<\"CREATE_SCICONFIG\">>,\n): RequestDataOf<\"CREATE_SCICONFIG\"> => ({\n account: faker.string.uuid(),\n config: {\n dapps: times(faker.number.int({ min: 0, max: 5 }), () => faker.word.noun()),\n customContractCallEnabled: faker.datatype.boolean(),\n },\n ...opts,\n});\n\nexport const genEditSciConfigData = (\n opts?: Partial<RequestDataOf<\"EDIT_SCICONFIG\">>,\n): RequestDataOf<\"EDIT_SCICONFIG\"> => ({\n config: {\n dapps: times(faker.number.int({ min: 0, max: 5 }), () => faker.word.noun()),\n customContractCallEnabled: faker.datatype.boolean(),\n },\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genTradelinkAdjustPledgeData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_ADJUST_PLEDGE\">>,\n): RequestDataOf<\"TRADELINK_ADJUST_PLEDGE\"> => ({\n accountId: faker.string.uuid(),\n exchangeId: faker.string.uuid(),\n amount: \"42\",\n ...opts,\n});\n\nexport const genTradelinkRepledgeData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_REPLEDGE\">>,\n): RequestDataOf<\"TRADELINK_REPLEDGE\"> => ({\n accountId: faker.string.uuid(),\n exchangeId: faker.string.uuid(),\n amount: \"42\",\n ...opts,\n});\n\nexport const genTradelinkCreateSettlementData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_CREATE_SETTLEMENT\">>,\n): RequestDataOf<\"TRADELINK_CREATE_SETTLEMENT\"> => ({\n accountId: faker.string.uuid(),\n exchangeId: faker.string.uuid(),\n transaction: {\n type: \"BITCOIN_LIKE_SEND\",\n amount: \"42\",\n currency: \"bitcoin\",\n maxFee: \"999\",\n recipient: faker.finance.bitcoinAddress(),\n feeStrategy: { type: \"NORMAL\" },\n },\n ...opts,\n});\n\nexport const genTradelinkForceUnpledgeData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_FORCE_UNPLEDGE\">>,\n): RequestDataOf<\"TRADELINK_FORCE_UNPLEDGE\"> => ({\n accountId: faker.string.uuid(),\n exchangeId: faker.string.uuid(),\n ...opts,\n});\n\nexport const genTradelinkWithdrawData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_WITHDRAW\">>,\n): RequestDataOf<\"TRADELINK_WITHDRAW\"> => ({\n accountId: faker.string.uuid(),\n transaction: {\n type: \"ETHEREUM_LIKE_SEND\",\n recipient: \"0x63e4195AF1509490b430F3f5bCb85A82a24F5C82\",\n amount: faker.number.bigInt({ min: 0, max: 99 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n currency: \"ethereum\",\n feeStrategy: {\n type: \"NORMAL\",\n gasPrice: \"2\",\n gasLimit: \"10\",\n },\n },\n ...opts,\n});\n\nexport const genTradelinkArbitrationData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_ARBITRATE\">>,\n): RequestDataOf<\"TRADELINK_ARBITRATE\"> => ({\n accountId: faker.string.uuid(),\n transaction: {\n type: \"ETHEREUM_LIKE_SEND\",\n recipient: \"0xcefd70CFCd7a2FAa0fe956E3d496F9313297CB44\",\n amount: faker.number.bigInt({ min: 0, max: 99 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n currency: \"ethereum\",\n feeStrategy: {\n type: \"NORMAL\",\n gasPrice: \"2\",\n gasLimit: \"10\",\n },\n },\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\nexport const genBitcoinLikeSendData = (): TransactionDataOf<\"BITCOIN_LIKE_SEND\"> => ({\n type: \"BITCOIN_LIKE_SEND\" as const,\n currency: \"bitcoin\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.finance.bitcoinAddress(),\n // les-wallet requires \"exactly one\" fee field: a preset (no feePerByte) or a\n // CUSTOM fee carrying a feePerByte. Seed only valid combinations.\n feeStrategy: faker.helpers.arrayElement([\n { type: \"SLOW\" as const },\n { type: \"NORMAL\" as const },\n { type: \"FAST\" as const },\n { type: \"CUSTOM\" as const, feePerByte: faker.number.bigInt({ min: 1 }).toString() },\n ]),\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype CantonTxType =\n | \"CANTON_LIKE_SEND\"\n | \"CANTON_LIKE_SEND_TOKEN\"\n | \"CANTON_LIKE_WITHDRAW\"\n | \"CANTON_LIKE_RECEIVE\"\n | \"CANTON_LIKE_PRE_APPROVAL\";\n\nconst fakeCantonPartyId = (): string =>\n `party-${faker.lorem.word()}::${faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 68 })}`;\n\nconst fakeCantonContractId = (): string =>\n faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 138 });\n\nconst fakeCantonInstrumentId = (): string =>\n faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 10 });\n\nconst fakeCantonTransferProposal = (): TransactionDataOf<\n \"CANTON_LIKE_WITHDRAW\" | \"CANTON_LIKE_RECEIVE\"\n>[\"transferProposal\"] => ({\n amount: faker.number.bigInt().toString(),\n contractId: fakeCantonContractId(),\n instrumentAdmin: fakeCantonPartyId(),\n instrumentId: fakeCantonInstrumentId(),\n expiresAtMicros: faker.number.int(),\n reason: faker.lorem.sentence(),\n sender: fakeCantonPartyId(),\n recipient: fakeCantonPartyId(),\n});\n\nexport const genCantonLikeTxData = (txType: CantonTxType): TransactionDataOf<CantonTxType> => {\n switch (txType) {\n case \"CANTON_LIKE_SEND\":\n case \"CANTON_LIKE_SEND_TOKEN\":\n return {\n type: txType,\n currency: \"canton_network\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n recipient: fakeCantonPartyId(),\n reason: faker.helpers.arrayElement([null, faker.lorem.word()]),\n };\n case \"CANTON_LIKE_WITHDRAW\":\n return {\n type: txType,\n currency: \"canton_network\",\n transferProposal: fakeCantonTransferProposal(),\n reason: faker.lorem.sentence(),\n };\n case \"CANTON_LIKE_RECEIVE\":\n return {\n type: txType,\n currency: \"canton_network\",\n transferProposal: fakeCantonTransferProposal(),\n verdict: \"ACCEPT\" as const,\n reason: faker.lorem.sentence(),\n };\n case \"CANTON_LIKE_PRE_APPROVAL\":\n return {\n type: txType,\n currency: \"canton_network\",\n recipient: fakeCantonPartyId(),\n };\n default: {\n const _exhaustive: never = txType;\n throw new Error(`Unknown canton transaction type: ${_exhaustive}`);\n }\n }\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype CardanoTxType =\n | \"CARDANO_LIKE_SEND\"\n | \"CARDANO_LIKE_STAKING_REGISTER\"\n | \"CARDANO_LIKE_STAKING_DEREGISTER\"\n | \"CARDANO_LIKE_STAKING_DELEGATE\"\n | \"CARDANO_LIKE_STAKING_WITHDRAW\";\n\nexport const genCardanoLikeTxData = (txType: CardanoTxType): TransactionDataOf<CardanoTxType> => {\n switch (txType) {\n case \"CARDANO_LIKE_SEND\":\n return {\n type: txType,\n currency: \"cardano\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"CARDANO_LIKE_STAKING_DELEGATE\":\n return {\n type: txType,\n currency: \"cardano\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n stakePoolId: `pool${faker.string.alphanumeric({ length: 52 })}`,\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"CARDANO_LIKE_STAKING_REGISTER\":\n case \"CARDANO_LIKE_STAKING_DEREGISTER\":\n case \"CARDANO_LIKE_STAKING_WITHDRAW\":\n return {\n type: txType,\n currency: \"cardano\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n amount: faker.number.bigInt({ min: 0 }).toString(),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n default: {\n const _exhaustive: never = txType;\n throw new Error(`Unknown cardano transaction type: ${_exhaustive}`);\n }\n }\n};\n","import { faker } from \"@faker-js/faker\";\nimport { omit } from \"lodash-es\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\nexport const genEthereumLikeSendData = (): TransactionDataOf<\"ETHEREUM_LIKE_SEND\"> => {\n const gasLimit = faker.number.bigInt({ min: 1 });\n const gasPrice = faker.number.bigInt({ min: 1 });\n const maxFee = gasLimit * gasPrice;\n return {\n type: \"ETHEREUM_LIKE_SEND\" as const,\n currency: \"ethereum\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: maxFee.toString(),\n recipient: faker.finance.ethereumAddress(),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\", \"CUSTOM\"] as const),\n gasLimit: gasLimit.toString(),\n gasPrice: gasPrice.toString(),\n },\n };\n};\n\nexport const genEthereumLikeExecuteContractData =\n (): TransactionDataOf<\"ETHEREUM_LIKE_EXECUTE_CONTRACT\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\"]),\n type: \"ETHEREUM_LIKE_EXECUTE_CONTRACT\" as const,\n contractData: faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 128 }),\n };\n };\n\nexport const genEthereumLikeDeployContractData =\n (): TransactionDataOf<\"ETHEREUM_LIKE_DEPLOY_CONTRACT\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\"]),\n type: \"ETHEREUM_LIKE_DEPLOY_CONTRACT\" as const,\n recipient: \"\",\n contractData: faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 128 }),\n };\n };\n\nconst genEthHex = (bytes: number) =>\n faker.string.hexadecimal({ prefix: \"0x\", casing: \"lower\", length: bytes * 2 });\n\nexport const genEthereumLikeStakeData = (): TransactionDataOf<\"ETHEREUM_LIKE_STAKE_DEPOSIT\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\", \"recipient\", \"amount\"]),\n type: \"ETHEREUM_LIKE_STAKE_DEPOSIT\" as const,\n amountPerValidator: faker.number.bigInt({ min: 1 }).toString(),\n numberOfValidators: faker.number.bigInt({ min: 1, max: 100 }).toString(),\n stakingProvider: \"KILN\" as const,\n withdrawalAddress: genEthHex(20),\n };\n};\n\nexport const genEthereumLikeStakeTopUpData =\n (): TransactionDataOf<\"ETHEREUM_LIKE_STAKE_TOP_UP\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\", \"recipient\", \"amount\"]),\n type: \"ETHEREUM_LIKE_STAKE_TOP_UP\" as const,\n validators: [\n {\n validatorPubKey: genEthHex(48),\n amount: faker.number.bigInt({ min: 1 }).toString(),\n },\n ],\n };\n };\n\nexport const genEthereumLikeWithdrawData =\n (): TransactionDataOf<\"ETHEREUM_LIKE_STAKE_WITHDRAW\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\", \"recipient\"]),\n type: \"ETHEREUM_LIKE_STAKE_WITHDRAW\" as const,\n validatorPubKey: genEthHex(48),\n maxExecutionFees: faker.number.bigInt({ min: 0 }).toString(),\n };\n };\n\nexport const genEthereumLikeConsolidateData =\n (): TransactionDataOf<\"ETHEREUM_LIKE_STAKE_CONSOLIDATE\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\", \"recipient\"]),\n type: \"ETHEREUM_LIKE_STAKE_CONSOLIDATE\" as const,\n sourcePubKey: genEthHex(48),\n targetPubKey: genEthHex(48),\n maxExecutionFees: faker.number.bigInt({ min: 0 }).toString(),\n };\n };\n\nexport const genEthereumLikeUpgradeData = (): TransactionDataOf<\"ETHEREUM_LIKE_STAKE_UPGRADE\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\", \"recipient\"]),\n type: \"ETHEREUM_LIKE_STAKE_UPGRADE\" as const,\n validatorPubKey: genEthHex(48),\n maxExecutionFees: faker.number.bigInt({ min: 0 }).toString(),\n };\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\nexport const genGenericTransactionData = (): TransactionDataOf<\"GENERIC_TRANSACTION\"> => ({\n type: \"GENERIC_TRANSACTION\" as const,\n currency: \"tron\",\n rawTx: faker.string.alphanumeric({ length: 100 }),\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype HederaSendTxType = \"HEDERA_LIKE_SEND\" | \"HEDERA_LIKE_SEND_TOKEN\";\n\nexport const genHederaLikeSendData = (\n txType: HederaSendTxType,\n): TransactionDataOf<HederaSendTxType> => ({\n type: txType,\n currency: \"hedera\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: `0.0.${faker.number.int({ min: 10000000, max: 99999999 }).toString()}`,\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n});\n\nexport const genHederaLikeStakeData = (): TransactionDataOf<\"HEDERA_LIKE_STAKE\"> => ({\n type: \"HEDERA_LIKE_STAKE\" as const,\n currency: \"hedera\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n nodeId: faker.number.int({ min: 10, max: 99999999 }).toString(),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype PolkadotTxType =\n | \"POLKADOT_LIKE_SEND\"\n | \"POLKADOT_LIKE_ADDPROXY\"\n | \"POLKADOT_LIKE_REMOVEPROXY\"\n | \"POLKADOT_LIKE_BOND\"\n | \"POLKADOT_LIKE_REBOND\"\n | \"POLKADOT_LIKE_BONDEXTRA\"\n | \"POLKADOT_LIKE_UNBOND\"\n | \"POLKADOT_LIKE_WITHDRAWUNBONDED\"\n | \"POLKADOT_LIKE_SETPAYEE\"\n | \"POLKADOT_LIKE_ANONYMOUSPROXY\"\n | \"POLKADOT_LIKE_KILLANONYMOUS\"\n | \"POLKADOT_LIKE_CHILL\";\n\nexport const genPolkadotLikeTxData = (\n txType: PolkadotTxType,\n): TransactionDataOf<PolkadotTxType> => {\n switch (txType) {\n case \"POLKADOT_LIKE_SEND\":\n return {\n type: txType,\n currency: \"polkadot\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n };\n case \"POLKADOT_LIKE_ADDPROXY\":\n case \"POLKADOT_LIKE_REMOVEPROXY\":\n return {\n type: txType,\n currency: \"polkadot\",\n kind: \"Staking\" as const,\n proxy: faker.string.alphanumeric({ length: 30 }),\n };\n case \"POLKADOT_LIKE_BOND\":\n return {\n type: txType,\n currency: \"polkadot\",\n payee: faker.helpers.arrayElement([\"Staked\", \"Stash\"] as const),\n amount: faker.number.bigInt({ min: 0 }).toString(),\n };\n case \"POLKADOT_LIKE_REBOND\":\n case \"POLKADOT_LIKE_UNBOND\":\n return {\n type: txType,\n currency: \"polkadot\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n };\n case \"POLKADOT_LIKE_BONDEXTRA\":\n return {\n type: txType,\n currency: \"polkadot\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n };\n case \"POLKADOT_LIKE_WITHDRAWUNBONDED\":\n case \"POLKADOT_LIKE_CHILL\":\n return { type: txType, currency: \"polkadot\" };\n case \"POLKADOT_LIKE_SETPAYEE\":\n return {\n type: txType,\n currency: \"polkadot\",\n payee: faker.helpers.arrayElement([\"Staked\", \"Stash\"] as const),\n };\n case \"POLKADOT_LIKE_ANONYMOUSPROXY\":\n case \"POLKADOT_LIKE_KILLANONYMOUS\":\n return { type: txType, currency: \"polkadot\" };\n default: {\n const _exhaustive: never = txType;\n throw new Error(`Unknown polkadot transaction type: ${_exhaustive}`);\n }\n }\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\nexport const genRippleLikeSendData = (): TransactionDataOf<\"RIPPLE_LIKE_SEND\"> => ({\n type: \"RIPPLE_LIKE_SEND\" as const,\n currency: \"ripple\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n destinationTag: faker.helpers.arrayElement([faker.number.int().toString(), null]),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype SolanaTxType =\n | \"SOLANA_LIKE_SEND\"\n | \"SOLANA_LIKE_CREATE_DELEGATE_STAKE\"\n | \"SOLANA_LIKE_DELEGATE_STAKE\"\n | \"SOLANA_LIKE_WITHDRAW_STAKE\"\n | \"SOLANA_LIKE_DEACTIVATE_STAKE\"\n | \"SOLANA_LIKE_SPLIT_STAKE\"\n | \"SOLANA_LIKE_SPLIT_DEACTIVATE_STAKE\"\n | \"SOLANA_LIKE_MERGE_STAKE\"\n | \"SOLANA_LIKE_SEND_TOKEN\"\n | \"SOLANA_LIKE_FUND_AND_SEND_TOKEN\"\n | \"SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT\";\n\nexport const genSolanaLikeTxData = (txType: SolanaTxType): TransactionDataOf<SolanaTxType> => {\n switch (txType) {\n case \"SOLANA_LIKE_SEND\":\n case \"SOLANA_LIKE_CREATE_DELEGATE_STAKE\":\n case \"SOLANA_LIKE_SEND_TOKEN\":\n case \"SOLANA_LIKE_FUND_AND_SEND_TOKEN\":\n return {\n type: txType,\n currency: \"solana\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"SOLANA_LIKE_DELEGATE_STAKE\":\n return {\n type: txType,\n currency: \"solana\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n stakeAccount: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"SOLANA_LIKE_DEACTIVATE_STAKE\":\n return {\n type: txType,\n currency: \"solana\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n stakeAccount: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"SOLANA_LIKE_SPLIT_DEACTIVATE_STAKE\":\n case \"SOLANA_LIKE_SPLIT_STAKE\":\n case \"SOLANA_LIKE_WITHDRAW_STAKE\":\n return {\n type: txType,\n currency: \"solana\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n stakeAccount: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"SOLANA_LIKE_MERGE_STAKE\":\n return {\n type: txType,\n currency: \"solana\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n mergeSrcAccount: faker.string.alphanumeric({ length: 30 }),\n mergeDstAccount: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT\":\n return {\n type: txType,\n currency: \"solana\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n default: {\n const _exhaustive: never = txType;\n throw new Error(`Unknown solana transaction type: ${_exhaustive}`);\n }\n }\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\nexport const genStellarLikeSendData = (): TransactionDataOf<\"STELLAR_LIKE_SEND\"> => ({\n type: \"STELLAR_LIKE_SEND\" as const,\n currency: \"stellar\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n memo: faker.helpers.arrayElement([\n { type: \"MEMO_ID\" as const, value: faker.number.bigInt({ min: 0 }).toString() },\n { type: \"MEMO_TEXT\" as const, value: faker.string.alphanumeric({ length: 28 }) },\n {\n type: \"MEMO_HASH\" as const,\n value: faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 64 }),\n },\n {\n type: \"MEMO_RETURN\" as const,\n value: faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 64 }),\n },\n null,\n ]),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype SuiTxType = \"SUI_LIKE_SEND\" | \"SUI_LIKE_SEND_TOKEN\" | \"SUI_LIKE_STAKE\" | \"SUI_LIKE_UNSTAKE\";\n\nexport const genSuiLikeTxData = (txType: SuiTxType): TransactionDataOf<SuiTxType> => {\n const base = {\n currency: \"sui\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n\n switch (txType) {\n case \"SUI_LIKE_STAKE\":\n return {\n ...base,\n type: txType,\n validator: faker.string.alphanumeric({ length: 30 }),\n };\n case \"SUI_LIKE_UNSTAKE\":\n return {\n ...base,\n type: txType,\n stakedSuiId: faker.string.alphanumeric({ length: 30 }),\n useAllAmount: faker.datatype.boolean(),\n };\n case \"SUI_LIKE_SEND\":\n case \"SUI_LIKE_SEND_TOKEN\":\n return {\n ...base,\n type: txType,\n recipient: faker.string.alphanumeric({ length: 30 }),\n };\n default: {\n const _exhaustive: never = txType;\n throw new Error(`Unknown sui transaction type: ${_exhaustive}`);\n }\n }\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype TezosTxType = \"TEZOS_LIKE_SEND\" | \"TEZOS_LIKE_DELEGATE\" | \"TEZOS_LIKE_UNDELEGATE\";\n\nexport const genTezosLikeTxData = (txType: TezosTxType): TransactionDataOf<TezosTxType> => ({\n type: txType,\n currency: \"tezos\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\", \"CUSTOM\"] as const),\n },\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype TronTxType = \"TRON_LIKE_SEND\" | \"TRON_LIKE_SEND_TOKEN\";\n\nexport const genTronLikeTxData = (txType: TronTxType): TransactionDataOf<TronTxType> => ({\n type: txType,\n currency: \"tron\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n});\n","import type { RequestDataOf, TransactionDataOf } from \"@/app-lib\";\n\nimport { unreachable } from \"../utils\";\nimport { genBitcoinLikeSendData } from \"./bitcoin\";\nimport { genCantonLikeTxData } from \"./canton\";\nimport { genCardanoLikeTxData } from \"./cardano\";\nimport {\n genEthereumLikeConsolidateData,\n genEthereumLikeDeployContractData,\n genEthereumLikeExecuteContractData,\n genEthereumLikeSendData,\n genEthereumLikeStakeData,\n genEthereumLikeStakeTopUpData,\n genEthereumLikeUpgradeData,\n genEthereumLikeWithdrawData,\n} from \"./ethereum\";\nimport { genGenericTransactionData } from \"./generic\";\nimport { genHederaLikeSendData, genHederaLikeStakeData } from \"./hedera\";\nimport { genPolkadotLikeTxData } from \"./polkadot\";\nimport { genRippleLikeSendData } from \"./ripple\";\nimport { genSolanaLikeTxData } from \"./solana\";\nimport { genStellarLikeSendData } from \"./stellar\";\nimport { genSuiLikeTxData } from \"./sui\";\nimport { genTezosLikeTxData } from \"./tezos\";\nimport { genTronLikeTxData } from \"./tron\";\n\n/** Outgoing transaction type, which is a subset of `TransactionType`. */\nexport type OutgoingTxType = RequestDataOf<\"CREATE_TRANSACTION\">[\"transaction\"][\"type\"];\n\nexport const genOutgoingTxData = <T extends OutgoingTxType>(\n opts: Partial<TransactionDataOf<T>> & { type: T },\n): TransactionDataOf<T> => {\n let txDataDefaults: TransactionDataOf<OutgoingTxType>;\n switch (opts.type) {\n case \"BITCOIN_LIKE_SEND\":\n txDataDefaults = genBitcoinLikeSendData();\n break;\n case \"CANTON_LIKE_SEND\":\n case \"CANTON_LIKE_SEND_TOKEN\":\n case \"CANTON_LIKE_WITHDRAW\":\n case \"CANTON_LIKE_RECEIVE\":\n case \"CANTON_LIKE_PRE_APPROVAL\":\n txDataDefaults = genCantonLikeTxData(opts.type);\n break;\n case \"CARDANO_LIKE_SEND\":\n case \"CARDANO_LIKE_STAKING_REGISTER\":\n case \"CARDANO_LIKE_STAKING_DEREGISTER\":\n case \"CARDANO_LIKE_STAKING_DELEGATE\":\n case \"CARDANO_LIKE_STAKING_WITHDRAW\":\n txDataDefaults = genCardanoLikeTxData(opts.type);\n break;\n case \"ETHEREUM_LIKE_SEND\":\n txDataDefaults = genEthereumLikeSendData();\n break;\n case \"ETHEREUM_LIKE_EXECUTE_CONTRACT\":\n txDataDefaults = genEthereumLikeExecuteContractData();\n break;\n case \"ETHEREUM_LIKE_DEPLOY_CONTRACT\":\n txDataDefaults = genEthereumLikeDeployContractData();\n break;\n case \"ETHEREUM_LIKE_STAKE_DEPOSIT\":\n txDataDefaults = genEthereumLikeStakeData();\n break;\n case \"ETHEREUM_LIKE_STAKE_TOP_UP\":\n txDataDefaults = genEthereumLikeStakeTopUpData();\n break;\n case \"ETHEREUM_LIKE_STAKE_WITHDRAW\":\n txDataDefaults = genEthereumLikeWithdrawData();\n break;\n case \"ETHEREUM_LIKE_STAKE_CONSOLIDATE\":\n txDataDefaults = genEthereumLikeConsolidateData();\n break;\n case \"ETHEREUM_LIKE_STAKE_UPGRADE\":\n txDataDefaults = genEthereumLikeUpgradeData();\n break;\n case \"GENERIC_TRANSACTION\":\n txDataDefaults = genGenericTransactionData();\n break;\n case \"HEDERA_LIKE_SEND\":\n case \"HEDERA_LIKE_SEND_TOKEN\":\n txDataDefaults = genHederaLikeSendData(opts.type);\n break;\n case \"HEDERA_LIKE_STAKE\":\n txDataDefaults = genHederaLikeStakeData();\n break;\n case \"POLKADOT_LIKE_SEND\":\n case \"POLKADOT_LIKE_ADDPROXY\":\n case \"POLKADOT_LIKE_REMOVEPROXY\":\n case \"POLKADOT_LIKE_BOND\":\n case \"POLKADOT_LIKE_REBOND\":\n case \"POLKADOT_LIKE_BONDEXTRA\":\n case \"POLKADOT_LIKE_UNBOND\":\n case \"POLKADOT_LIKE_WITHDRAWUNBONDED\":\n case \"POLKADOT_LIKE_SETPAYEE\":\n case \"POLKADOT_LIKE_ANONYMOUSPROXY\":\n case \"POLKADOT_LIKE_KILLANONYMOUS\":\n case \"POLKADOT_LIKE_CHILL\":\n txDataDefaults = genPolkadotLikeTxData(opts.type);\n break;\n case \"RIPPLE_LIKE_SEND\":\n txDataDefaults = genRippleLikeSendData();\n break;\n case \"SOLANA_LIKE_SEND\":\n case \"SOLANA_LIKE_CREATE_DELEGATE_STAKE\":\n case \"SOLANA_LIKE_DELEGATE_STAKE\":\n case \"SOLANA_LIKE_WITHDRAW_STAKE\":\n case \"SOLANA_LIKE_DEACTIVATE_STAKE\":\n case \"SOLANA_LIKE_SPLIT_STAKE\":\n case \"SOLANA_LIKE_SPLIT_DEACTIVATE_STAKE\":\n case \"SOLANA_LIKE_MERGE_STAKE\":\n case \"SOLANA_LIKE_SEND_TOKEN\":\n case \"SOLANA_LIKE_FUND_AND_SEND_TOKEN\":\n case \"SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT\":\n txDataDefaults = genSolanaLikeTxData(opts.type);\n break;\n case \"STELLAR_LIKE_SEND\":\n txDataDefaults = genStellarLikeSendData();\n break;\n case \"TEZOS_LIKE_SEND\":\n case \"TEZOS_LIKE_DELEGATE\":\n case \"TEZOS_LIKE_UNDELEGATE\":\n txDataDefaults = genTezosLikeTxData(opts.type);\n break;\n case \"SUI_LIKE_SEND\":\n case \"SUI_LIKE_SEND_TOKEN\":\n case \"SUI_LIKE_STAKE\":\n case \"SUI_LIKE_UNSTAKE\":\n txDataDefaults = genSuiLikeTxData(opts.type);\n break;\n case \"TRON_LIKE_SEND\":\n case \"TRON_LIKE_SEND_TOKEN\":\n txDataDefaults = genTronLikeTxData(opts.type);\n break;\n default:\n txDataDefaults = unreachable(opts.type);\n break;\n }\n return { ...txDataDefaults, ...opts } as TransactionDataOf<T>;\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { AccountType, TransactionDataOf } from \"@/app-lib\";\n\nimport { genOutgoingTxData, type OutgoingTxType } from \"../transactions\";\n\nexport const ACCOUNT_TYPE_DEFAULT_CURRENCY: Record<AccountType, string> = {\n BITCOIN_LIKE: \"bitcoin\",\n CANTON_LIKE: \"canton_network\",\n CARDANO_LIKE: \"cardano\",\n ETHEREUM_LIKE: \"ethereum\",\n GENERIC_LIKE: \"tron\",\n HEDERA_LIKE: \"hedera\",\n POLKADOT_LIKE: \"polkadot\",\n RAW_SIGNING: \"bitcoin\",\n RIPPLE_LIKE: \"ripple\",\n SOLANA_LIKE: \"solana\",\n STELLAR_LIKE: \"stellar\",\n SUI_LIKE: \"sui\",\n TEZOS_LIKE: \"tezos\",\n TRON_LIKE: \"tron\",\n};\n\ntype OutgoingTxOptions<T extends OutgoingTxType> = Partial<TransactionDataOf<T>> & { type: T };\n\nexport const genCreateTransactionData = <T extends OutgoingTxType>(opts?: {\n accountId?: string;\n transaction?: OutgoingTxOptions<T>;\n}): { accountId: string; transaction: TransactionDataOf<T> } => {\n const accountId = opts?.accountId ?? faker.string.uuid();\n const txOpts = opts?.transaction ?? ({ type: \"ETHEREUM_LIKE_SEND\" } as OutgoingTxOptions<T>);\n return {\n accountId,\n transaction: genOutgoingTxData(txOpts),\n };\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nimport { genPubKey } from \"../utils\";\n\nexport const genCreatePsdUserData = (\n opts?: Partial<RequestDataOf<\"CREATE_PSD_USER\">>,\n): RequestDataOf<\"CREATE_PSD_USER\"> => ({\n registrationId: faker.string.uuid(),\n ...opts,\n});\n\nexport const genCreateApiUserData = (\n opts?: Partial<RequestDataOf<\"CREATE_API_USER\">>,\n): RequestDataOf<\"CREATE_API_USER\"> => ({\n name: faker.person.firstName(),\n pubKey: genPubKey(),\n role: \"OPERATOR\",\n viewAll: false,\n ...opts,\n});\n\nexport const genCreateApiUserAccessData = (\n opts?: Partial<RequestDataOf<\"CREATE_API_USER_ACCESS\">>,\n): RequestDataOf<\"CREATE_API_USER_ACCESS\"> => ({\n name: faker.person.firstName(),\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreateWhitelistData = (\n opts?: Partial<RequestDataOf<\"CREATE_WHITELIST\">>,\n): RequestDataOf<\"CREATE_WHITELIST\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n type: faker.helpers.arrayElement([\"TRANSACTION\", \"SMART_CONTRACT\"] as const),\n addresses: [\n {\n name: faker.lorem.words(3),\n currency: \"bitcoin\",\n address: faker.finance.bitcoinAddress(),\n },\n {\n name: faker.lorem.words(3),\n currency: \"ethereum\",\n address: faker.finance.ethereumAddress(),\n },\n ],\n ...opts,\n});\n\nexport const genEditWhitelistData = (\n opts?: Partial<RequestDataOf<\"EDIT_WHITELIST\">>,\n): RequestDataOf<\"EDIT_WHITELIST\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n addresses: [\n {\n name: faker.lorem.words(3),\n currency: \"bitcoin\",\n address: faker.finance.bitcoinAddress(),\n },\n {\n name: faker.lorem.words(3),\n currency: \"ethereum\",\n address: faker.finance.ethereumAddress(),\n },\n ],\n ...opts,\n});\n","import type { RequestDataOf } from \"@/app-lib\";\n\nexport const genWorkspaceRuleData = (\n opts?: Partial<RequestDataOf<\"EDIT_WORKSPACE_RULE\">>,\n): RequestDataOf<\"EDIT_WORKSPACE_RULE\"> => ({\n permission: \"CREATE_ACCOUNT_WITH_POLICY\",\n reviewConfig: [{ userIds: [], quorum: 2 }],\n ...opts,\n});\n","import type { RequestDataOf } from \"@/app-lib\";\n\nimport { unreachable } from \"../utils\";\nimport { genCreateAccountData, genEditAccountData, genEditTokenRuleData } from \"./account\";\nimport { genCreateApiKeyData, genEditApiKeyData } from \"./api-key\";\nimport { genCreateEntityData, genEditEntityData } from \"./entity\";\nimport { genCreateGroupData, genEditGroupData } from \"./group\";\nimport { genSignDigestsData, genSignMessageData } from \"./message-signature\";\nimport { genCreatePolicyData, genEditPolicyData } from \"./policy\";\nimport { genCreateSciConfigData, genEditSciConfigData } from \"./sciconfig\";\nimport {\n genTradelinkAdjustPledgeData,\n genTradelinkArbitrationData,\n genTradelinkCreateSettlementData,\n genTradelinkForceUnpledgeData,\n genTradelinkRepledgeData,\n genTradelinkWithdrawData,\n} from \"./tradelink\";\nimport { genCreateTransactionData } from \"./transaction\";\nimport { genCreateApiUserAccessData, genCreateApiUserData, genCreatePsdUserData } from \"./user\";\nimport { genCreateWhitelistData, genEditWhitelistData } from \"./whitelist\";\nimport { genWorkspaceRuleData } from \"./workspace-rule\";\n\nexport { ACCOUNT_TYPE_DEFAULT_CURRENCY } from \"./transaction\";\n// Re-export all per-domain generators\nexport {\n genCreateAccountData,\n genCreateApiKeyData,\n genCreateApiUserAccessData,\n genCreateApiUserData,\n genCreateEntityData,\n genCreateGroupData,\n genCreatePolicyData,\n genCreatePsdUserData,\n genCreateSciConfigData,\n genCreateTransactionData,\n genCreateWhitelistData,\n genEditAccountData,\n genEditApiKeyData,\n genEditEntityData,\n genEditGroupData,\n genEditPolicyData,\n genEditSciConfigData,\n genEditTokenRuleData,\n genEditWhitelistData,\n genSignDigestsData,\n genSignMessageData,\n genTradelinkAdjustPledgeData,\n genTradelinkArbitrationData,\n genTradelinkCreateSettlementData,\n genTradelinkForceUnpledgeData,\n genTradelinkRepledgeData,\n genTradelinkWithdrawData,\n genWorkspaceRuleData,\n};\n\nexport type RequestDataTypes = {\n // Workspace...\n UPDATE_QUORUM: RequestDataOf<\"UPDATE_QUORUM\">;\n EDIT_EXTERNAL_SIGNER_PUBKEYS: RequestDataOf<\"EDIT_EXTERNAL_SIGNER_PUBKEYS\">;\n // User...\n CREATE_PSD_USER: RequestDataOf<\"CREATE_PSD_USER\">;\n CREATE_API_USER: RequestDataOf<\"CREATE_API_USER\">;\n CREATE_API_USER_ACCESS: RequestDataOf<\"CREATE_API_USER_ACCESS\">;\n REVOKE_USER: Record<string, never>;\n // Admin gov rule...\n EDIT_WORKSPACE_RULE: RequestDataOf<\"EDIT_WORKSPACE_RULE\">;\n // Group...\n CREATE_GROUP: RequestDataOf<\"CREATE_GROUP\">;\n EDIT_GROUP: RequestDataOf<\"EDIT_GROUP\">;\n REVOKE_GROUP: Record<string, never>;\n // API key...\n CREATE_API_KEY: RequestDataOf<\"CREATE_API_KEY\">;\n EDIT_API_KEY: RequestDataOf<\"EDIT_API_KEY\">;\n REVOKE_API_KEY: Record<string, never>;\n // Whitelist...\n CREATE_WHITELIST: RequestDataOf<\"CREATE_WHITELIST\">;\n EDIT_WHITELIST: RequestDataOf<\"EDIT_WHITELIST\">;\n // Entity...\n CREATE_ENTITY: RequestDataOf<\"CREATE_ENTITY\">;\n EDIT_ENTITY: RequestDataOf<\"EDIT_ENTITY\">;\n REVOKE_ENTITY: Record<string, never>;\n // Account...\n CREATE_ACCOUNT: RequestDataOf<\"CREATE_ACCOUNT\">;\n EDIT_ACCOUNT: RequestDataOf<\"EDIT_ACCOUNT\">;\n EDIT_TOKEN_RULE: RequestDataOf<\"EDIT_TOKEN_RULE\">;\n // Operator requests...\n CREATE_TRANSACTION: RequestDataOf<\"CREATE_TRANSACTION\">;\n SIGN_MESSAGE: RequestDataOf<\"SIGN_MESSAGE\">;\n SIGN_DIGESTS: RequestDataOf<\"SIGN_DIGESTS\">;\n // SCI config ...\n CREATE_SCICONFIG: RequestDataOf<\"CREATE_SCICONFIG\">;\n EDIT_SCICONFIG: RequestDataOf<\"EDIT_SCICONFIG\">;\n // Policy\n CREATE_POLICY: RequestDataOf<\"CREATE_POLICY\">;\n EDIT_POLICY: RequestDataOf<\"EDIT_POLICY\">;\n // Tradelink...\n TRADELINK_ADJUST_PLEDGE: RequestDataOf<\"TRADELINK_ADJUST_PLEDGE\">;\n TRADELINK_REPLEDGE: RequestDataOf<\"TRADELINK_REPLEDGE\">;\n TRADELINK_CREATE_SETTLEMENT: RequestDataOf<\"TRADELINK_CREATE_SETTLEMENT\">;\n TRADELINK_FORCE_UNPLEDGE: RequestDataOf<\"TRADELINK_FORCE_UNPLEDGE\">;\n TRADELINK_WITHDRAW: RequestDataOf<\"TRADELINK_WITHDRAW\">;\n TRADELINK_ARBITRATE: RequestDataOf<\"TRADELINK_ARBITRATE\">;\n};\n\nexport const genRequestData = <T extends keyof RequestDataTypes>(\n type: T,\n opts?: Partial<RequestDataTypes[T]>,\n): RequestDataTypes[T] => {\n type R = RequestDataTypes[T];\n\n switch (type) {\n // Workspace...\n case \"UPDATE_QUORUM\":\n return { quorum: 3, ...opts } as R;\n case \"EDIT_EXTERNAL_SIGNER_PUBKEYS\":\n return {\n previousPublicKeys: [`04${\"1\".repeat(128)}`],\n requestedPublicKeys: [`04${\"2\".repeat(128)}`],\n ...opts,\n } as R;\n\n // User...\n case \"CREATE_PSD_USER\":\n return genCreatePsdUserData(opts) as R;\n case \"CREATE_API_USER\":\n return genCreateApiUserData(opts) as R;\n case \"CREATE_API_USER_ACCESS\":\n return genCreateApiUserAccessData(opts) as R;\n case \"REVOKE_USER\":\n return {} as R;\n\n // Admin gov rule...\n case \"EDIT_WORKSPACE_RULE\":\n return genWorkspaceRuleData(opts) as R;\n\n // Group...\n case \"CREATE_GROUP\":\n return genCreateGroupData(opts) as R;\n case \"EDIT_GROUP\":\n return genEditGroupData(opts) as R;\n case \"REVOKE_GROUP\":\n return {} as R;\n\n // ApiKey...\n case \"CREATE_API_KEY\":\n return genCreateApiKeyData(opts) as R;\n case \"EDIT_API_KEY\":\n return genEditApiKeyData(opts) as R;\n case \"REVOKE_API_KEY\":\n return {} as R;\n\n // Whitelist...\n case \"CREATE_WHITELIST\":\n return genCreateWhitelistData(opts) as R;\n case \"EDIT_WHITELIST\":\n return genEditWhitelistData(opts) as R;\n\n // Entity...\n case \"CREATE_ENTITY\":\n return genCreateEntityData(opts) as R;\n case \"EDIT_ENTITY\":\n return genEditEntityData(opts) as R;\n case \"REVOKE_ENTITY\":\n return {} as R;\n\n // Account...\n case \"CREATE_ACCOUNT\":\n return genCreateAccountData(opts) as R;\n case \"EDIT_ACCOUNT\":\n return genEditAccountData(opts) as R;\n case \"EDIT_TOKEN_RULE\":\n return genEditTokenRuleData(opts) as R;\n\n // Operator requests...\n case \"CREATE_TRANSACTION\":\n return genCreateTransactionData(opts) as R;\n case \"SIGN_MESSAGE\":\n return genSignMessageData(opts) as R;\n case \"SIGN_DIGESTS\":\n return genSignDigestsData(opts) as R;\n\n // SCI config...\n case \"CREATE_SCICONFIG\":\n return genCreateSciConfigData(opts) as R;\n case \"EDIT_SCICONFIG\":\n return genEditSciConfigData(opts) as R;\n\n // Policy\n case \"CREATE_POLICY\":\n return genCreatePolicyData(opts) as R;\n case \"EDIT_POLICY\":\n return genEditPolicyData(opts) as R;\n\n // Tradelink...\n case \"TRADELINK_ADJUST_PLEDGE\":\n return genTradelinkAdjustPledgeData(opts) as R;\n case \"TRADELINK_CREATE_SETTLEMENT\":\n return genTradelinkCreateSettlementData(opts) as R;\n case \"TRADELINK_FORCE_UNPLEDGE\":\n return genTradelinkForceUnpledgeData(opts) as R;\n case \"TRADELINK_WITHDRAW\":\n return genTradelinkWithdrawData(opts) as R;\n case \"TRADELINK_REPLEDGE\":\n return genTradelinkRepledgeData(opts) as R;\n case \"TRADELINK_ARBITRATE\":\n return genTradelinkArbitrationData(opts) as R;\n\n default:\n return unreachable(type);\n }\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type {\n AccountResponse,\n AccountType,\n GroupResponse,\n UserResponse,\n VaultRequestResponse,\n WebhookResponse,\n WhitelistResponse,\n} from \"@/app-lib\";\n\nimport {\n ACCOUNT_TYPE_DEFAULT_CURRENCY,\n genRequestData,\n type RequestDataTypes,\n} from \"./request-data\";\nimport { genHexString, genPubKey, genUniqueName } from \"./utils\";\n\n// All AccountType values as a typed array (string literals, no Prisma import).\nconst ACCOUNT_TYPES: AccountType[] = [\n \"BITCOIN_LIKE\",\n \"CANTON_LIKE\",\n \"CARDANO_LIKE\",\n \"ETHEREUM_LIKE\",\n \"GENERIC_LIKE\",\n \"HEDERA_LIKE\",\n \"POLKADOT_LIKE\",\n \"RAW_SIGNING\",\n \"RIPPLE_LIKE\",\n \"SOLANA_LIKE\",\n \"STELLAR_LIKE\",\n \"SUI_LIKE\",\n \"TEZOS_LIKE\",\n \"TRON_LIKE\",\n];\n\nconst genAssetFields = (type: AccountType): AccountResponse[\"asset\"] => {\n switch (type) {\n case \"RAW_SIGNING\":\n case \"GENERIC_LIKE\":\n return { type };\n case \"BITCOIN_LIKE\":\n return { type, xpub: genHexString(120, \"lower\"), addressDerivationMode: \"NEW\" };\n case \"CANTON_LIKE\":\n case \"CARDANO_LIKE\":\n case \"POLKADOT_LIKE\":\n case \"RIPPLE_LIKE\":\n case \"STELLAR_LIKE\":\n case \"SUI_LIKE\":\n case \"TEZOS_LIKE\":\n return { type, address: faker.string.alphanumeric({ length: 34 }) };\n case \"ETHEREUM_LIKE\":\n case \"SOLANA_LIKE\":\n case \"TRON_LIKE\":\n return { type, address: faker.string.alphanumeric({ length: 42 }) };\n case \"HEDERA_LIKE\":\n return {\n type,\n address: `0.0.${faker.number.int({ min: 10000000, max: 99999999 })}`,\n isActivated: faker.datatype.boolean(),\n };\n }\n};\n\nexport const genAccountResponse = (\n opts?: Partial<{\n type: AccountType;\n governanceType: \"CLASSIC\" | \"RAW_SIGNING\" | \"TRADELINK\";\n }>,\n): AccountResponse => {\n const type = opts?.type ?? faker.helpers.arrayElement(ACCOUNT_TYPES);\n const governanceType = opts?.governanceType ?? \"CLASSIC\";\n const currency = ACCOUNT_TYPE_DEFAULT_CURRENCY[type];\n const id = faker.string.uuid();\n\n const governance =\n governanceType === \"TRADELINK\"\n ? {\n type: governanceType,\n assetManagerId: faker.string.uuid(),\n exchangeConfigs: [],\n }\n : {\n type: governanceType,\n policyId: faker.string.uuid(),\n };\n\n return {\n id,\n legacyId: faker.number.int({ min: 1, max: 2000000000 }),\n name: genUniqueName(),\n currency,\n network: currency,\n contractAddress: null,\n tokenIdentifier: null,\n index: faker.number.int({ min: 0, max: 10 }),\n derivationPath: \"m/44'/0'/0'\",\n status: \"ACTIVE\" as const,\n createdAt: faker.date.past(),\n updatedAt: faker.date.past(),\n asset: genAssetFields(type),\n governance,\n };\n};\n\nexport const genUserResponse = (opts?: Partial<UserResponse>): UserResponse => {\n const role = opts?.role ?? faker.helpers.arrayElement([\"ADMIN\", \"OPERATOR\"]);\n const deviceType = opts?.deviceType ?? (role === \"READ_ONLY_API_KEY\" ? \"API\" : \"PSD\");\n return {\n id: faker.string.uuid(),\n legacyId: faker.number.int({ min: 1, max: 2000000000 }),\n legacyViewAll: false,\n workspaceName: faker.string.alphanumeric({ length: 16, casing: \"lower\" }),\n name: faker.person.fullName(),\n deviceUserId: deviceType === \"API\" ? null : genHexString(16, \"lower\"),\n deviceType,\n role,\n pubKey: genPubKey(),\n status: \"ACTIVE\" as const,\n isSuspended: false,\n createdAt: faker.date.past(),\n updatedAt: faker.date.past(),\n ...opts,\n };\n};\n\nexport const genGroupResponse = (opts?: Partial<GroupResponse>): GroupResponse => ({\n id: faker.string.uuid(),\n legacyId: faker.number.int({ min: 1, max: 2000000000 }),\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n status: \"ACTIVE\" as const,\n members: [],\n createdAt: faker.date.past(),\n updatedAt: faker.date.past(),\n ...opts,\n});\n\nexport const genWhitelistResponse = (opts?: Partial<WhitelistResponse>): WhitelistResponse => ({\n id: faker.string.uuid(),\n legacyId: faker.number.int({ min: 1, max: 2000000000 }),\n name: faker.lorem.words(3),\n type: \"TRANSACTION\",\n status: \"ACTIVE\" as const,\n addresses: [\n {\n name: faker.lorem.words(3),\n currency: \"bitcoin\",\n address: faker.finance.bitcoinAddress(),\n },\n {\n name: faker.lorem.words(3),\n currency: \"ethereum\",\n address: faker.finance.ethereumAddress(),\n },\n ],\n createdAt: faker.date.past(),\n updatedAt: faker.date.past(),\n description: faker.lorem.sentence(),\n ...opts,\n});\n\n/** Request types that have a `targetId` field */\nconst TYPES_WITH_TARGET_ID: (keyof RequestDataTypes)[] = [\n \"EDIT_ACCOUNT\",\n \"EDIT_TOKEN_RULE\",\n \"EDIT_GROUP\",\n \"REVOKE_GROUP\",\n \"EDIT_WHITELIST\",\n \"EDIT_ENTITY\",\n \"REVOKE_ENTITY\",\n \"REVOKE_USER\",\n \"EDIT_POLICY\",\n \"REVOKE_API_KEY\",\n];\n\nexport const genVaultRequestResponse = <T extends keyof RequestDataTypes>(opts: {\n type: T;\n data?: Partial<RequestDataTypes[T]>;\n}): VaultRequestResponse => {\n const { type, data: dataOpts } = opts;\n const data = genRequestData(type, dataOpts);\n const targetId = TYPES_WITH_TARGET_ID.includes(type) ? faker.string.uuid() : null;\n return {\n id: faker.string.uuid(),\n legacyId: faker.number.int({ min: 1, max: 2000000000 }),\n type,\n state: \"PENDING_APPROVAL\" as const,\n reviewSteps: [{ stageName: \"default\", quorum: 2 }],\n currentStepIndex: 0,\n expiresAt: faker.date.future(),\n targetId,\n note: null,\n reviews: [],\n createdAt: faker.date.past(),\n updatedAt: faker.date.past(),\n createdById: faker.string.uuid(),\n data,\n } as VaultRequestResponse;\n};\n\nexport const genWebhookResponse = (opts?: Partial<WebhookResponse>): WebhookResponse => ({\n id: faker.string.uuid(),\n actions: faker.helpers.arrayElements([\n \"REQUEST_CREATED\",\n \"REQUEST_RECEIVED_APPROVAL\",\n \"REQUEST_RECEIVED_REJECTION\",\n \"REQUEST_ACTIVATED_REVIEWS\",\n \"REQUEST_EXECUTING\",\n \"REQUEST_EXECUTED\",\n \"REQUEST_ABORTED\",\n \"REQUEST_FAILED\",\n \"REQUEST_EXPIRED\",\n ]),\n url: faker.internet.url(),\n createdAt: faker.date.past(),\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { AccountStakingFields, AccountType } from \"@/app-lib\";\n\nexport const genAccountStakingFields = (opts: {\n type: AccountType;\n contractAddress: string | null;\n}): AccountStakingFields | null => {\n // No staking for token account\n if (opts.contractAddress !== null) {\n return null;\n }\n\n switch (opts.type) {\n case \"BITCOIN_LIKE\":\n return null;\n case \"CANTON_LIKE\":\n return null;\n case \"CARDANO_LIKE\":\n return {\n type: \"CARDANO_LIKE\",\n staking: {\n staked: faker.number.int().toString(),\n },\n };\n case \"ETHEREUM_LIKE\":\n return {\n type: \"ETHEREUM_LIKE\",\n staking: {\n totalStaking: faker.number.int().toString(),\n totalRewards: faker.number.int().toString(),\n availableRewards: faker.number.int().toString(),\n networkApy: faker.number.float({ min: 0, max: 1 }),\n },\n };\n case \"GENERIC_LIKE\":\n return null;\n case \"POLKADOT_LIKE\":\n return {\n type: \"POLKADOT_LIKE\",\n staking: {\n info: {\n controllerAddress: \"<fake-controller-address>\",\n rewardsDestination: \"<fake-rewards-destination>\",\n proxies: [\"<fake-proxy>\"],\n legacyStaking: false,\n isNominator: false,\n },\n balances: {\n free: faker.number.int().toString(),\n reserved: faker.number.int().toString(),\n frozen: faker.number.int().toString(),\n bonded: faker.number.int().toString(),\n available: faker.number.int().toString(),\n unbonding: [\n { amount: faker.number.int().toString(), waiting_time: \"<fake-waiting-time>\" },\n ],\n unbonded: [\n { amount: faker.number.int().toString(), waiting_time: \"<fake-waiting-time>\" },\n ],\n totalUnbonding: faker.number.int().toString(),\n totalUnbonded: faker.number.int().toString(),\n },\n anonymousProxy: {\n address: \"<fake-anonymous-proxy-address>\",\n createdAt: faker.date.past().toISOString(),\n isController: false,\n isMain: false,\n balances: {\n free: faker.number.int().toString(),\n reserved: faker.number.int().toString(),\n frozen: faker.number.int().toString(),\n bonded: faker.number.int().toString(),\n available: faker.number.int().toString(),\n total: faker.number.int().toString(),\n },\n blockHeight: faker.number.int().toString(),\n extIndex: faker.number.int().toString(),\n index: faker.number.int().toString(),\n kind: \"<fake-kind>\",\n },\n },\n };\n case \"RAW_SIGNING\":\n return null;\n case \"RIPPLE_LIKE\":\n return null;\n case \"SOLANA_LIKE\":\n return {\n type: \"SOLANA_LIKE\",\n staking: {\n staked: faker.number.int().toString(),\n rewards: {\n total: faker.number.int().toString(),\n last7: faker.number.int().toString(),\n last30: faker.number.int().toString(),\n },\n stakes: [\n {\n uid: \"<fake-stake-uid>\",\n baseAccountUid: \"<fake-base-account-uid>\",\n pubKey: \"<fake-pub-key>\",\n validatorPubKey: \"<fake-validator-pub-key>\",\n initialAmount: faker.number.int().toString(),\n activeAmount: faker.number.int().toString(),\n inactiveAmount: faker.number.int().toString(),\n totalBalance: faker.number.int().toString(),\n creationDate: faker.date.past().toISOString(),\n activationEpoch: faker.date.past().toISOString(),\n activationDate: faker.date.past().toISOString(),\n deactivationEpoch: \"<fake-deactivation-epoch>\",\n deactivationDate: faker.date.past().toISOString(),\n status: \"activated\",\n rentExemptReserve: faker.number.int().toString(),\n withdrawableAmount: faker.number.int().toString(),\n totalRewards: faker.number.int().toString(),\n creationTxHash: \"<fake-creation-tx-hash>\",\n actionsTxHashes: [\"<fake-action-tx-hash>\"],\n },\n ],\n },\n };\n case \"STELLAR_LIKE\":\n return null;\n case \"SUI_LIKE\":\n return {\n type: \"SUI_LIKE\",\n staking: {\n totalStaked: faker.number.int().toString(),\n totalRewards: faker.number.int().toString(),\n },\n };\n case \"TEZOS_LIKE\":\n return {\n type: \"TEZOS_LIKE\",\n staking: {\n delegations: [{ address: faker.string.alpha({ length: 10 }) }],\n },\n };\n case \"TRON_LIKE\":\n return null;\n case \"HEDERA_LIKE\":\n return {\n type: \"HEDERA_LIKE\",\n staking: {\n totalStaked: faker.number.int().toString(),\n totalRewards: faker.number.int().toString(),\n },\n };\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"fakes.mjs","names":["_exhaustive","_exhaustive","_exhaustive","_exhaustive","_exhaustive"],"sources":["../src/__fakes__/trpc/utils.ts","../src/__fakes__/trpc/inputs.ts","../src/__fakes__/trpc/request-data/account.ts","../src/__fakes__/trpc/request-data/api-key.ts","../src/__fakes__/trpc/request-data/entity.ts","../src/__fakes__/trpc/request-data/group.ts","../src/__fakes__/trpc/request-data/message-signature.ts","../src/__fakes__/trpc/request-data/policy.ts","../src/__fakes__/trpc/request-data/sciconfig.ts","../src/__fakes__/trpc/request-data/tradelink.ts","../src/__fakes__/trpc/transactions/bitcoin.ts","../src/__fakes__/trpc/transactions/canton.ts","../src/__fakes__/trpc/transactions/cardano.ts","../src/__fakes__/trpc/transactions/ethereum.ts","../src/__fakes__/trpc/transactions/generic.ts","../src/__fakes__/trpc/transactions/hedera.ts","../src/__fakes__/trpc/transactions/polkadot.ts","../src/__fakes__/trpc/transactions/ripple.ts","../src/__fakes__/trpc/transactions/solana.ts","../src/__fakes__/trpc/transactions/stellar.ts","../src/__fakes__/trpc/transactions/sui.ts","../src/__fakes__/trpc/transactions/tezos.ts","../src/__fakes__/trpc/transactions/tron.ts","../src/__fakes__/trpc/transactions/index.ts","../src/__fakes__/trpc/request-data/transaction.ts","../src/__fakes__/trpc/request-data/user.ts","../src/__fakes__/trpc/request-data/whitelist.ts","../src/__fakes__/trpc/request-data/workspace-rule.ts","../src/__fakes__/trpc/request-data/index.ts","../src/__fakes__/trpc/responses.ts","../src/__fakes__/trpc/staking.ts"],"sourcesContent":["import { faker } from \"@faker-js/faker\";\n\nexport const unreachable = (value: never): never => {\n throw new Error(`Type checker should have prevented you from reaching here: ${value}`);\n};\n\nexport const genPubKey = (): string =>\n `04${faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 128 })}`;\n\nexport const genHexString = (length: number, casing: \"lower\" | \"upper\"): string =>\n faker.string.hexadecimal({ prefix: \"\", casing, length });\n\n/**\n * Hex-encodes a random ASCII string, so the decoded bytes stay within 0x01–0x7F. Use this for\n * sign-message `data` fixtures: `validateMessage` rejects hex that decodes to non-ASCII\n * bytes (VG-30873), which a raw {@link genHexString} can produce.\n */\nexport const genAsciiHexString = (byteLength = 5): string =>\n Buffer.from(faker.string.alphanumeric({ length: byteLength }), \"utf8\").toString(\"hex\");\n\nexport const genUniqueName = (length = 20): string =>\n faker.string.alphanumeric({ length, casing: \"lower\" });\n","import { faker } from \"@faker-js/faker\";\n\nimport type { VaultRequestCreateInput } from \"@/app-lib\";\n\nimport { genAsciiHexString } from \"./utils\";\n\nexport type RequestInputDataOf<T extends VaultRequestCreateInput[\"request\"][\"type\"]> = Extract<\n VaultRequestCreateInput[\"request\"],\n { type: T }\n>[\"data\"];\n\nexport const genSignMessageInputData = (\n opts?: Partial<RequestInputDataOf<\"SIGN_MESSAGE\">>,\n): RequestInputDataOf<\"SIGN_MESSAGE\"> => ({\n message: {\n type: \"EIP191\",\n data: genAsciiHexString(),\n },\n accountId: faker.string.uuid(),\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nimport { genUniqueName } from \"../utils\";\n\nexport const genCreateAccountData = (\n opts?: Partial<RequestDataOf<\"CREATE_ACCOUNT\">>,\n): RequestDataOf<\"CREATE_ACCOUNT\"> => ({\n name: genUniqueName(),\n type: \"BITCOIN_LIKE\",\n currency: \"bitcoin\",\n contractAddress: null,\n tokenIdentifier: null,\n governance: {\n type: \"CLASSIC\",\n policy: { rules: [] },\n },\n index: 0,\n derivationPath: \"m/84'/0'/0'\",\n bitcoinAddressDerivationMode: \"NEW\",\n ...opts,\n});\n\nexport const genEditAccountData = (\n opts?: Partial<RequestDataOf<\"EDIT_ACCOUNT\">>,\n): RequestDataOf<\"EDIT_ACCOUNT\"> => ({\n name: genUniqueName(),\n governance: {\n type: \"CLASSIC\",\n policy: { rules: [] },\n },\n ...opts,\n});\n\nexport const genEditTokenRuleData = (\n opts?: Partial<RequestDataOf<\"EDIT_TOKEN_RULE\">>,\n): RequestDataOf<\"EDIT_TOKEN_RULE\"> => ({\n parentAccountId: faker.string.uuid(),\n contractAddress: faker.string.alphanumeric({ length: 44 }),\n rules: [\n {\n operationType: \"SEND\",\n reviewSteps: [{ quorum: 1, userIds: [] }],\n },\n ],\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreateApiKeyData = (\n opts?: Partial<RequestDataOf<\"CREATE_API_KEY\">>,\n): RequestDataOf<\"CREATE_API_KEY\"> => ({\n name: faker.company.name().slice(0, 19),\n entities: [],\n scopes: {},\n ...opts,\n});\n\nexport const genEditApiKeyData = (\n opts?: Partial<RequestDataOf<\"EDIT_API_KEY\">>,\n): RequestDataOf<\"EDIT_API_KEY\"> => ({\n name: faker.company.name().slice(0, 19),\n entities: [],\n scopes: {},\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreateEntityData = (\n opts?: Partial<RequestDataOf<\"CREATE_ENTITY\">>,\n): RequestDataOf<\"CREATE_ENTITY\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n accountIds: [],\n memberIds: [],\n ...opts,\n});\n\nexport const genEditEntityData = (\n opts?: Partial<RequestDataOf<\"EDIT_ENTITY\">>,\n): RequestDataOf<\"EDIT_ENTITY\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n accountIds: [],\n memberIds: [],\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreateGroupData = (\n opts?: Partial<RequestDataOf<\"CREATE_GROUP\">>,\n): RequestDataOf<\"CREATE_GROUP\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n members: [],\n ...opts,\n});\n\nexport const genEditGroupData = (\n opts?: Partial<RequestDataOf<\"EDIT_GROUP\">>,\n): RequestDataOf<\"EDIT_GROUP\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n members: [],\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { MessageType, RequestDataOf } from \"@/app-lib\";\n\nimport { genAsciiHexString } from \"../utils\";\n\nexport const genSignMessageData = (\n opts?: Partial<RequestDataOf<\"SIGN_MESSAGE\">> & { messageType?: MessageType },\n): RequestDataOf<\"SIGN_MESSAGE\"> => {\n const messageType = opts?.messageType ?? opts?.message?.type ?? \"EIP191\";\n let message: RequestDataOf<\"SIGN_MESSAGE\">[\"message\"];\n switch (messageType) {\n case \"EIP191\":\n message = {\n type: \"EIP191\",\n data: genAsciiHexString(),\n };\n break;\n case \"EIP712\":\n message = {\n type: \"EIP712\",\n data: {\n types: {\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n ],\n PrimaryType: [\n { name: \"a\", type: \"int256\" },\n { name: \"b\", type: \"bool\" },\n ],\n },\n primaryType: \"PrimaryType\",\n domain: {\n name: \"Test Domain\",\n version: \"1\",\n chainId: 1,\n verifyingContract: \"0x1234567890123456789012345678901234567890\",\n },\n message: {\n a: faker.number.int({ min: 0, max: 1000 }),\n b: faker.datatype.boolean(),\n },\n },\n };\n break;\n case \"CIP8\":\n case \"BIP137\":\n throw new Error(`Unsupported message type in fakes: ${messageType}`);\n }\n return {\n message,\n accountId: faker.string.uuid(),\n address: faker.finance.ethereumAddress(),\n derivationPath: \"44'/60'/0'/0/0\",\n ...opts,\n };\n};\n\nexport const genSignDigestsData = (\n opts?: Partial<RequestDataOf<\"SIGN_DIGESTS\">>,\n): RequestDataOf<\"SIGN_DIGESTS\"> => ({\n accountId: faker.string.uuid(),\n digests: [\n {\n digest: faker.string.hexadecimal({ prefix: \"\", length: 64 }),\n derivationPath: \"m/44'/60'/0'\",\n },\n ],\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreatePolicyData = (\n opts?: Partial<RequestDataOf<\"CREATE_POLICY\">>,\n): RequestDataOf<\"CREATE_POLICY\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n asset: { network: \"bitcoin\", contractAddress: null, tokenIdentifier: null },\n govRules: [],\n ...opts,\n});\n\nexport const genEditPolicyData = (\n opts?: Partial<RequestDataOf<\"EDIT_POLICY\">>,\n): RequestDataOf<\"EDIT_POLICY\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n govRules: [],\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\nimport { times } from \"lodash-es\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreateSciConfigData = (\n opts?: Partial<RequestDataOf<\"CREATE_SCICONFIG\">>,\n): RequestDataOf<\"CREATE_SCICONFIG\"> => ({\n account: faker.string.uuid(),\n config: {\n dapps: times(faker.number.int({ min: 0, max: 5 }), () => faker.word.noun()),\n customContractCallEnabled: faker.datatype.boolean(),\n },\n ...opts,\n});\n\nexport const genEditSciConfigData = (\n opts?: Partial<RequestDataOf<\"EDIT_SCICONFIG\">>,\n): RequestDataOf<\"EDIT_SCICONFIG\"> => ({\n config: {\n dapps: times(faker.number.int({ min: 0, max: 5 }), () => faker.word.noun()),\n customContractCallEnabled: faker.datatype.boolean(),\n },\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genTradelinkAdjustPledgeData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_ADJUST_PLEDGE\">>,\n): RequestDataOf<\"TRADELINK_ADJUST_PLEDGE\"> => ({\n accountId: faker.string.uuid(),\n exchangeId: faker.string.uuid(),\n amount: \"42\",\n ...opts,\n});\n\nexport const genTradelinkRepledgeData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_REPLEDGE\">>,\n): RequestDataOf<\"TRADELINK_REPLEDGE\"> => ({\n accountId: faker.string.uuid(),\n exchangeId: faker.string.uuid(),\n amount: \"42\",\n ...opts,\n});\n\nexport const genTradelinkCreateSettlementData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_CREATE_SETTLEMENT\">>,\n): RequestDataOf<\"TRADELINK_CREATE_SETTLEMENT\"> => ({\n accountId: faker.string.uuid(),\n exchangeId: faker.string.uuid(),\n transaction: {\n type: \"BITCOIN_LIKE_SEND\",\n amount: \"42\",\n currency: \"bitcoin\",\n maxFee: \"999\",\n recipient: faker.finance.bitcoinAddress(),\n feeStrategy: { type: \"NORMAL\" },\n },\n ...opts,\n});\n\nexport const genTradelinkForceUnpledgeData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_FORCE_UNPLEDGE\">>,\n): RequestDataOf<\"TRADELINK_FORCE_UNPLEDGE\"> => ({\n accountId: faker.string.uuid(),\n exchangeId: faker.string.uuid(),\n ...opts,\n});\n\nexport const genTradelinkWithdrawData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_WITHDRAW\">>,\n): RequestDataOf<\"TRADELINK_WITHDRAW\"> => ({\n accountId: faker.string.uuid(),\n transaction: {\n type: \"ETHEREUM_LIKE_SEND\",\n recipient: \"0x63e4195AF1509490b430F3f5bCb85A82a24F5C82\",\n amount: faker.number.bigInt({ min: 0, max: 99 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n currency: \"ethereum\",\n feeStrategy: {\n type: \"NORMAL\",\n gasPrice: \"2\",\n gasLimit: \"10\",\n },\n },\n ...opts,\n});\n\nexport const genTradelinkArbitrationData = (\n opts?: Partial<RequestDataOf<\"TRADELINK_ARBITRATE\">>,\n): RequestDataOf<\"TRADELINK_ARBITRATE\"> => ({\n accountId: faker.string.uuid(),\n transaction: {\n type: \"ETHEREUM_LIKE_SEND\",\n recipient: \"0xcefd70CFCd7a2FAa0fe956E3d496F9313297CB44\",\n amount: faker.number.bigInt({ min: 0, max: 99 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n currency: \"ethereum\",\n feeStrategy: {\n type: \"NORMAL\",\n gasPrice: \"2\",\n gasLimit: \"10\",\n },\n },\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\nexport const genBitcoinLikeSendData = (): TransactionDataOf<\"BITCOIN_LIKE_SEND\"> => ({\n type: \"BITCOIN_LIKE_SEND\" as const,\n currency: \"bitcoin\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.finance.bitcoinAddress(),\n // les-wallet requires \"exactly one\" fee field: a preset (no feePerByte) or a\n // CUSTOM fee carrying a feePerByte. Seed only valid combinations.\n feeStrategy: faker.helpers.arrayElement([\n { type: \"SLOW\" as const },\n { type: \"NORMAL\" as const },\n { type: \"FAST\" as const },\n { type: \"CUSTOM\" as const, feePerByte: faker.number.bigInt({ min: 1 }).toString() },\n ]),\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype CantonTxType =\n | \"CANTON_LIKE_SEND\"\n | \"CANTON_LIKE_SEND_TOKEN\"\n | \"CANTON_LIKE_WITHDRAW\"\n | \"CANTON_LIKE_RECEIVE\"\n | \"CANTON_LIKE_PRE_APPROVAL\";\n\nconst fakeCantonPartyId = (): string =>\n `party-${faker.lorem.word()}::${faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 68 })}`;\n\nconst fakeCantonContractId = (): string =>\n faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 138 });\n\nconst fakeCantonInstrumentId = (): string =>\n faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 10 });\n\nconst fakeCantonTransferProposal = (): TransactionDataOf<\n \"CANTON_LIKE_WITHDRAW\" | \"CANTON_LIKE_RECEIVE\"\n>[\"transferProposal\"] => ({\n amount: faker.number.bigInt().toString(),\n contractId: fakeCantonContractId(),\n instrumentAdmin: fakeCantonPartyId(),\n instrumentId: fakeCantonInstrumentId(),\n expiresAtMicros: faker.number.int(),\n reason: faker.lorem.sentence(),\n sender: fakeCantonPartyId(),\n recipient: fakeCantonPartyId(),\n});\n\nexport const genCantonLikeTxData = (txType: CantonTxType): TransactionDataOf<CantonTxType> => {\n switch (txType) {\n case \"CANTON_LIKE_SEND\":\n case \"CANTON_LIKE_SEND_TOKEN\":\n return {\n type: txType,\n currency: \"canton_network\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n recipient: fakeCantonPartyId(),\n reason: faker.helpers.arrayElement([null, faker.lorem.word()]),\n };\n case \"CANTON_LIKE_WITHDRAW\":\n return {\n type: txType,\n currency: \"canton_network\",\n transferProposal: fakeCantonTransferProposal(),\n reason: faker.lorem.sentence(),\n };\n case \"CANTON_LIKE_RECEIVE\":\n return {\n type: txType,\n currency: \"canton_network\",\n transferProposal: fakeCantonTransferProposal(),\n verdict: \"ACCEPT\" as const,\n reason: faker.lorem.sentence(),\n };\n case \"CANTON_LIKE_PRE_APPROVAL\":\n return {\n type: txType,\n currency: \"canton_network\",\n recipient: fakeCantonPartyId(),\n };\n default: {\n const _exhaustive: never = txType;\n throw new Error(`Unknown canton transaction type: ${_exhaustive}`);\n }\n }\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype CardanoTxType =\n | \"CARDANO_LIKE_SEND\"\n | \"CARDANO_LIKE_STAKING_REGISTER\"\n | \"CARDANO_LIKE_STAKING_DEREGISTER\"\n | \"CARDANO_LIKE_STAKING_DELEGATE\"\n | \"CARDANO_LIKE_STAKING_WITHDRAW\";\n\nexport const genCardanoLikeTxData = (txType: CardanoTxType): TransactionDataOf<CardanoTxType> => {\n switch (txType) {\n case \"CARDANO_LIKE_SEND\":\n return {\n type: txType,\n currency: \"cardano\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"CARDANO_LIKE_STAKING_DELEGATE\":\n return {\n type: txType,\n currency: \"cardano\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n stakePoolId: `pool${faker.string.alphanumeric({ length: 52 })}`,\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"CARDANO_LIKE_STAKING_REGISTER\":\n case \"CARDANO_LIKE_STAKING_DEREGISTER\":\n case \"CARDANO_LIKE_STAKING_WITHDRAW\":\n return {\n type: txType,\n currency: \"cardano\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n amount: faker.number.bigInt({ min: 0 }).toString(),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n default: {\n const _exhaustive: never = txType;\n throw new Error(`Unknown cardano transaction type: ${_exhaustive}`);\n }\n }\n};\n","import { faker } from \"@faker-js/faker\";\nimport { omit } from \"lodash-es\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\nexport const genEthereumLikeSendData = (): TransactionDataOf<\"ETHEREUM_LIKE_SEND\"> => {\n const gasLimit = faker.number.bigInt({ min: 1 });\n const gasPrice = faker.number.bigInt({ min: 1 });\n const maxFee = gasLimit * gasPrice;\n return {\n type: \"ETHEREUM_LIKE_SEND\" as const,\n currency: \"ethereum\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: maxFee.toString(),\n recipient: faker.finance.ethereumAddress(),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\", \"CUSTOM\"] as const),\n gasLimit: gasLimit.toString(),\n gasPrice: gasPrice.toString(),\n },\n };\n};\n\nexport const genEthereumLikeExecuteContractData =\n (): TransactionDataOf<\"ETHEREUM_LIKE_EXECUTE_CONTRACT\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\"]),\n type: \"ETHEREUM_LIKE_EXECUTE_CONTRACT\" as const,\n contractData: faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 128 }),\n };\n };\n\nexport const genEthereumLikeDeployContractData =\n (): TransactionDataOf<\"ETHEREUM_LIKE_DEPLOY_CONTRACT\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\"]),\n type: \"ETHEREUM_LIKE_DEPLOY_CONTRACT\" as const,\n recipient: \"\",\n contractData: faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 128 }),\n };\n };\n\nconst genEthHex = (bytes: number) =>\n faker.string.hexadecimal({ prefix: \"0x\", casing: \"lower\", length: bytes * 2 });\n\nexport const genEthereumLikeStakeData = (): TransactionDataOf<\"ETHEREUM_LIKE_STAKE_DEPOSIT\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\", \"recipient\", \"amount\"]),\n type: \"ETHEREUM_LIKE_STAKE_DEPOSIT\" as const,\n amountPerValidator: faker.number.bigInt({ min: 1 }).toString(),\n numberOfValidators: faker.number.bigInt({ min: 1, max: 100 }).toString(),\n stakingProvider: \"KILN\" as const,\n withdrawalAddress: genEthHex(20),\n };\n};\n\nexport const genEthereumLikeStakeTopUpData =\n (): TransactionDataOf<\"ETHEREUM_LIKE_STAKE_TOP_UP\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\", \"recipient\", \"amount\"]),\n type: \"ETHEREUM_LIKE_STAKE_TOP_UP\" as const,\n validators: [\n {\n validatorPubKey: genEthHex(48),\n amount: faker.number.bigInt({ min: 1 }).toString(),\n },\n ],\n };\n };\n\nexport const genEthereumLikeWithdrawData =\n (): TransactionDataOf<\"ETHEREUM_LIKE_STAKE_WITHDRAW\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\", \"recipient\"]),\n type: \"ETHEREUM_LIKE_STAKE_WITHDRAW\" as const,\n validatorPubKey: genEthHex(48),\n maxExecutionFees: faker.number.bigInt({ min: 0 }).toString(),\n };\n };\n\nexport const genEthereumLikeConsolidateData =\n (): TransactionDataOf<\"ETHEREUM_LIKE_STAKE_CONSOLIDATE\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\", \"recipient\"]),\n type: \"ETHEREUM_LIKE_STAKE_CONSOLIDATE\" as const,\n sourcePubKey: genEthHex(48),\n targetPubKey: genEthHex(48),\n maxExecutionFees: faker.number.bigInt({ min: 0 }).toString(),\n };\n };\n\nexport const genEthereumLikeUpgradeData = (): TransactionDataOf<\"ETHEREUM_LIKE_STAKE_UPGRADE\"> => {\n const sendData = genEthereumLikeSendData();\n return {\n ...omit(sendData, [\"type\", \"recipient\"]),\n type: \"ETHEREUM_LIKE_STAKE_UPGRADE\" as const,\n validatorPubKey: genEthHex(48),\n maxExecutionFees: faker.number.bigInt({ min: 0 }).toString(),\n };\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\nexport const genGenericTransactionData = (): TransactionDataOf<\"GENERIC_TRANSACTION\"> => ({\n type: \"GENERIC_TRANSACTION\" as const,\n currency: \"tron\",\n rawTx: faker.string.alphanumeric({ length: 100 }),\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype HederaSendTxType = \"HEDERA_LIKE_SEND\" | \"HEDERA_LIKE_SEND_TOKEN\";\n\nexport const genHederaLikeSendData = (\n txType: HederaSendTxType,\n): TransactionDataOf<HederaSendTxType> => ({\n type: txType,\n currency: \"hedera\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: `0.0.${faker.number.int({ min: 10000000, max: 99999999 }).toString()}`,\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n});\n\nexport const genHederaLikeStakeData = (): TransactionDataOf<\"HEDERA_LIKE_STAKE\"> => ({\n type: \"HEDERA_LIKE_STAKE\" as const,\n currency: \"hedera\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n nodeId: faker.number.int({ min: 10, max: 99999999 }).toString(),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype PolkadotTxType =\n | \"POLKADOT_LIKE_SEND\"\n | \"POLKADOT_LIKE_ADDPROXY\"\n | \"POLKADOT_LIKE_REMOVEPROXY\"\n | \"POLKADOT_LIKE_BOND\"\n | \"POLKADOT_LIKE_REBOND\"\n | \"POLKADOT_LIKE_BONDEXTRA\"\n | \"POLKADOT_LIKE_UNBOND\"\n | \"POLKADOT_LIKE_WITHDRAWUNBONDED\"\n | \"POLKADOT_LIKE_SETPAYEE\"\n | \"POLKADOT_LIKE_ANONYMOUSPROXY\"\n | \"POLKADOT_LIKE_KILLANONYMOUS\"\n | \"POLKADOT_LIKE_CHILL\";\n\nexport const genPolkadotLikeTxData = (\n txType: PolkadotTxType,\n): TransactionDataOf<PolkadotTxType> => {\n switch (txType) {\n case \"POLKADOT_LIKE_SEND\":\n return {\n type: txType,\n currency: \"polkadot\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n };\n case \"POLKADOT_LIKE_ADDPROXY\":\n case \"POLKADOT_LIKE_REMOVEPROXY\":\n return {\n type: txType,\n currency: \"polkadot\",\n kind: \"Staking\" as const,\n proxy: faker.string.alphanumeric({ length: 30 }),\n };\n case \"POLKADOT_LIKE_BOND\":\n return {\n type: txType,\n currency: \"polkadot\",\n payee: faker.helpers.arrayElement([\"Staked\", \"Stash\"] as const),\n amount: faker.number.bigInt({ min: 0 }).toString(),\n };\n case \"POLKADOT_LIKE_REBOND\":\n case \"POLKADOT_LIKE_UNBOND\":\n return {\n type: txType,\n currency: \"polkadot\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n };\n case \"POLKADOT_LIKE_BONDEXTRA\":\n return {\n type: txType,\n currency: \"polkadot\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n };\n case \"POLKADOT_LIKE_WITHDRAWUNBONDED\":\n case \"POLKADOT_LIKE_CHILL\":\n return { type: txType, currency: \"polkadot\" };\n case \"POLKADOT_LIKE_SETPAYEE\":\n return {\n type: txType,\n currency: \"polkadot\",\n payee: faker.helpers.arrayElement([\"Staked\", \"Stash\"] as const),\n };\n case \"POLKADOT_LIKE_ANONYMOUSPROXY\":\n case \"POLKADOT_LIKE_KILLANONYMOUS\":\n return { type: txType, currency: \"polkadot\" };\n default: {\n const _exhaustive: never = txType;\n throw new Error(`Unknown polkadot transaction type: ${_exhaustive}`);\n }\n }\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\nexport const genRippleLikeSendData = (): TransactionDataOf<\"RIPPLE_LIKE_SEND\"> => ({\n type: \"RIPPLE_LIKE_SEND\" as const,\n currency: \"ripple\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n destinationTag: faker.helpers.arrayElement([faker.number.int().toString(), null]),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype SolanaTxType =\n | \"SOLANA_LIKE_SEND\"\n | \"SOLANA_LIKE_CREATE_DELEGATE_STAKE\"\n | \"SOLANA_LIKE_DELEGATE_STAKE\"\n | \"SOLANA_LIKE_WITHDRAW_STAKE\"\n | \"SOLANA_LIKE_DEACTIVATE_STAKE\"\n | \"SOLANA_LIKE_SPLIT_STAKE\"\n | \"SOLANA_LIKE_SPLIT_DEACTIVATE_STAKE\"\n | \"SOLANA_LIKE_MERGE_STAKE\"\n | \"SOLANA_LIKE_SEND_TOKEN\"\n | \"SOLANA_LIKE_FUND_AND_SEND_TOKEN\"\n | \"SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT\";\n\nexport const genSolanaLikeTxData = (txType: SolanaTxType): TransactionDataOf<SolanaTxType> => {\n switch (txType) {\n case \"SOLANA_LIKE_SEND\":\n case \"SOLANA_LIKE_CREATE_DELEGATE_STAKE\":\n case \"SOLANA_LIKE_SEND_TOKEN\":\n case \"SOLANA_LIKE_FUND_AND_SEND_TOKEN\":\n return {\n type: txType,\n currency: \"solana\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"SOLANA_LIKE_DELEGATE_STAKE\":\n return {\n type: txType,\n currency: \"solana\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n stakeAccount: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"SOLANA_LIKE_DEACTIVATE_STAKE\":\n return {\n type: txType,\n currency: \"solana\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n stakeAccount: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"SOLANA_LIKE_SPLIT_DEACTIVATE_STAKE\":\n case \"SOLANA_LIKE_SPLIT_STAKE\":\n case \"SOLANA_LIKE_WITHDRAW_STAKE\":\n return {\n type: txType,\n currency: \"solana\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n stakeAccount: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"SOLANA_LIKE_MERGE_STAKE\":\n return {\n type: txType,\n currency: \"solana\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n mergeSrcAccount: faker.string.alphanumeric({ length: 30 }),\n mergeDstAccount: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n case \"SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT\":\n return {\n type: txType,\n currency: \"solana\",\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n default: {\n const _exhaustive: never = txType;\n throw new Error(`Unknown solana transaction type: ${_exhaustive}`);\n }\n }\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\nexport const genStellarLikeSendData = (): TransactionDataOf<\"STELLAR_LIKE_SEND\"> => ({\n type: \"STELLAR_LIKE_SEND\" as const,\n currency: \"stellar\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n memo: faker.helpers.arrayElement([\n { type: \"MEMO_ID\" as const, value: faker.number.bigInt({ min: 0 }).toString() },\n { type: \"MEMO_TEXT\" as const, value: faker.string.alphanumeric({ length: 28 }) },\n {\n type: \"MEMO_HASH\" as const,\n value: faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 64 }),\n },\n {\n type: \"MEMO_RETURN\" as const,\n value: faker.string.hexadecimal({ prefix: \"\", casing: \"lower\", length: 64 }),\n },\n null,\n ]),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype SuiTxType = \"SUI_LIKE_SEND\" | \"SUI_LIKE_SEND_TOKEN\" | \"SUI_LIKE_STAKE\" | \"SUI_LIKE_UNSTAKE\";\n\nexport const genSuiLikeTxData = (txType: SuiTxType): TransactionDataOf<SuiTxType> => {\n const base = {\n currency: \"sui\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n };\n\n switch (txType) {\n case \"SUI_LIKE_STAKE\":\n return {\n ...base,\n type: txType,\n validator: faker.string.alphanumeric({ length: 30 }),\n };\n case \"SUI_LIKE_UNSTAKE\":\n return {\n ...base,\n type: txType,\n stakedSuiId: faker.string.alphanumeric({ length: 30 }),\n useAllAmount: faker.datatype.boolean(),\n };\n case \"SUI_LIKE_SEND\":\n case \"SUI_LIKE_SEND_TOKEN\":\n return {\n ...base,\n type: txType,\n recipient: faker.string.alphanumeric({ length: 30 }),\n };\n default: {\n const _exhaustive: never = txType;\n throw new Error(`Unknown sui transaction type: ${_exhaustive}`);\n }\n }\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype TezosTxType = \"TEZOS_LIKE_SEND\" | \"TEZOS_LIKE_DELEGATE\" | \"TEZOS_LIKE_UNDELEGATE\";\n\nexport const genTezosLikeTxData = (txType: TezosTxType): TransactionDataOf<TezosTxType> => ({\n type: txType,\n currency: \"tezos\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\", \"CUSTOM\"] as const),\n },\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { TransactionDataOf } from \"@/app-lib\";\n\ntype TronTxType = \"TRON_LIKE_SEND\" | \"TRON_LIKE_SEND_TOKEN\";\n\nexport const genTronLikeTxData = (txType: TronTxType): TransactionDataOf<TronTxType> => ({\n type: txType,\n currency: \"tron\",\n amount: faker.number.bigInt({ min: 0 }).toString(),\n maxFee: faker.number.bigInt({ min: 1 }).toString(),\n recipient: faker.string.alphanumeric({ length: 30 }),\n feeStrategy: {\n type: faker.helpers.arrayElement([\"SLOW\", \"NORMAL\", \"FAST\"] as const),\n },\n});\n","import type { RequestDataOf, TransactionDataOf } from \"@/app-lib\";\n\nimport { unreachable } from \"../utils\";\nimport { genBitcoinLikeSendData } from \"./bitcoin\";\nimport { genCantonLikeTxData } from \"./canton\";\nimport { genCardanoLikeTxData } from \"./cardano\";\nimport {\n genEthereumLikeConsolidateData,\n genEthereumLikeDeployContractData,\n genEthereumLikeExecuteContractData,\n genEthereumLikeSendData,\n genEthereumLikeStakeData,\n genEthereumLikeStakeTopUpData,\n genEthereumLikeUpgradeData,\n genEthereumLikeWithdrawData,\n} from \"./ethereum\";\nimport { genGenericTransactionData } from \"./generic\";\nimport { genHederaLikeSendData, genHederaLikeStakeData } from \"./hedera\";\nimport { genPolkadotLikeTxData } from \"./polkadot\";\nimport { genRippleLikeSendData } from \"./ripple\";\nimport { genSolanaLikeTxData } from \"./solana\";\nimport { genStellarLikeSendData } from \"./stellar\";\nimport { genSuiLikeTxData } from \"./sui\";\nimport { genTezosLikeTxData } from \"./tezos\";\nimport { genTronLikeTxData } from \"./tron\";\n\n/** Outgoing transaction type, which is a subset of `TransactionType`. */\nexport type OutgoingTxType = RequestDataOf<\"CREATE_TRANSACTION\">[\"transaction\"][\"type\"];\n\nexport const genOutgoingTxData = <T extends OutgoingTxType>(\n opts: Partial<TransactionDataOf<T>> & { type: T },\n): TransactionDataOf<T> => {\n let txDataDefaults: TransactionDataOf<OutgoingTxType>;\n switch (opts.type) {\n case \"BITCOIN_LIKE_SEND\":\n txDataDefaults = genBitcoinLikeSendData();\n break;\n case \"CANTON_LIKE_SEND\":\n case \"CANTON_LIKE_SEND_TOKEN\":\n case \"CANTON_LIKE_WITHDRAW\":\n case \"CANTON_LIKE_RECEIVE\":\n case \"CANTON_LIKE_PRE_APPROVAL\":\n txDataDefaults = genCantonLikeTxData(opts.type);\n break;\n case \"CARDANO_LIKE_SEND\":\n case \"CARDANO_LIKE_STAKING_REGISTER\":\n case \"CARDANO_LIKE_STAKING_DEREGISTER\":\n case \"CARDANO_LIKE_STAKING_DELEGATE\":\n case \"CARDANO_LIKE_STAKING_WITHDRAW\":\n txDataDefaults = genCardanoLikeTxData(opts.type);\n break;\n case \"ETHEREUM_LIKE_SEND\":\n txDataDefaults = genEthereumLikeSendData();\n break;\n case \"ETHEREUM_LIKE_EXECUTE_CONTRACT\":\n txDataDefaults = genEthereumLikeExecuteContractData();\n break;\n case \"ETHEREUM_LIKE_DEPLOY_CONTRACT\":\n txDataDefaults = genEthereumLikeDeployContractData();\n break;\n case \"ETHEREUM_LIKE_STAKE_DEPOSIT\":\n txDataDefaults = genEthereumLikeStakeData();\n break;\n case \"ETHEREUM_LIKE_STAKE_TOP_UP\":\n txDataDefaults = genEthereumLikeStakeTopUpData();\n break;\n case \"ETHEREUM_LIKE_STAKE_WITHDRAW\":\n txDataDefaults = genEthereumLikeWithdrawData();\n break;\n case \"ETHEREUM_LIKE_STAKE_CONSOLIDATE\":\n txDataDefaults = genEthereumLikeConsolidateData();\n break;\n case \"ETHEREUM_LIKE_STAKE_UPGRADE\":\n txDataDefaults = genEthereumLikeUpgradeData();\n break;\n case \"GENERIC_TRANSACTION\":\n txDataDefaults = genGenericTransactionData();\n break;\n case \"HEDERA_LIKE_SEND\":\n case \"HEDERA_LIKE_SEND_TOKEN\":\n txDataDefaults = genHederaLikeSendData(opts.type);\n break;\n case \"HEDERA_LIKE_STAKE\":\n txDataDefaults = genHederaLikeStakeData();\n break;\n case \"POLKADOT_LIKE_SEND\":\n case \"POLKADOT_LIKE_ADDPROXY\":\n case \"POLKADOT_LIKE_REMOVEPROXY\":\n case \"POLKADOT_LIKE_BOND\":\n case \"POLKADOT_LIKE_REBOND\":\n case \"POLKADOT_LIKE_BONDEXTRA\":\n case \"POLKADOT_LIKE_UNBOND\":\n case \"POLKADOT_LIKE_WITHDRAWUNBONDED\":\n case \"POLKADOT_LIKE_SETPAYEE\":\n case \"POLKADOT_LIKE_ANONYMOUSPROXY\":\n case \"POLKADOT_LIKE_KILLANONYMOUS\":\n case \"POLKADOT_LIKE_CHILL\":\n txDataDefaults = genPolkadotLikeTxData(opts.type);\n break;\n case \"RIPPLE_LIKE_SEND\":\n txDataDefaults = genRippleLikeSendData();\n break;\n case \"SOLANA_LIKE_SEND\":\n case \"SOLANA_LIKE_CREATE_DELEGATE_STAKE\":\n case \"SOLANA_LIKE_DELEGATE_STAKE\":\n case \"SOLANA_LIKE_WITHDRAW_STAKE\":\n case \"SOLANA_LIKE_DEACTIVATE_STAKE\":\n case \"SOLANA_LIKE_SPLIT_STAKE\":\n case \"SOLANA_LIKE_SPLIT_DEACTIVATE_STAKE\":\n case \"SOLANA_LIKE_MERGE_STAKE\":\n case \"SOLANA_LIKE_SEND_TOKEN\":\n case \"SOLANA_LIKE_FUND_AND_SEND_TOKEN\":\n case \"SOLANA_LIKE_CREATE_SPL_TOKEN_ACCOUNT\":\n txDataDefaults = genSolanaLikeTxData(opts.type);\n break;\n case \"STELLAR_LIKE_SEND\":\n txDataDefaults = genStellarLikeSendData();\n break;\n case \"TEZOS_LIKE_SEND\":\n case \"TEZOS_LIKE_DELEGATE\":\n case \"TEZOS_LIKE_UNDELEGATE\":\n txDataDefaults = genTezosLikeTxData(opts.type);\n break;\n case \"SUI_LIKE_SEND\":\n case \"SUI_LIKE_SEND_TOKEN\":\n case \"SUI_LIKE_STAKE\":\n case \"SUI_LIKE_UNSTAKE\":\n txDataDefaults = genSuiLikeTxData(opts.type);\n break;\n case \"TRON_LIKE_SEND\":\n case \"TRON_LIKE_SEND_TOKEN\":\n txDataDefaults = genTronLikeTxData(opts.type);\n break;\n default:\n txDataDefaults = unreachable(opts.type);\n break;\n }\n return { ...txDataDefaults, ...opts } as TransactionDataOf<T>;\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { AccountType, TransactionDataOf } from \"@/app-lib\";\n\nimport { genOutgoingTxData, type OutgoingTxType } from \"../transactions\";\n\nexport const ACCOUNT_TYPE_DEFAULT_CURRENCY: Record<AccountType, string> = {\n BITCOIN_LIKE: \"bitcoin\",\n CANTON_LIKE: \"canton_network\",\n CARDANO_LIKE: \"cardano\",\n ETHEREUM_LIKE: \"ethereum\",\n GENERIC_LIKE: \"tron\",\n HEDERA_LIKE: \"hedera\",\n POLKADOT_LIKE: \"polkadot\",\n RAW_SIGNING: \"bitcoin\",\n RIPPLE_LIKE: \"ripple\",\n SOLANA_LIKE: \"solana\",\n STELLAR_LIKE: \"stellar\",\n SUI_LIKE: \"sui\",\n TEZOS_LIKE: \"tezos\",\n TRON_LIKE: \"tron\",\n};\n\ntype OutgoingTxOptions<T extends OutgoingTxType> = Partial<TransactionDataOf<T>> & { type: T };\n\nexport const genCreateTransactionData = <T extends OutgoingTxType>(opts?: {\n accountId?: string;\n transaction?: OutgoingTxOptions<T>;\n}): { accountId: string; transaction: TransactionDataOf<T> } => {\n const accountId = opts?.accountId ?? faker.string.uuid();\n const txOpts = opts?.transaction ?? ({ type: \"ETHEREUM_LIKE_SEND\" } as OutgoingTxOptions<T>);\n return {\n accountId,\n transaction: genOutgoingTxData(txOpts),\n };\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nimport { genPubKey } from \"../utils\";\n\nexport const genCreatePsdUserData = (\n opts?: Partial<RequestDataOf<\"CREATE_PSD_USER\">>,\n): RequestDataOf<\"CREATE_PSD_USER\"> => ({\n registrationId: faker.string.uuid(),\n ...opts,\n});\n\nexport const genCreateApiUserData = (\n opts?: Partial<RequestDataOf<\"CREATE_API_USER\">>,\n): RequestDataOf<\"CREATE_API_USER\"> => ({\n name: faker.person.firstName(),\n pubKey: genPubKey(),\n role: \"OPERATOR\",\n viewAll: false,\n ...opts,\n});\n\nexport const genCreateApiUserAccessData = (\n opts?: Partial<RequestDataOf<\"CREATE_API_USER_ACCESS\">>,\n): RequestDataOf<\"CREATE_API_USER_ACCESS\"> => ({\n name: faker.person.firstName(),\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { RequestDataOf } from \"@/app-lib\";\n\nexport const genCreateWhitelistData = (\n opts?: Partial<RequestDataOf<\"CREATE_WHITELIST\">>,\n): RequestDataOf<\"CREATE_WHITELIST\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n type: faker.helpers.arrayElement([\"TRANSACTION\", \"SMART_CONTRACT\"] as const),\n addresses: [\n {\n name: faker.lorem.words(3),\n currency: \"bitcoin\",\n address: faker.finance.bitcoinAddress(),\n },\n {\n name: faker.lorem.words(3),\n currency: \"ethereum\",\n address: faker.finance.ethereumAddress(),\n },\n ],\n ...opts,\n});\n\nexport const genEditWhitelistData = (\n opts?: Partial<RequestDataOf<\"EDIT_WHITELIST\">>,\n): RequestDataOf<\"EDIT_WHITELIST\"> => ({\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n addresses: [\n {\n name: faker.lorem.words(3),\n currency: \"bitcoin\",\n address: faker.finance.bitcoinAddress(),\n },\n {\n name: faker.lorem.words(3),\n currency: \"ethereum\",\n address: faker.finance.ethereumAddress(),\n },\n ],\n ...opts,\n});\n","import type { RequestDataOf } from \"@/app-lib\";\n\nexport const genWorkspaceRuleData = (\n opts?: Partial<RequestDataOf<\"EDIT_WORKSPACE_RULE\">>,\n): RequestDataOf<\"EDIT_WORKSPACE_RULE\"> => ({\n permission: \"CREATE_ACCOUNT_WITH_POLICY\",\n reviewConfig: [{ userIds: [], quorum: 2 }],\n ...opts,\n});\n","import type { RequestDataOf } from \"@/app-lib\";\n\nimport { unreachable } from \"../utils\";\nimport { genCreateAccountData, genEditAccountData, genEditTokenRuleData } from \"./account\";\nimport { genCreateApiKeyData, genEditApiKeyData } from \"./api-key\";\nimport { genCreateEntityData, genEditEntityData } from \"./entity\";\nimport { genCreateGroupData, genEditGroupData } from \"./group\";\nimport { genSignDigestsData, genSignMessageData } from \"./message-signature\";\nimport { genCreatePolicyData, genEditPolicyData } from \"./policy\";\nimport { genCreateSciConfigData, genEditSciConfigData } from \"./sciconfig\";\nimport {\n genTradelinkAdjustPledgeData,\n genTradelinkArbitrationData,\n genTradelinkCreateSettlementData,\n genTradelinkForceUnpledgeData,\n genTradelinkRepledgeData,\n genTradelinkWithdrawData,\n} from \"./tradelink\";\nimport { genCreateTransactionData } from \"./transaction\";\nimport { genCreateApiUserAccessData, genCreateApiUserData, genCreatePsdUserData } from \"./user\";\nimport { genCreateWhitelistData, genEditWhitelistData } from \"./whitelist\";\nimport { genWorkspaceRuleData } from \"./workspace-rule\";\n\nexport { ACCOUNT_TYPE_DEFAULT_CURRENCY } from \"./transaction\";\n// Re-export all per-domain generators\nexport {\n genCreateAccountData,\n genCreateApiKeyData,\n genCreateApiUserAccessData,\n genCreateApiUserData,\n genCreateEntityData,\n genCreateGroupData,\n genCreatePolicyData,\n genCreatePsdUserData,\n genCreateSciConfigData,\n genCreateTransactionData,\n genCreateWhitelistData,\n genEditAccountData,\n genEditApiKeyData,\n genEditEntityData,\n genEditGroupData,\n genEditPolicyData,\n genEditSciConfigData,\n genEditTokenRuleData,\n genEditWhitelistData,\n genSignDigestsData,\n genSignMessageData,\n genTradelinkAdjustPledgeData,\n genTradelinkArbitrationData,\n genTradelinkCreateSettlementData,\n genTradelinkForceUnpledgeData,\n genTradelinkRepledgeData,\n genTradelinkWithdrawData,\n genWorkspaceRuleData,\n};\n\nexport type RequestDataTypes = {\n // Workspace...\n UPDATE_QUORUM: RequestDataOf<\"UPDATE_QUORUM\">;\n EDIT_EXTERNAL_SIGNER_PUBKEYS: RequestDataOf<\"EDIT_EXTERNAL_SIGNER_PUBKEYS\">;\n // User...\n CREATE_PSD_USER: RequestDataOf<\"CREATE_PSD_USER\">;\n CREATE_API_USER: RequestDataOf<\"CREATE_API_USER\">;\n CREATE_API_USER_ACCESS: RequestDataOf<\"CREATE_API_USER_ACCESS\">;\n REVOKE_USER: Record<string, never>;\n // Admin gov rule...\n EDIT_WORKSPACE_RULE: RequestDataOf<\"EDIT_WORKSPACE_RULE\">;\n // Group...\n CREATE_GROUP: RequestDataOf<\"CREATE_GROUP\">;\n EDIT_GROUP: RequestDataOf<\"EDIT_GROUP\">;\n REVOKE_GROUP: Record<string, never>;\n // API key...\n CREATE_API_KEY: RequestDataOf<\"CREATE_API_KEY\">;\n EDIT_API_KEY: RequestDataOf<\"EDIT_API_KEY\">;\n REVOKE_API_KEY: Record<string, never>;\n // Whitelist...\n CREATE_WHITELIST: RequestDataOf<\"CREATE_WHITELIST\">;\n EDIT_WHITELIST: RequestDataOf<\"EDIT_WHITELIST\">;\n // Entity...\n CREATE_ENTITY: RequestDataOf<\"CREATE_ENTITY\">;\n EDIT_ENTITY: RequestDataOf<\"EDIT_ENTITY\">;\n REVOKE_ENTITY: Record<string, never>;\n // Account...\n CREATE_ACCOUNT: RequestDataOf<\"CREATE_ACCOUNT\">;\n EDIT_ACCOUNT: RequestDataOf<\"EDIT_ACCOUNT\">;\n EDIT_TOKEN_RULE: RequestDataOf<\"EDIT_TOKEN_RULE\">;\n // Operator requests...\n CREATE_TRANSACTION: RequestDataOf<\"CREATE_TRANSACTION\">;\n SIGN_MESSAGE: RequestDataOf<\"SIGN_MESSAGE\">;\n SIGN_DIGESTS: RequestDataOf<\"SIGN_DIGESTS\">;\n // SCI config ...\n CREATE_SCICONFIG: RequestDataOf<\"CREATE_SCICONFIG\">;\n EDIT_SCICONFIG: RequestDataOf<\"EDIT_SCICONFIG\">;\n // Policy\n CREATE_POLICY: RequestDataOf<\"CREATE_POLICY\">;\n EDIT_POLICY: RequestDataOf<\"EDIT_POLICY\">;\n // Tradelink...\n TRADELINK_ADJUST_PLEDGE: RequestDataOf<\"TRADELINK_ADJUST_PLEDGE\">;\n TRADELINK_REPLEDGE: RequestDataOf<\"TRADELINK_REPLEDGE\">;\n TRADELINK_CREATE_SETTLEMENT: RequestDataOf<\"TRADELINK_CREATE_SETTLEMENT\">;\n TRADELINK_FORCE_UNPLEDGE: RequestDataOf<\"TRADELINK_FORCE_UNPLEDGE\">;\n TRADELINK_WITHDRAW: RequestDataOf<\"TRADELINK_WITHDRAW\">;\n TRADELINK_ARBITRATE: RequestDataOf<\"TRADELINK_ARBITRATE\">;\n};\n\nexport const genRequestData = <T extends keyof RequestDataTypes>(\n type: T,\n opts?: Partial<RequestDataTypes[T]>,\n): RequestDataTypes[T] => {\n type R = RequestDataTypes[T];\n\n switch (type) {\n // Workspace...\n case \"UPDATE_QUORUM\":\n return { quorum: 3, ...opts } as R;\n case \"EDIT_EXTERNAL_SIGNER_PUBKEYS\":\n return {\n previousPublicKeys: [`04${\"1\".repeat(128)}`],\n requestedPublicKeys: [`04${\"2\".repeat(128)}`],\n ...opts,\n } as R;\n\n // User...\n case \"CREATE_PSD_USER\":\n return genCreatePsdUserData(opts) as R;\n case \"CREATE_API_USER\":\n return genCreateApiUserData(opts) as R;\n case \"CREATE_API_USER_ACCESS\":\n return genCreateApiUserAccessData(opts) as R;\n case \"REVOKE_USER\":\n return {} as R;\n\n // Admin gov rule...\n case \"EDIT_WORKSPACE_RULE\":\n return genWorkspaceRuleData(opts) as R;\n\n // Group...\n case \"CREATE_GROUP\":\n return genCreateGroupData(opts) as R;\n case \"EDIT_GROUP\":\n return genEditGroupData(opts) as R;\n case \"REVOKE_GROUP\":\n return {} as R;\n\n // ApiKey...\n case \"CREATE_API_KEY\":\n return genCreateApiKeyData(opts) as R;\n case \"EDIT_API_KEY\":\n return genEditApiKeyData(opts) as R;\n case \"REVOKE_API_KEY\":\n return {} as R;\n\n // Whitelist...\n case \"CREATE_WHITELIST\":\n return genCreateWhitelistData(opts) as R;\n case \"EDIT_WHITELIST\":\n return genEditWhitelistData(opts) as R;\n\n // Entity...\n case \"CREATE_ENTITY\":\n return genCreateEntityData(opts) as R;\n case \"EDIT_ENTITY\":\n return genEditEntityData(opts) as R;\n case \"REVOKE_ENTITY\":\n return {} as R;\n\n // Account...\n case \"CREATE_ACCOUNT\":\n return genCreateAccountData(opts) as R;\n case \"EDIT_ACCOUNT\":\n return genEditAccountData(opts) as R;\n case \"EDIT_TOKEN_RULE\":\n return genEditTokenRuleData(opts) as R;\n\n // Operator requests...\n case \"CREATE_TRANSACTION\":\n return genCreateTransactionData(opts) as R;\n case \"SIGN_MESSAGE\":\n return genSignMessageData(opts) as R;\n case \"SIGN_DIGESTS\":\n return genSignDigestsData(opts) as R;\n\n // SCI config...\n case \"CREATE_SCICONFIG\":\n return genCreateSciConfigData(opts) as R;\n case \"EDIT_SCICONFIG\":\n return genEditSciConfigData(opts) as R;\n\n // Policy\n case \"CREATE_POLICY\":\n return genCreatePolicyData(opts) as R;\n case \"EDIT_POLICY\":\n return genEditPolicyData(opts) as R;\n\n // Tradelink...\n case \"TRADELINK_ADJUST_PLEDGE\":\n return genTradelinkAdjustPledgeData(opts) as R;\n case \"TRADELINK_CREATE_SETTLEMENT\":\n return genTradelinkCreateSettlementData(opts) as R;\n case \"TRADELINK_FORCE_UNPLEDGE\":\n return genTradelinkForceUnpledgeData(opts) as R;\n case \"TRADELINK_WITHDRAW\":\n return genTradelinkWithdrawData(opts) as R;\n case \"TRADELINK_REPLEDGE\":\n return genTradelinkRepledgeData(opts) as R;\n case \"TRADELINK_ARBITRATE\":\n return genTradelinkArbitrationData(opts) as R;\n\n default:\n return unreachable(type);\n }\n};\n","import { faker } from \"@faker-js/faker\";\n\nimport type {\n AccountResponse,\n AccountType,\n GroupResponse,\n UserResponse,\n VaultRequestResponse,\n WebhookResponse,\n WhitelistResponse,\n} from \"@/app-lib\";\n\nimport {\n ACCOUNT_TYPE_DEFAULT_CURRENCY,\n genRequestData,\n type RequestDataTypes,\n} from \"./request-data\";\nimport { genHexString, genPubKey, genUniqueName } from \"./utils\";\n\n// All AccountType values as a typed array (string literals, no Prisma import).\nconst ACCOUNT_TYPES: AccountType[] = [\n \"BITCOIN_LIKE\",\n \"CANTON_LIKE\",\n \"CARDANO_LIKE\",\n \"ETHEREUM_LIKE\",\n \"GENERIC_LIKE\",\n \"HEDERA_LIKE\",\n \"POLKADOT_LIKE\",\n \"RAW_SIGNING\",\n \"RIPPLE_LIKE\",\n \"SOLANA_LIKE\",\n \"STELLAR_LIKE\",\n \"SUI_LIKE\",\n \"TEZOS_LIKE\",\n \"TRON_LIKE\",\n];\n\nconst genAssetFields = (type: AccountType): AccountResponse[\"asset\"] => {\n switch (type) {\n case \"RAW_SIGNING\":\n case \"GENERIC_LIKE\":\n return { type };\n case \"BITCOIN_LIKE\":\n return { type, xpub: genHexString(120, \"lower\"), addressDerivationMode: \"NEW\" };\n case \"CANTON_LIKE\":\n case \"CARDANO_LIKE\":\n case \"POLKADOT_LIKE\":\n case \"RIPPLE_LIKE\":\n case \"STELLAR_LIKE\":\n case \"SUI_LIKE\":\n case \"TEZOS_LIKE\":\n return { type, address: faker.string.alphanumeric({ length: 34 }) };\n case \"ETHEREUM_LIKE\":\n case \"SOLANA_LIKE\":\n case \"TRON_LIKE\":\n return { type, address: faker.string.alphanumeric({ length: 42 }) };\n case \"HEDERA_LIKE\":\n return {\n type,\n address: `0.0.${faker.number.int({ min: 10000000, max: 99999999 })}`,\n isActivated: faker.datatype.boolean(),\n };\n }\n};\n\nexport const genAccountResponse = (\n opts?: Partial<{\n type: AccountType;\n governanceType: \"CLASSIC\" | \"RAW_SIGNING\" | \"TRADELINK\";\n }>,\n): AccountResponse => {\n const type = opts?.type ?? faker.helpers.arrayElement(ACCOUNT_TYPES);\n const governanceType = opts?.governanceType ?? \"CLASSIC\";\n const currency = ACCOUNT_TYPE_DEFAULT_CURRENCY[type];\n const id = faker.string.uuid();\n\n const governance =\n governanceType === \"TRADELINK\"\n ? {\n type: governanceType,\n assetManagerId: faker.string.uuid(),\n exchangeConfigs: [],\n }\n : {\n type: governanceType,\n policyId: faker.string.uuid(),\n };\n\n return {\n id,\n legacyId: faker.number.int({ min: 1, max: 2000000000 }),\n name: genUniqueName(),\n currency,\n network: currency,\n contractAddress: null,\n tokenIdentifier: null,\n index: faker.number.int({ min: 0, max: 10 }),\n derivationPath: \"m/44'/0'/0'\",\n status: \"ACTIVE\" as const,\n createdAt: faker.date.past(),\n updatedAt: faker.date.past(),\n asset: genAssetFields(type),\n governance,\n };\n};\n\nexport const genUserResponse = (opts?: Partial<UserResponse>): UserResponse => {\n const role = opts?.role ?? faker.helpers.arrayElement([\"ADMIN\", \"OPERATOR\"]);\n const deviceType = opts?.deviceType ?? (role === \"READ_ONLY_API_KEY\" ? \"API\" : \"PSD\");\n return {\n id: faker.string.uuid(),\n legacyId: faker.number.int({ min: 1, max: 2000000000 }),\n legacyViewAll: false,\n workspaceName: faker.string.alphanumeric({ length: 16, casing: \"lower\" }),\n name: faker.person.fullName(),\n deviceUserId: deviceType === \"API\" ? null : genHexString(16, \"lower\"),\n deviceType,\n role,\n pubKey: genPubKey(),\n status: \"ACTIVE\" as const,\n isSuspended: false,\n createdAt: faker.date.past(),\n updatedAt: faker.date.past(),\n ...opts,\n };\n};\n\nexport const genGroupResponse = (opts?: Partial<GroupResponse>): GroupResponse => ({\n id: faker.string.uuid(),\n legacyId: faker.number.int({ min: 1, max: 2000000000 }),\n name: faker.word.noun({ length: { min: 5, max: 19 } }),\n description: faker.lorem.sentence(),\n status: \"ACTIVE\" as const,\n members: [],\n createdAt: faker.date.past(),\n updatedAt: faker.date.past(),\n ...opts,\n});\n\nexport const genWhitelistResponse = (opts?: Partial<WhitelistResponse>): WhitelistResponse => ({\n id: faker.string.uuid(),\n legacyId: faker.number.int({ min: 1, max: 2000000000 }),\n name: faker.lorem.words(3),\n type: \"TRANSACTION\",\n status: \"ACTIVE\" as const,\n addresses: [\n {\n name: faker.lorem.words(3),\n currency: \"bitcoin\",\n address: faker.finance.bitcoinAddress(),\n },\n {\n name: faker.lorem.words(3),\n currency: \"ethereum\",\n address: faker.finance.ethereumAddress(),\n },\n ],\n createdAt: faker.date.past(),\n updatedAt: faker.date.past(),\n description: faker.lorem.sentence(),\n ...opts,\n});\n\n/** Request types that have a `targetId` field */\nconst TYPES_WITH_TARGET_ID: (keyof RequestDataTypes)[] = [\n \"EDIT_ACCOUNT\",\n \"EDIT_TOKEN_RULE\",\n \"EDIT_GROUP\",\n \"REVOKE_GROUP\",\n \"EDIT_WHITELIST\",\n \"EDIT_ENTITY\",\n \"REVOKE_ENTITY\",\n \"REVOKE_USER\",\n \"EDIT_POLICY\",\n \"REVOKE_API_KEY\",\n];\n\nexport const genVaultRequestResponse = <T extends keyof RequestDataTypes>(opts: {\n type: T;\n data?: Partial<RequestDataTypes[T]>;\n}): VaultRequestResponse => {\n const { type, data: dataOpts } = opts;\n const data = genRequestData(type, dataOpts);\n const targetId = TYPES_WITH_TARGET_ID.includes(type) ? faker.string.uuid() : null;\n return {\n id: faker.string.uuid(),\n legacyId: faker.number.int({ min: 1, max: 2000000000 }),\n type,\n state: \"PENDING_APPROVAL\" as const,\n reviewSteps: [{ stageName: \"default\", quorum: 2 }],\n currentStepIndex: 0,\n expiresAt: faker.date.future(),\n targetId,\n note: null,\n reviews: [],\n createdAt: faker.date.past(),\n updatedAt: faker.date.past(),\n createdById: faker.string.uuid(),\n data,\n } as VaultRequestResponse;\n};\n\nexport const genWebhookResponse = (opts?: Partial<WebhookResponse>): WebhookResponse => ({\n id: faker.string.uuid(),\n actions: faker.helpers.arrayElements([\n \"REQUEST_CREATED\",\n \"REQUEST_RECEIVED_APPROVAL\",\n \"REQUEST_RECEIVED_REJECTION\",\n \"REQUEST_ACTIVATED_REVIEWS\",\n \"REQUEST_EXECUTING\",\n \"REQUEST_EXECUTED\",\n \"REQUEST_ABORTED\",\n \"REQUEST_FAILED\",\n \"REQUEST_EXPIRED\",\n ]),\n url: faker.internet.url(),\n createdAt: faker.date.past(),\n ...opts,\n});\n","import { faker } from \"@faker-js/faker\";\n\nimport type { AccountStakingFields, AccountType } from \"@/app-lib\";\n\nexport const genAccountStakingFields = (opts: {\n type: AccountType;\n contractAddress: string | null;\n}): AccountStakingFields | null => {\n // No staking for token account\n if (opts.contractAddress !== null) {\n return null;\n }\n\n switch (opts.type) {\n case \"BITCOIN_LIKE\":\n return null;\n case \"CANTON_LIKE\":\n return null;\n case \"CARDANO_LIKE\":\n return {\n type: \"CARDANO_LIKE\",\n staking: {\n staked: faker.number.int().toString(),\n },\n };\n case \"ETHEREUM_LIKE\":\n return {\n type: \"ETHEREUM_LIKE\",\n staking: {\n totalStaking: faker.number.int().toString(),\n totalRewards: faker.number.int().toString(),\n availableRewards: faker.number.int().toString(),\n networkApy: faker.number.float({ min: 0, max: 1 }),\n },\n };\n case \"GENERIC_LIKE\":\n return null;\n case \"POLKADOT_LIKE\":\n return {\n type: \"POLKADOT_LIKE\",\n staking: {\n info: {\n controllerAddress: \"<fake-controller-address>\",\n rewardsDestination: \"<fake-rewards-destination>\",\n proxies: [\"<fake-proxy>\"],\n legacyStaking: false,\n isNominator: false,\n },\n balances: {\n free: faker.number.int().toString(),\n reserved: faker.number.int().toString(),\n frozen: faker.number.int().toString(),\n bonded: faker.number.int().toString(),\n available: faker.number.int().toString(),\n unbonding: [\n { amount: faker.number.int().toString(), waiting_time: \"<fake-waiting-time>\" },\n ],\n unbonded: [\n { amount: faker.number.int().toString(), waiting_time: \"<fake-waiting-time>\" },\n ],\n totalUnbonding: faker.number.int().toString(),\n totalUnbonded: faker.number.int().toString(),\n },\n anonymousProxy: {\n address: \"<fake-anonymous-proxy-address>\",\n createdAt: faker.date.past().toISOString(),\n isController: false,\n isMain: false,\n balances: {\n free: faker.number.int().toString(),\n reserved: faker.number.int().toString(),\n frozen: faker.number.int().toString(),\n bonded: faker.number.int().toString(),\n available: faker.number.int().toString(),\n total: faker.number.int().toString(),\n },\n blockHeight: faker.number.int().toString(),\n extIndex: faker.number.int().toString(),\n index: faker.number.int().toString(),\n kind: \"<fake-kind>\",\n },\n },\n };\n case \"RAW_SIGNING\":\n return null;\n case \"RIPPLE_LIKE\":\n return null;\n case \"SOLANA_LIKE\":\n return {\n type: \"SOLANA_LIKE\",\n staking: {\n staked: faker.number.int().toString(),\n rewards: {\n total: faker.number.int().toString(),\n last7: faker.number.int().toString(),\n last30: faker.number.int().toString(),\n },\n stakes: [\n {\n uid: \"<fake-stake-uid>\",\n baseAccountUid: \"<fake-base-account-uid>\",\n pubKey: \"<fake-pub-key>\",\n validatorPubKey: \"<fake-validator-pub-key>\",\n initialAmount: faker.number.int().toString(),\n activeAmount: faker.number.int().toString(),\n inactiveAmount: faker.number.int().toString(),\n totalBalance: faker.number.int().toString(),\n creationDate: faker.date.past().toISOString(),\n activationEpoch: faker.date.past().toISOString(),\n activationDate: faker.date.past().toISOString(),\n deactivationEpoch: \"<fake-deactivation-epoch>\",\n deactivationDate: faker.date.past().toISOString(),\n status: \"activated\",\n rentExemptReserve: faker.number.int().toString(),\n withdrawableAmount: faker.number.int().toString(),\n totalRewards: faker.number.int().toString(),\n creationTxHash: \"<fake-creation-tx-hash>\",\n actionsTxHashes: [\"<fake-action-tx-hash>\"],\n },\n ],\n },\n };\n case \"STELLAR_LIKE\":\n return null;\n case \"SUI_LIKE\":\n return {\n type: \"SUI_LIKE\",\n staking: {\n totalStaked: faker.number.int().toString(),\n totalRewards: faker.number.int().toString(),\n },\n };\n case \"TEZOS_LIKE\":\n return {\n type: \"TEZOS_LIKE\",\n staking: {\n delegations: [{ address: faker.string.alpha({ length: 10 }) }],\n },\n };\n case \"TRON_LIKE\":\n return null;\n case \"HEDERA_LIKE\":\n return {\n type: \"HEDERA_LIKE\",\n staking: {\n totalStaked: faker.number.int().toString(),\n totalRewards: faker.number.int().toString(),\n },\n };\n }\n};\n"],"mappings":"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"}