@inco/js 0.8.0-devnet-29 → 0.8.0-devnet-31

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.
Files changed (116) hide show
  1. package/dist/cjs/advancedacl/session-key.d.ts +4 -4
  2. package/dist/cjs/advancedacl/session-key.js +4 -3
  3. package/dist/cjs/attestedcompute/attested-compute.d.ts +0 -1
  4. package/dist/cjs/attestedcompute/attested-compute.js +7 -8
  5. package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +3 -4
  6. package/dist/cjs/attesteddecrypt/attested-decrypt.js +8 -60
  7. package/dist/cjs/chain.d.ts +8 -0
  8. package/dist/cjs/chain.js +19 -2
  9. package/dist/cjs/eip712/eip712.d.ts +18 -0
  10. package/dist/cjs/eip712/eip712.js +51 -0
  11. package/dist/cjs/eip712/index.d.ts +1 -0
  12. package/dist/cjs/eip712/index.js +8 -0
  13. package/dist/cjs/elistattesteddecrypt/elist-attested-decrypt.d.ts +49 -0
  14. package/dist/cjs/elistattesteddecrypt/elist-attested-decrypt.js +94 -0
  15. package/dist/cjs/elistattesteddecrypt/index.d.ts +2 -0
  16. package/dist/cjs/elistattesteddecrypt/index.js +22 -0
  17. package/dist/cjs/elistattesteddecrypt/types.d.ts +31 -0
  18. package/dist/cjs/elistattesteddecrypt/types.js +16 -0
  19. package/dist/cjs/generated/abis/lightning.d.ts +0 -39
  20. package/dist/cjs/generated/abis/lightning.js +1 -39
  21. package/dist/cjs/generated/abis/test-elist.d.ts +6 -0
  22. package/dist/cjs/generated/abis/test-elist.js +8 -1
  23. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +0 -34
  24. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.js +35 -40
  25. package/dist/cjs/generated/lightning.d.ts +29 -0
  26. package/dist/cjs/generated/lightning.js +30 -1
  27. package/dist/cjs/generated/local-node.d.ts +2 -2
  28. package/dist/cjs/generated/local-node.js +2 -2
  29. package/dist/cjs/handle.d.ts +8 -0
  30. package/dist/cjs/handle.js +20 -2
  31. package/dist/cjs/kms/quorumClient.d.ts +17 -4
  32. package/dist/cjs/kms/quorumClient.js +150 -1
  33. package/dist/cjs/kms/quorumConsistency.d.ts +25 -1
  34. package/dist/cjs/kms/quorumConsistency.js +70 -1
  35. package/dist/cjs/kms/signatureVerification.d.ts +2 -2
  36. package/dist/cjs/kms/signatureVerification.js +1 -1
  37. package/dist/cjs/lite/attested-compute.d.ts +2 -2
  38. package/dist/cjs/lite/attested-compute.js +2 -3
  39. package/dist/cjs/lite/attested-decrypt.d.ts +2 -2
  40. package/dist/cjs/lite/attested-decrypt.js +2 -3
  41. package/dist/cjs/lite/lightning.d.ts +21 -14
  42. package/dist/cjs/lite/lightning.js +64 -11
  43. package/dist/cjs/test/mocks.d.ts +5 -1
  44. package/dist/cjs/test/mocks.js +29 -5
  45. package/dist/cjs/viem.d.ts +350 -1
  46. package/dist/cjs/viem.js +3 -1
  47. package/dist/esm/advancedacl/session-key.d.ts +4 -4
  48. package/dist/esm/advancedacl/session-key.js +6 -5
  49. package/dist/esm/attestedcompute/attested-compute.d.ts +0 -1
  50. package/dist/esm/attestedcompute/attested-compute.js +5 -6
  51. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +3 -4
  52. package/dist/esm/attesteddecrypt/attested-decrypt.js +6 -58
  53. package/dist/esm/chain.d.ts +8 -0
  54. package/dist/esm/chain.js +18 -1
  55. package/dist/esm/eip712/eip712.d.ts +18 -0
  56. package/dist/esm/eip712/eip712.js +46 -0
  57. package/dist/esm/eip712/index.d.ts +1 -0
  58. package/dist/esm/eip712/index.js +2 -0
  59. package/dist/esm/elistattesteddecrypt/elist-attested-decrypt.d.ts +49 -0
  60. package/dist/esm/elistattesteddecrypt/elist-attested-decrypt.js +89 -0
  61. package/dist/esm/elistattesteddecrypt/index.d.ts +2 -0
  62. package/dist/esm/elistattesteddecrypt/index.js +3 -0
  63. package/dist/esm/elistattesteddecrypt/types.d.ts +31 -0
  64. package/dist/esm/elistattesteddecrypt/types.js +12 -0
  65. package/dist/esm/generated/abis/lightning.d.ts +0 -39
  66. package/dist/esm/generated/abis/lightning.js +1 -39
  67. package/dist/esm/generated/abis/test-elist.d.ts +6 -0
  68. package/dist/esm/generated/abis/test-elist.js +8 -1
  69. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +0 -34
  70. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.js +34 -39
  71. package/dist/esm/generated/lightning.d.ts +29 -0
  72. package/dist/esm/generated/lightning.js +30 -1
  73. package/dist/esm/generated/local-node.d.ts +2 -2
  74. package/dist/esm/generated/local-node.js +2 -2
  75. package/dist/esm/handle.d.ts +8 -0
  76. package/dist/esm/handle.js +18 -1
  77. package/dist/esm/kms/quorumClient.d.ts +17 -4
  78. package/dist/esm/kms/quorumClient.js +152 -3
  79. package/dist/esm/kms/quorumConsistency.d.ts +25 -1
  80. package/dist/esm/kms/quorumConsistency.js +68 -1
  81. package/dist/esm/kms/signatureVerification.d.ts +2 -2
  82. package/dist/esm/kms/signatureVerification.js +1 -1
  83. package/dist/esm/lite/attested-compute.d.ts +2 -2
  84. package/dist/esm/lite/attested-compute.js +3 -3
  85. package/dist/esm/lite/attested-decrypt.d.ts +2 -2
  86. package/dist/esm/lite/attested-decrypt.js +3 -3
  87. package/dist/esm/lite/lightning.d.ts +21 -14
  88. package/dist/esm/lite/lightning.js +64 -11
  89. package/dist/esm/test/mocks.d.ts +5 -1
  90. package/dist/esm/test/mocks.js +28 -6
  91. package/dist/esm/viem.d.ts +350 -1
  92. package/dist/esm/viem.js +4 -2
  93. package/dist/types/advancedacl/session-key.d.ts +4 -4
  94. package/dist/types/attestedcompute/attested-compute.d.ts +0 -1
  95. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +3 -4
  96. package/dist/types/chain.d.ts +8 -0
  97. package/dist/types/eip712/eip712.d.ts +18 -0
  98. package/dist/types/eip712/index.d.ts +1 -0
  99. package/dist/types/elistattesteddecrypt/elist-attested-decrypt.d.ts +49 -0
  100. package/dist/types/elistattesteddecrypt/index.d.ts +2 -0
  101. package/dist/types/elistattesteddecrypt/types.d.ts +31 -0
  102. package/dist/types/generated/abis/lightning.d.ts +0 -39
  103. package/dist/types/generated/abis/test-elist.d.ts +6 -0
  104. package/dist/types/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +0 -34
  105. package/dist/types/generated/lightning.d.ts +29 -0
  106. package/dist/types/generated/local-node.d.ts +2 -2
  107. package/dist/types/handle.d.ts +8 -0
  108. package/dist/types/kms/quorumClient.d.ts +17 -4
  109. package/dist/types/kms/quorumConsistency.d.ts +25 -1
  110. package/dist/types/kms/signatureVerification.d.ts +2 -2
  111. package/dist/types/lite/attested-compute.d.ts +2 -2
  112. package/dist/types/lite/attested-decrypt.d.ts +2 -2
  113. package/dist/types/lite/lightning.d.ts +21 -14
  114. package/dist/types/test/mocks.d.ts +5 -1
  115. package/dist/types/viem.d.ts +350 -1
  116. package/package.json +1 -1
@@ -5,6 +5,8 @@ import { attestedCompute as performAttestedCompute } from '../attestedcompute/at
5
5
  import { attestedDecrypt } from '../attesteddecrypt/attested-decrypt.js';
6
6
  import { attestedReveal as performAttestedReveal } from '../attestedreveal/attested-reveal.js';
7
7
  import { HexString, parseAddress } from '../binary.js';
8
+ import { chainShortNames } from '../chain.js';
9
+ import { eListAttestedDecrypt, eListAttestedReveal as performEListAttestedReveal, } from '../elistattesteddecrypt/elist-attested-decrypt.js';
8
10
  import { encryptionSchemes, } from '../encryption/encryption.js';
9
11
  import { incoLightningAbi } from '../generated/abis/lightning.js';
10
12
  import { incoVerifierAbi } from '../generated/abis/verifier.js';
@@ -195,7 +197,7 @@ export class Lightning {
195
197
  transport: buildTransport(options?.hostChainRpcUrls),
196
198
  });
197
199
  const { threshold, signers, networkPubkey } = await Lightning.getChainConfig(deployment, client);
198
- return new Lightning(deployment, Lightning.getCovalidatorUrls(deployment, threshold), signers, threshold, networkPubkey, client);
200
+ return new Lightning(deployment, Lightning.getCovalidatorUrls(deployment, signers), signers, threshold, networkPubkey, client);
199
201
  }
200
202
  /**
201
203
  * Get a Lightning deployment for a local or custom node
@@ -384,7 +386,7 @@ export class Lightning {
384
386
  reencryptKeypair: keypair,
385
387
  });
386
388
  }
387
- async attestedDecryptWithVoucher(ephemeralAccount, allowanceVoucherWithSig, ethClient, handles, opts) {
389
+ async attestedDecryptWithVoucher(ephemeralAccount, allowanceVoucherWithSig, handles, opts) {
388
390
  const { reencryptPubKey: inputPubKey, reencryptKeypair: inputKeypair, requesterArgData, backoffConfig, } = opts ?? {};
389
391
  const common = {
390
392
  backoffConfig,
@@ -394,7 +396,7 @@ export class Lightning {
394
396
  allowanceVoucherWithSig,
395
397
  handles,
396
398
  requesterArgData,
397
- ethClient,
399
+ ethClient: this.publicClient,
398
400
  executorAddress: this.executorAddress,
399
401
  };
400
402
  if (inputPubKey) {
@@ -418,6 +420,53 @@ export class Lightning {
418
420
  reencryptKeypair: keypair,
419
421
  });
420
422
  }
423
+ async eListAttestedDecrypt(walletClient, handle, opts) {
424
+ const { reencryptPubKey: inputPubKey, reencryptKeypair: inputKeypair, backoffConfig, } = opts ?? {};
425
+ const common = {
426
+ handle,
427
+ backoffConfig,
428
+ chainId: Number(this.chainId),
429
+ walletClient,
430
+ kmsQuorumClient: this.kmsQuorumClient,
431
+ executorAddress: this.executorAddress,
432
+ };
433
+ if (inputPubKey) {
434
+ if (inputKeypair) {
435
+ return eListAttestedDecrypt({
436
+ ...common,
437
+ reencryptPubKey: inputPubKey,
438
+ reencryptKeypair: inputKeypair,
439
+ });
440
+ }
441
+ return eListAttestedDecrypt({
442
+ ...common,
443
+ reencryptPubKey: inputPubKey,
444
+ });
445
+ }
446
+ const keypair = await generateXwingKeypair();
447
+ const pubKey = keypair.encodePublicKey();
448
+ return eListAttestedDecrypt({
449
+ ...common,
450
+ reencryptPubKey: pubKey,
451
+ reencryptKeypair: keypair,
452
+ });
453
+ }
454
+ /**
455
+ * Reveal a single elist handle without wallet authentication.
456
+ * Returns plaintext values along with an attestation of the checksum.
457
+ *
458
+ * @param handle - The elist handle to reveal
459
+ * @param opts - Optional backoff configuration
460
+ * @returns The elist decryption attestation with plaintext values
461
+ */
462
+ eListAttestedReveal(handle, opts) {
463
+ const { backoffConfig } = opts ?? {};
464
+ return performEListAttestedReveal({
465
+ handle,
466
+ backoffConfig,
467
+ kmsQuorumClient: this.kmsQuorumClient,
468
+ });
469
+ }
421
470
  async attestedCompute(walletClient, lhsHandle, op, rhsPlaintext, opts) {
422
471
  const { reencryptPubKey: inputPubKey, reencryptKeypair: inputKeypair, backoffConfig, } = opts ?? {};
423
472
  const common = {
@@ -451,7 +500,7 @@ export class Lightning {
451
500
  reencryptKeypair: keypair,
452
501
  });
453
502
  }
454
- async attestedComputeWithVoucher(ephemeralAccount, allowanceVoucherWithSig, ethClient, lhsHandle, op, rhsPlaintext, opts) {
503
+ async attestedComputeWithVoucher(ephemeralAccount, allowanceVoucherWithSig, lhsHandle, op, rhsPlaintext, opts) {
455
504
  const { reencryptPubKey: inputPubKey, reencryptKeypair: inputKeypair, requesterArgData, backoffConfig, } = opts ?? {};
456
505
  const common = {
457
506
  chainId: Number(this.chainId),
@@ -462,7 +511,7 @@ export class Lightning {
462
511
  op,
463
512
  rhsPlaintext,
464
513
  requesterArgData,
465
- ethClient,
514
+ ethClient: this.publicClient,
466
515
  executorAddress: this.executorAddress,
467
516
  backoffConfig,
468
517
  };
@@ -513,11 +562,15 @@ export class Lightning {
513
562
  /**
514
563
  * Get the GRPC endpoint for the covalidator that services this deployment.
515
564
  */
516
- static getCovalidatorUrls(deployment, threshold) {
517
- const { executorAddress, chainId, pepper } = deployment;
518
- return Array.from({ length: threshold }, (_, i) =>
519
- // TODO: add the index to the URL #1276
520
- `https://${executorAddress.toLowerCase()}.${chainId}.${pepper}.inco.org`);
565
+ static getCovalidatorUrls(deployment, signers) {
566
+ const { chainId, pepper, majorVersion } = deployment;
567
+ const chainShortName = chainShortNames[chainId];
568
+ if (!chainShortName) {
569
+ throw new Error(`Unsupported chainId ${chainId} for covalidator URL generation`);
570
+ }
571
+ return signers.map((signer) => {
572
+ return `https://${signer.toLowerCase()}.${majorVersion}.covalidator.${chainShortName}.${pepper}.inco.org`;
573
+ });
521
574
  }
522
575
  static isIdByName(id) {
523
576
  return id.name !== undefined;
@@ -623,4 +676,4 @@ export class Lightning {
623
676
  return major > 1 || (major === 1 && minor >= 1);
624
677
  }
625
678
  }
626
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLFdBQVcsRUFFWCxVQUFVLEVBQ1YsSUFBSSxHQUlMLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLDZCQUE2QixFQUM3Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLGdDQUFnQyxHQUNqQyxNQUFNLCtCQUErQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxlQUFlLElBQUksc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUVuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFLekUsT0FBTyxFQUFFLGNBQWMsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9GLE9BQU8sRUFBVyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhFLE9BQU8sRUFFTCxpQkFBaUIsR0FJbEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFXLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFP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
679
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLFdBQVcsRUFFWCxVQUFVLEVBQ1YsSUFBSSxHQUlMLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLDZCQUE2QixFQUM3Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLGdDQUFnQyxHQUNqQyxNQUFNLCtCQUErQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxlQUFlLElBQUksc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUVuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFLekUsT0FBTyxFQUFFLGNBQWMsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9GLE9BQU8sRUFBVyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sYUFBYSxDQUFDO0FBQ2hFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsbUJBQW1CLElBQUksMEJBQTBCLEdBQ2xELE1BQU0sbURBQW1ELENBQUM7QUFLM0QsT0FBTyxFQUVMLGlCQUFpQixHQUlsQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQVcsV0FBVyxF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
@@ -1,4 +1,4 @@
1
- import { Account, Chain, Transport, WalletClient } from 'viem';
1
+ import { Account, Chain, PublicClient, Transport, WalletClient } from 'viem';
2
2
  import { vi } from 'vitest';
3
3
  import { KmsClient } from '../kms/client.js';
4
4
  import { KmsQuorumClient } from '../kms/quorumClient.js';
@@ -6,11 +6,15 @@ interface MinimalKmsClient {
6
6
  attestedCompute: ReturnType<typeof vi.fn>;
7
7
  attestedDecrypt: ReturnType<typeof vi.fn>;
8
8
  attestedReveal: ReturnType<typeof vi.fn>;
9
+ eListAttestedDecrypt: ReturnType<typeof vi.fn>;
10
+ eListAttestedReveal: ReturnType<typeof vi.fn>;
9
11
  key: ReturnType<typeof vi.fn>;
10
12
  reencrypt: ReturnType<typeof vi.fn>;
11
13
  }
12
14
  export declare function createMockKmsClient(): MinimalKmsClient & KmsClient;
13
15
  export declare function createMockQuorumClient(): KmsQuorumClient;
14
16
  export declare function setupMockInQuorumClient(quorumClient: KmsQuorumClient, mockKmsClient: MinimalKmsClient & KmsClient): void;
17
+ export declare function createMockPublicClient(): PublicClient<Transport, Chain>;
15
18
  export declare function createTestWalletClient(): WalletClient<Transport, Chain, Account>;
19
+ export declare function createFallbackWalletClient(): WalletClient<Transport, Chain, Account>;
16
20
  export {};
@@ -1,8 +1,7 @@
1
- import { createWalletClient, http, } from 'viem';
1
+ import { createPublicClient, createWalletClient, fallback, http, } from 'viem';
2
2
  import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
3
3
  import { sepolia } from 'viem/chains';
4
4
  import { vi } from 'vitest';
5
- import { TEST_RPC_URL } from '../attesteddecrypt/attested-decrypt.js';
6
5
  import { TEST_DEFAULT_COVALIDATOR_SIGNER } from '../kms/client.js';
7
6
  import { KmsQuorumClient } from '../kms/quorumClient.js';
8
7
  // Create a mock that satisfies our minimal interface
@@ -11,6 +10,8 @@ export function createMockKmsClient() {
11
10
  attestedCompute: vi.fn(),
12
11
  attestedDecrypt: vi.fn(),
13
12
  attestedReveal: vi.fn(),
13
+ eListAttestedDecrypt: vi.fn(),
14
+ eListAttestedReveal: vi.fn(),
14
15
  key: vi.fn(),
15
16
  reencrypt: vi.fn(),
16
17
  };
@@ -29,14 +30,35 @@ export function setupMockInQuorumClient(quorumClient, mockKmsClient) {
29
30
  anyQuorumClient.kmss[0].client = mockKmsClient;
30
31
  }
31
32
  }
32
- // Create a real wallet client for testing
33
+ // Create a public client for testing (transport URL is never actually called;
34
+ // publicClient is required by attestedDecrypt/attestedCompute but KMS is mocked in tests)
35
+ export function createMockPublicClient() {
36
+ return createPublicClient({
37
+ chain: sepolia,
38
+ transport: http('http://localhost:8567'),
39
+ });
40
+ }
41
+ // Create a wallet client for testing (transport URL is never actually called;
42
+ // signing with a local key account does not require an RPC connection)
33
43
  export function createTestWalletClient() {
34
44
  const account = privateKeyToAccount(generatePrivateKey());
35
45
  return createWalletClient({
36
46
  chain: sepolia, // Arbitrary chain, not relevant to test
37
- // CAUTION: TODO: do not rely on this in production, it's only for internal testing use etc.
38
- transport: http(TEST_RPC_URL),
47
+ transport: http('http://localhost:8567'),
48
+ account,
49
+ });
50
+ }
51
+ // Create a wallet client with a fallback() transport for testing that code
52
+ // handles non-http transports correctly (fallback has no .url property)
53
+ export function createFallbackWalletClient() {
54
+ const account = privateKeyToAccount(generatePrivateKey());
55
+ return createWalletClient({
56
+ chain: sepolia,
57
+ transport: fallback([
58
+ http('http://localhost:8567'),
59
+ http('http://localhost:8568'),
60
+ ]),
39
61
  account,
40
62
  });
41
63
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLElBQUksR0FHTCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RFLE9BQU8sRUFBYSwrQkFBK0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVl6RCxxREFBcUQ7QUFDckQsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPO1FBQ0wsZUFBZSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEIsZUFBZSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEIsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDWixTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtLQUNhLENBQUM7QUFDcEMsQ0FBQztBQUVELGtFQUFrRTtBQUNsRSxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLGlGQUFpRjtJQUNqRixNQUFNLFFBQVEsR0FBUSxlQUFlLENBQUM7SUFDdEMsT0FBTyxJQUFJLFFBQVEsQ0FDakIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsK0JBQStCLEVBQUUsQ0FBQyxFQUN0RSxDQUFDLENBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxZQUE2QixFQUM3QixhQUEyQztJQUUzQyxtREFBbUQ7SUFDbkQsTUFBTSxlQUFlLEdBQUcsWUFBbUIsQ0FBQztJQUM1QyxJQUFJLGVBQWUsQ0FBQyxJQUFJLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUQsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO0lBQ2pELENBQUM7QUFDSCxDQUFDO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxzQkFBc0I7SUFLcEMsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQzFELE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsS0FBSyxFQUFFLE9BQU8sRUFBRSx3Q0FBd0M7UUFDeEQsNEZBQTRGO1FBQzVGLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzdCLE9BQU87S0FDUixDQUFDLENBQUM7QUFDTCxDQUFDIn0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixRQUFRLEVBQ1IsSUFBSSxHQUlMLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQWEsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFjekQscURBQXFEO0FBQ3JELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsT0FBTztRQUNMLGVBQWUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3hCLGVBQWUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3hCLGNBQWMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3ZCLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDN0IsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUM1QixHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNaLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0tBQ2EsQ0FBQztBQUNwQyxDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsaUZBQWlGO0lBQ2pGLE1BQU0sUUFBUSxHQUFRLGVBQWUsQ0FBQztJQUN0QyxPQUFPLElBQUksUUFBUSxDQUNqQixDQUFDLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSwrQkFBK0IsRUFBRSxDQUFDLEVBQ3RFLENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELDREQUE0RDtBQUM1RCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLFlBQTZCLEVBQzdCLGFBQTJDO0lBRTNDLG1EQUFtRDtJQUNuRCxNQUFNLGVBQWUsR0FBRyxZQUFtQixDQUFDO0lBQzVDLElBQUksZUFBZSxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1RCxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUM7SUFDakQsQ0FBQztBQUNILENBQUM7QUFFRCw4RUFBOEU7QUFDOUUsMEZBQTBGO0FBQzFGLE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixLQUFLLEVBQUUsT0FBTztRQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUM7S0FDekMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELDhFQUE4RTtBQUM5RSx1RUFBdUU7QUFDdkUsTUFBTSxVQUFVLHNCQUFzQjtJQUtwQyxNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDMUQsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixLQUFLLEVBQUUsT0FBTyxFQUFFLHdDQUF3QztRQUN4RCxTQUFTLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQ3hDLE9BQU87S0FDUixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsMkVBQTJFO0FBQzNFLHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsMEJBQTBCO0lBS3hDLE1BQU0sT0FBTyxHQUFHLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUMxRCxPQUFPLGtCQUFrQixDQUFDO1FBQ3hCLEtBQUssRUFBRSxPQUFPO1FBQ2QsU0FBUyxFQUFFLFFBQVEsQ0FBQztZQUNsQixJQUFJLENBQUMsdUJBQXVCLENBQUM7WUFDN0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1NBQzlCLENBQUM7UUFDRixPQUFPO0tBQ1IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9