@eclesia/indexer-engine 2.10.0 → 2.11.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.
Files changed (153) hide show
  1. package/dist/_virtual/rolldown_runtime.cjs +4 -0
  2. package/dist/_virtual/rolldown_runtime.mjs +38 -0
  3. package/dist/constants.cjs +6 -2
  4. package/dist/constants.cjs.map +1 -1
  5. package/dist/constants.d.cts +6 -3
  6. package/dist/constants.d.cts.map +1 -1
  7. package/dist/{constants.d.ts → constants.d.mts} +7 -4
  8. package/dist/constants.d.mts.map +1 -0
  9. package/dist/{constants.js → constants.mjs} +7 -4
  10. package/dist/constants.mjs.map +1 -0
  11. package/dist/emitter/index.cjs +6 -3
  12. package/dist/emitter/index.cjs.map +1 -1
  13. package/dist/emitter/index.d.cts.map +1 -1
  14. package/dist/emitter/{index.d.ts → index.d.mts} +2 -2
  15. package/dist/emitter/index.d.mts.map +1 -0
  16. package/dist/emitter/{index.js → index.mjs} +7 -4
  17. package/dist/emitter/index.mjs.map +1 -0
  18. package/dist/errors/index.cjs +18 -0
  19. package/dist/errors/index.cjs.map +1 -1
  20. package/dist/errors/index.d.cts.map +1 -1
  21. package/dist/errors/{index.d.ts → index.d.mts} +1 -1
  22. package/dist/errors/index.d.mts.map +1 -0
  23. package/dist/errors/{index.js → index.mjs} +19 -1
  24. package/dist/errors/index.mjs.map +1 -0
  25. package/dist/index.cjs +10 -2
  26. package/dist/index.d.cts +6 -5
  27. package/dist/index.d.mts +11 -0
  28. package/dist/index.mjs +12 -0
  29. package/dist/indexer/index.cjs +113 -67
  30. package/dist/indexer/index.cjs.map +1 -1
  31. package/dist/indexer/index.d.cts +7 -1
  32. package/dist/indexer/index.d.cts.map +1 -1
  33. package/dist/indexer/{index.d.ts → index.d.mts} +11 -5
  34. package/dist/indexer/index.d.mts.map +1 -0
  35. package/dist/indexer/{index.js → index.mjs} +121 -75
  36. package/dist/indexer/index.mjs.map +1 -0
  37. package/dist/metrics/index.cjs +28 -0
  38. package/dist/metrics/index.cjs.map +1 -1
  39. package/dist/metrics/index.d.cts.map +1 -1
  40. package/dist/metrics/{index.d.ts → index.d.mts} +1 -1
  41. package/dist/metrics/index.d.mts.map +1 -0
  42. package/dist/metrics/{index.js → index.mjs} +29 -1
  43. package/dist/metrics/index.mjs.map +1 -0
  44. package/dist/mocks/index.cjs +18 -0
  45. package/dist/mocks/index.cjs.map +1 -0
  46. package/dist/mocks/index.d.cts +9 -0
  47. package/dist/mocks/index.d.cts.map +1 -0
  48. package/dist/mocks/index.d.mts +9 -0
  49. package/dist/mocks/index.d.mts.map +1 -0
  50. package/dist/mocks/index.mjs +13 -0
  51. package/dist/mocks/index.mjs.map +1 -0
  52. package/dist/mocks/rpc-client.cjs +209 -0
  53. package/dist/mocks/rpc-client.cjs.map +1 -0
  54. package/dist/mocks/rpc-client.d.cts +44 -0
  55. package/dist/mocks/rpc-client.d.cts.map +1 -0
  56. package/dist/mocks/rpc-client.d.mts +44 -0
  57. package/dist/mocks/rpc-client.d.mts.map +1 -0
  58. package/dist/mocks/rpc-client.mjs +208 -0
  59. package/dist/mocks/rpc-client.mjs.map +1 -0
  60. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/ascii.cjs +32 -0
  61. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/ascii.cjs.map +1 -0
  62. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/ascii.mjs +29 -0
  63. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/ascii.mjs.map +1 -0
  64. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/base64.cjs +67 -0
  65. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/base64.cjs.map +1 -0
  66. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/base64.mjs +64 -0
  67. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/base64.mjs.map +1 -0
  68. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/bech32.cjs +80 -0
  69. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/bech32.cjs.map +1 -0
  70. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/bech32.mjs +77 -0
  71. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/bech32.mjs.map +1 -0
  72. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/hex.cjs +33 -0
  73. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/hex.cjs.map +1 -0
  74. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/hex.mjs +30 -0
  75. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/hex.mjs.map +1 -0
  76. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/index.cjs +106 -0
  77. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/index.cjs.map +1 -0
  78. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/index.mjs +103 -0
  79. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/index.mjs.map +1 -0
  80. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/rfc3339.cjs +52 -0
  81. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/rfc3339.cjs.map +1 -0
  82. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/rfc3339.mjs +49 -0
  83. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/rfc3339.mjs.map +1 -0
  84. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/utf8.cjs +31 -0
  85. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/utf8.cjs.map +1 -0
  86. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/utf8.mjs +28 -0
  87. package/dist/node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/utf8.mjs.map +1 -0
  88. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.cjs +98 -0
  89. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.cjs.map +1 -0
  90. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.mjs +95 -0
  91. package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.mjs.map +1 -0
  92. package/dist/promise-queue/index.cjs +34 -5
  93. package/dist/promise-queue/index.cjs.map +1 -1
  94. package/dist/promise-queue/index.d.cts.map +1 -1
  95. package/dist/promise-queue/{index.d.ts → index.d.mts} +1 -1
  96. package/dist/promise-queue/index.d.mts.map +1 -0
  97. package/dist/promise-queue/{index.js → index.mjs} +35 -6
  98. package/dist/promise-queue/index.mjs.map +1 -0
  99. package/dist/types/index.cjs.map +1 -1
  100. package/dist/types/index.d.cts +2 -1
  101. package/dist/types/index.d.cts.map +1 -1
  102. package/dist/types/{index.d.ts → index.d.mts} +5 -4
  103. package/dist/types/index.d.mts.map +1 -0
  104. package/dist/types/{index.js → index.mjs} +1 -1
  105. package/dist/types/index.mjs.map +1 -0
  106. package/dist/utils/{bech32.d.ts → bech32.d.mts} +1 -1
  107. package/dist/utils/bech32.d.mts.map +1 -0
  108. package/dist/utils/{bech32.js → bech32.mjs} +1 -1
  109. package/dist/utils/bech32.mjs.map +1 -0
  110. package/dist/utils/{bigint.d.ts → bigint.d.mts} +1 -1
  111. package/dist/utils/bigint.d.mts.map +1 -0
  112. package/dist/utils/{bigint.js → bigint.mjs} +1 -1
  113. package/dist/utils/bigint.mjs.map +1 -0
  114. package/dist/utils/{index.d.ts → index.d.mts} +4 -4
  115. package/dist/utils/index.d.mts.map +1 -0
  116. package/dist/utils/{index.js → index.mjs} +5 -5
  117. package/dist/utils/index.mjs.map +1 -0
  118. package/dist/utils/{text.d.ts → text.d.mts} +1 -1
  119. package/dist/utils/text.d.mts.map +1 -0
  120. package/dist/utils/{text.js → text.mjs} +1 -1
  121. package/dist/utils/text.mjs.map +1 -0
  122. package/dist/validation/{index.d.ts → index.d.mts} +1 -1
  123. package/dist/validation/index.d.mts.map +1 -0
  124. package/dist/validation/{index.js → index.mjs} +3 -3
  125. package/dist/validation/index.mjs.map +1 -0
  126. package/package.json +23 -20
  127. package/dist/_virtual/rolldown_runtime.js +0 -13
  128. package/dist/constants.d.ts.map +0 -1
  129. package/dist/constants.js.map +0 -1
  130. package/dist/emitter/index.d.ts.map +0 -1
  131. package/dist/emitter/index.js.map +0 -1
  132. package/dist/errors/index.d.ts.map +0 -1
  133. package/dist/errors/index.js.map +0 -1
  134. package/dist/index.d.ts +0 -10
  135. package/dist/index.js +0 -11
  136. package/dist/indexer/index.d.ts.map +0 -1
  137. package/dist/indexer/index.js.map +0 -1
  138. package/dist/metrics/index.d.ts.map +0 -1
  139. package/dist/metrics/index.js.map +0 -1
  140. package/dist/promise-queue/index.d.ts.map +0 -1
  141. package/dist/promise-queue/index.js.map +0 -1
  142. package/dist/types/index.d.ts.map +0 -1
  143. package/dist/types/index.js.map +0 -1
  144. package/dist/utils/bech32.d.ts.map +0 -1
  145. package/dist/utils/bech32.js.map +0 -1
  146. package/dist/utils/bigint.d.ts.map +0 -1
  147. package/dist/utils/bigint.js.map +0 -1
  148. package/dist/utils/index.d.ts.map +0 -1
  149. package/dist/utils/index.js.map +0 -1
  150. package/dist/utils/text.d.ts.map +0 -1
  151. package/dist/utils/text.js.map +0 -1
  152. package/dist/validation/index.d.ts.map +0 -1
  153. package/dist/validation/index.js.map +0 -1
@@ -7,6 +7,34 @@ import { Counter, Gauge, Histogram, Registry, collectDefaultMetrics } from "prom
7
7
  */
8
8
  /** Prometheus metrics registry */
9
9
  var IndexerMetrics = class {
10
+ /** Prometheus registry instance */
11
+ registry;
12
+ /** Counter for total blocks indexed */
13
+ blocksIndexed;
14
+ /** Gauge for current block height */
15
+ currentHeight;
16
+ /** Gauge for latest chain block height */
17
+ latestHeight;
18
+ /** Gauge for blocks behind chain tip */
19
+ blocksBehind;
20
+ /** Gauge for block queue depth */
21
+ queueDepth;
22
+ /** Counter for total errors */
23
+ errors;
24
+ /** Counter for RPC errors */
25
+ rpcErrors;
26
+ /** Counter for database errors */
27
+ databaseErrors;
28
+ /** Histogram for block processing duration */
29
+ blockProcessingDuration;
30
+ /** Histogram for RPC call duration */
31
+ rpcCallDuration;
32
+ /** Histogram for database query duration */
33
+ databaseQueryDuration;
34
+ /** Gauge for retry count */
35
+ retryCount;
36
+ /** Counter for total transactions processed */
37
+ transactionsProcessed;
10
38
  constructor() {
11
39
  this.registry = new Registry();
12
40
  collectDefaultMetrics({ register: this.registry });
@@ -214,4 +242,4 @@ var IndexerMetrics = class {
214
242
 
215
243
  //#endregion
216
244
  export { IndexerMetrics };
217
- //# sourceMappingURL=index.js.map
245
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/metrics/index.ts"],"sourcesContent":["/**\n * Prometheus metrics for monitoring indexer performance and health\n * Exposes metrics for blocks indexed, queue depth, errors, and processing times\n */\n\nimport {\n collectDefaultMetrics, Counter, Gauge, Histogram, Registry,\n} from \"prom-client\";\n\n/** Prometheus metrics registry */\nexport class IndexerMetrics {\n /** Prometheus registry instance */\n public readonly registry: Registry;\n\n /** Counter for total blocks indexed */\n public readonly blocksIndexed: Counter;\n\n /** Gauge for current block height */\n public readonly currentHeight: Gauge;\n\n /** Gauge for latest chain block height */\n public readonly latestHeight: Gauge;\n\n /** Gauge for blocks behind chain tip */\n public readonly blocksBehind: Gauge;\n\n /** Gauge for block queue depth */\n public readonly queueDepth: Gauge;\n\n /** Counter for total errors */\n public readonly errors: Counter;\n\n /** Counter for RPC errors */\n public readonly rpcErrors: Counter;\n\n /** Counter for database errors */\n public readonly databaseErrors: Counter;\n\n /** Histogram for block processing duration */\n public readonly blockProcessingDuration: Histogram;\n\n /** Histogram for RPC call duration */\n public readonly rpcCallDuration: Histogram;\n\n /** Histogram for database query duration */\n public readonly databaseQueryDuration: Histogram;\n\n /** Gauge for retry count */\n public readonly retryCount: Gauge;\n\n /** Counter for total transactions processed */\n public readonly transactionsProcessed: Counter;\n\n constructor() {\n this.registry = new Registry();\n\n // Collect default Node.js metrics (memory, CPU, etc.)\n collectDefaultMetrics({\n register: this.registry,\n });\n\n // Block indexing metrics\n this.blocksIndexed = new Counter({\n name: \"indexer_blocks_indexed_total\",\n help: \"Total number of blocks indexed\",\n registers: [this.registry],\n });\n\n this.currentHeight = new Gauge({\n name: \"indexer_current_height\",\n help: \"Current block height being processed\",\n registers: [this.registry],\n });\n\n this.latestHeight = new Gauge({\n name: \"indexer_latest_chain_height\",\n help: \"Latest block height on the chain\",\n registers: [this.registry],\n });\n\n this.blocksBehind = new Gauge({\n name: \"indexer_blocks_behind\",\n help: \"Number of blocks behind chain tip\",\n registers: [this.registry],\n });\n\n this.queueDepth = new Gauge({\n name: \"indexer_queue_depth\",\n help: \"Current depth of block processing queue\",\n registers: [this.registry],\n });\n\n // Error metrics\n this.errors = new Counter({\n name: \"indexer_errors_total\",\n help: \"Total number of indexer errors\",\n labelNames: [\"type\"],\n registers: [this.registry],\n });\n\n this.rpcErrors = new Counter({\n name: \"indexer_rpc_errors_total\",\n help: \"Total number of RPC errors\",\n registers: [this.registry],\n });\n\n this.databaseErrors = new Counter({\n name: \"indexer_database_errors_total\",\n help: \"Total number of database errors\",\n registers: [this.registry],\n });\n\n // Performance metrics\n this.blockProcessingDuration = new Histogram({\n name: \"indexer_block_processing_duration_seconds\",\n help: \"Time spent processing a single block\",\n buckets: [0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 2, 5],\n registers: [this.registry],\n });\n\n this.rpcCallDuration = new Histogram({\n name: \"indexer_rpc_call_duration_seconds\",\n help: \"Duration of RPC calls\",\n buckets: [0.01, 0.05, 0.1, 0.5, 1, 2, 5, 10],\n labelNames: [\"method\"],\n registers: [this.registry],\n });\n\n this.databaseQueryDuration = new Histogram({\n name: \"indexer_database_query_duration_seconds\",\n help: \"Duration of database queries\",\n buckets: [0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1],\n labelNames: [\"query_type\"],\n registers: [this.registry],\n });\n\n // Operational metrics\n this.retryCount = new Gauge({\n name: \"indexer_retry_count\",\n help: \"Current number of retry attempts\",\n registers: [this.registry],\n });\n\n this.transactionsProcessed = new Counter({\n name: \"indexer_transactions_processed_total\",\n help: \"Total number of transactions processed\",\n registers: [this.registry],\n });\n }\n\n /**\n * Updates block indexing metrics\n * @param currentHeight - Current height being processed\n * @param latestHeight - Latest height on chain\n * @param queueSize - Current queue depth\n */\n updateBlockMetrics(currentHeight: number, latestHeight: number, queueSize: number) {\n this.blocksIndexed.inc();\n this.currentHeight.set(currentHeight);\n this.latestHeight.set(latestHeight);\n this.blocksBehind.set(latestHeight - currentHeight);\n this.queueDepth.set(queueSize);\n }\n\n /**\n * Records an error occurrence\n * @param type - Error type (rpc, database, processing, etc.)\n */\n recordError(type: string) {\n this.errors.inc({\n type,\n });\n\n if (type === \"rpc\") {\n this.rpcErrors.inc();\n }\n else if (type === \"database\") {\n this.databaseErrors.inc();\n }\n }\n\n /**\n * Records block processing duration\n * @param durationSeconds - Duration in seconds\n */\n recordBlockProcessing(durationSeconds: number) {\n this.blockProcessingDuration.observe(durationSeconds);\n }\n\n /**\n * Times a block processing operation\n * @returns End timer function to call when operation completes\n */\n timeBlockProcessing() {\n return this.blockProcessingDuration.startTimer();\n }\n\n /**\n * Records RPC call duration\n * @param method - RPC method name\n * @param durationSeconds - Duration in seconds\n */\n recordRpcCall(method: string, durationSeconds: number) {\n this.rpcCallDuration.observe({\n method,\n }, durationSeconds);\n }\n\n /**\n * Times an RPC call operation\n * @param method - RPC method name\n * @returns End timer function to call when operation completes\n */\n timeRpcCall(method: string) {\n return this.rpcCallDuration.startTimer({\n method,\n });\n }\n\n /**\n * Records database query duration\n * @param queryType - Type of query (select, insert, update, delete, etc.)\n * @param durationSeconds - Duration in seconds\n */\n recordDatabaseQuery(queryType: string, durationSeconds: number) {\n this.databaseQueryDuration.observe({\n query_type: queryType,\n }, durationSeconds);\n }\n\n /**\n * Times a database query operation\n * @param queryType - Type of query (select, insert, update, delete, etc.)\n * @returns End timer function to call when operation completes\n */\n timeDatabaseQuery(queryType: string) {\n return this.databaseQueryDuration.startTimer({\n query_type: queryType,\n });\n }\n\n /**\n * Updates the retry count gauge\n * @param count - Current retry count\n */\n updateRetryCount(count: number) {\n this.retryCount.set(count);\n }\n\n /**\n * Increments the retry count gauge by 1\n */\n incrementRetryCount() {\n this.retryCount.inc();\n }\n\n /**\n * Resets the retry count gauge to 0\n */\n resetRetryCount() {\n this.retryCount.set(0);\n }\n\n /**\n * Records transactions processed\n * @param count - Number of transactions to record (defaults to 1)\n */\n recordTransactions(count: number = 1) {\n this.transactionsProcessed.inc(count);\n }\n\n /**\n * Gets metrics in Prometheus format\n * @returns Prometheus metrics string\n */\n async getMetrics(): Promise<string> {\n return this.registry.metrics();\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_rpc_client = require('./rpc-client.cjs');
3
+
4
+ //#region src/mocks/index.ts
5
+ var mocks_exports = /* @__PURE__ */ require_rolldown_runtime.__export({
6
+ MockRpcClient: () => require_rpc_client.MockRpcClient,
7
+ MockRpcConfig: () => MockRpcConfig,
8
+ createMockRpcClient: () => require_rpc_client.createMockRpcClient
9
+ });
10
+
11
+ //#endregion
12
+ Object.defineProperty(exports, 'mocks_exports', {
13
+ enumerable: true,
14
+ get: function () {
15
+ return mocks_exports;
16
+ }
17
+ });
18
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/mocks/index.ts"],"sourcesContent":["/**\n * Mock implementations for testing and benchmarking\n * Provides RPC client and database mocks to isolate engine performance\n */\n\nexport {\n createMockRpcClient, MockRpcClient, MockRpcConfig,\n} from \"./rpc-client.js\";\n"],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { MockRpcClient, MockRpcConfig, createMockRpcClient } from "./rpc-client.cjs";
2
+
3
+ //#region src/mocks/index.d.ts
4
+ declare namespace index_d_exports {
5
+ export { MockRpcClient, MockRpcConfig, createMockRpcClient };
6
+ }
7
+ //#endregion
8
+ export { index_d_exports };
9
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/mocks/index.ts"],"sourcesContent":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { MockRpcClient, MockRpcConfig, createMockRpcClient } from "./rpc-client.mjs";
2
+
3
+ //#region src/mocks/index.d.ts
4
+ declare namespace index_d_exports {
5
+ export { MockRpcClient, MockRpcConfig, createMockRpcClient };
6
+ }
7
+ //#endregion
8
+ export { index_d_exports };
9
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/mocks/index.ts"],"sourcesContent":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { __export } from "../_virtual/rolldown_runtime.mjs";
2
+ import { MockRpcClient, createMockRpcClient } from "./rpc-client.mjs";
3
+
4
+ //#region src/mocks/index.ts
5
+ var mocks_exports = /* @__PURE__ */ __export({
6
+ MockRpcClient: () => MockRpcClient,
7
+ MockRpcConfig: () => MockRpcConfig,
8
+ createMockRpcClient: () => createMockRpcClient
9
+ });
10
+
11
+ //#endregion
12
+ export { mocks_exports };
13
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/mocks/index.ts"],"sourcesContent":["/**\n * Mock implementations for testing and benchmarking\n * Provides RPC client and database mocks to isolate engine performance\n */\n\nexport {\n createMockRpcClient, MockRpcClient, MockRpcConfig,\n} from \"./rpc-client.js\";\n"],"mappings":""}
@@ -0,0 +1,209 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_index = require('../node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/index.cjs');
3
+ let __cosmjs_tendermint_rpc = require("@cosmjs/tendermint-rpc");
4
+ let cosmjs_types_cosmos_tx_v1beta1_tx_js = require("cosmjs-types/cosmos/tx/v1beta1/tx.js");
5
+
6
+ //#region src/mocks/rpc-client.ts
7
+ var import_build = /* @__PURE__ */ require_rolldown_runtime.__toESM(require_index.default, 1);
8
+ /**
9
+ * Generates a synthetic transaction with realistic structure
10
+ */
11
+ function generateMockTx(height, txIndex) {
12
+ const tx = {
13
+ body: {
14
+ messages: [{
15
+ typeUrl: "/cosmos.bank.v1beta1.MsgSend",
16
+ value: new Uint8Array([
17
+ 10,
18
+ 45,
19
+ 99,
20
+ 111,
21
+ 115,
22
+ 109,
23
+ 111,
24
+ 115,
25
+ 49,
26
+ 18,
27
+ 45,
28
+ 99,
29
+ 111,
30
+ 115,
31
+ 109,
32
+ 111,
33
+ 115,
34
+ 50
35
+ ])
36
+ }],
37
+ memo: `Mock tx ${height}-${txIndex}`,
38
+ timeoutHeight: BigInt(height + 100),
39
+ extensionOptions: [],
40
+ nonCriticalExtensionOptions: []
41
+ },
42
+ authInfo: {
43
+ signerInfos: [{
44
+ publicKey: {
45
+ typeUrl: "/cosmos.crypto.secp256k1.PubKey",
46
+ value: new Uint8Array(33)
47
+ },
48
+ modeInfo: { single: { mode: 1 } },
49
+ sequence: BigInt(txIndex)
50
+ }],
51
+ fee: {
52
+ amount: [{
53
+ denom: "uatom",
54
+ amount: "5000"
55
+ }],
56
+ gasLimit: BigInt(2e5),
57
+ payer: "",
58
+ granter: ""
59
+ },
60
+ tip: void 0
61
+ },
62
+ signatures: [new Uint8Array(64)]
63
+ };
64
+ return cosmjs_types_cosmos_tx_v1beta1_tx_js.Tx.encode(tx).finish();
65
+ }
66
+ var MockRpcClient = class {
67
+ chainId;
68
+ startHeight;
69
+ endHeight;
70
+ txPerBlock;
71
+ constructor({ chainId, startHeight, endHeight, txPerBlock }) {
72
+ this.chainId = chainId;
73
+ this.startHeight = startHeight;
74
+ this.endHeight = endHeight;
75
+ this.txPerBlock = txPerBlock;
76
+ }
77
+ async block(height) {
78
+ const txs = [];
79
+ for (let i = 0; i < this.txPerBlock; i++) txs.push(generateMockTx(height, i));
80
+ return {
81
+ block: {
82
+ header: {
83
+ height,
84
+ version: {
85
+ block: 11,
86
+ app: 0
87
+ },
88
+ time: (0, __cosmjs_tendermint_rpc.fromRfc3339WithNanoseconds)((/* @__PURE__ */ new Date()).toISOString()),
89
+ chainId: this.chainId,
90
+ lastBlockId: null,
91
+ lastCommitHash: new Uint8Array(),
92
+ dataHash: new Uint8Array(),
93
+ validatorsHash: new Uint8Array(),
94
+ nextValidatorsHash: new Uint8Array(),
95
+ consensusHash: new Uint8Array(),
96
+ appHash: new Uint8Array(),
97
+ lastResultsHash: new Uint8Array(),
98
+ evidenceHash: new Uint8Array(),
99
+ proposerAddress: new Uint8Array()
100
+ },
101
+ txs,
102
+ evidence: [],
103
+ lastCommit: {
104
+ height: height - 1,
105
+ round: 0,
106
+ blockId: {
107
+ hash: new Uint8Array(),
108
+ parts: {
109
+ total: 0,
110
+ hash: new Uint8Array()
111
+ }
112
+ },
113
+ signatures: [{
114
+ blockIdFlag: 2,
115
+ validatorAddress: (0, import_build.fromHex)("D68EEC0D2E8248F1EC64CDB585EDB61ECA432BD8"),
116
+ timestamp: (0, __cosmjs_tendermint_rpc.fromRfc3339WithNanoseconds)((/* @__PURE__ */ new Date()).toISOString()),
117
+ signature: (0, import_build.fromBase64)("Z6d2P35dI6qBzfPdyIZvmZi7Imo2FmQ5kNSnpVb2UvCj0aSjRCtS59BauJFB6FDHPluOUYoz0rJ4jiOnNXh9AA==")
118
+ }]
119
+ }
120
+ },
121
+ blockId: {
122
+ hash: new Uint8Array(),
123
+ parts: {
124
+ total: 0,
125
+ hash: new Uint8Array()
126
+ }
127
+ }
128
+ };
129
+ }
130
+ async status() {
131
+ return {
132
+ nodeInfo: {
133
+ protocolVersion: {
134
+ p2p: 8,
135
+ block: 11,
136
+ app: 0
137
+ },
138
+ id: (0, import_build.fromHex)("d2982128df6a29e700980f325b0444e301c604d7"),
139
+ listenAddr: "tcp://0.0.0.0:26656",
140
+ network: "atomone-1",
141
+ version: "0.37.15",
142
+ channels: "40202122233038606100",
143
+ moniker: "node",
144
+ other: new Map([["txIndex", "on"], ["rpcAddress", "tcp://0.0.0.0:26657"]])
145
+ },
146
+ syncInfo: {
147
+ latestBlockHash: (0, import_build.fromHex)("3F3F7A6F11FA91856BE440F8C78262307CAEAB122720D61CB14B118EF89892B5"),
148
+ latestAppHash: (0, import_build.fromHex)("FF91D618633BDD5395763F34805E6DACF6BBFB642A2E787677BF28B39427F289"),
149
+ latestBlockHeight: this.endHeight,
150
+ latestBlockTime: (0, __cosmjs_tendermint_rpc.fromRfc3339WithNanoseconds)("2025-11-06T12:58:21.271608775Z"),
151
+ earliestBlockHash: (0, import_build.fromHex)("54473B6F28CAA85F5664F7CA3F2EEE49CD9857BDE41E0BF604B1A1DE93CBFEFF"),
152
+ earliestAppHash: (0, import_build.fromHex)("24DFB6C312A7FD4B753444F5CD5FAC4D239BAEC09B6A79BB3D04B21B0BC1FC53"),
153
+ earliestBlockHeight: 1,
154
+ earliestBlockTime: (0, __cosmjs_tendermint_rpc.fromRfc3339WithNanoseconds)("2025-05-28T07:58:54.905470438Z"),
155
+ catchingUp: false
156
+ },
157
+ validatorInfo: {
158
+ address: (0, import_build.fromHex)("1C7CE0213D96CD5578249740DC31A9D8E4D7A226"),
159
+ pubkey: {
160
+ algorithm: "ed25519",
161
+ data: (0, import_build.fromBase64)("+KoTmCU6lo7NCtsfPCYpdNf0fs3aScZ8CtdgHTR/oGs=")
162
+ },
163
+ votingPower: 0n
164
+ }
165
+ };
166
+ }
167
+ subscribeNewBlock() {
168
+ return {
169
+ addListener: (..._args) => {},
170
+ removeListener: (..._args) => {}
171
+ };
172
+ }
173
+ async disconnect() {}
174
+ async blockResults(height) {
175
+ const results = [];
176
+ for (let i = 0; i < this.txPerBlock; i++) results.push({
177
+ code: 0,
178
+ data: Buffer.from("success"),
179
+ log: JSON.stringify([{
180
+ msg_index: 0,
181
+ events: []
182
+ }]),
183
+ gasWanted: BigInt(2e5),
184
+ gasUsed: BigInt(15e4),
185
+ events: [],
186
+ codespace: ""
187
+ });
188
+ return {
189
+ height,
190
+ results,
191
+ beginBlockEvents: [],
192
+ endBlockEvents: [],
193
+ validatorUpdates: [],
194
+ consensusUpdates: void 0
195
+ };
196
+ }
197
+ async connect() {}
198
+ };
199
+ /**
200
+ * Factory function to create a mock RPC client
201
+ */
202
+ function createMockRpcClient(config) {
203
+ return new MockRpcClient(config);
204
+ }
205
+
206
+ //#endregion
207
+ exports.MockRpcClient = MockRpcClient;
208
+ exports.createMockRpcClient = createMockRpcClient;
209
+ //# sourceMappingURL=rpc-client.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-client.cjs","names":["tx: Tx","Tx","txs: Uint8Array[]","results: TxData[]"],"sources":["../../src/mocks/rpc-client.ts"],"sourcesContent":["/**\n * Mock RPC client for benchmarking and testing\n * Generates synthetic blockchain data without requiring an actual RPC node\n */\nimport {\n fromBase64, fromHex,\n} from \"@cosmjs/encoding\";\nimport {\n BlockResponse,\n BlockResultsResponse,\n CometClient,\n fromRfc3339WithNanoseconds,\n StatusResponse,\n TxData,\n} from \"@cosmjs/tendermint-rpc\";\nimport {\n Tx,\n} from \"cosmjs-types/cosmos/tx/v1beta1/tx.js\";\n\n/** Configuration for mock data generation */\nexport interface MockRpcConfig {\n /** Chain ID for generated blocks */\n chainId: string\n /** Number of transactions per block */\n txPerBlock: number\n /** Starting block height */\n startHeight: number\n /** Latest block height available */\n endHeight: number\n}\n/**\n * Generates a synthetic transaction with realistic structure\n */\nfunction generateMockTx(height: number, txIndex: number): Uint8Array {\n const tx: Tx = {\n body: {\n messages: [\n {\n typeUrl: \"/cosmos.bank.v1beta1.MsgSend\",\n value: new Uint8Array([10, 45, 99, 111, 115, 109, 111, 115, 49, 18, 45, 99, 111, 115, 109, 111, 115, 50]),\n },\n ],\n memo: `Mock tx ${height}-${txIndex}`,\n timeoutHeight: BigInt(height + 100),\n extensionOptions: [],\n nonCriticalExtensionOptions: [],\n },\n authInfo: {\n signerInfos: [\n {\n publicKey: {\n typeUrl: \"/cosmos.crypto.secp256k1.PubKey\",\n value: new Uint8Array(33),\n },\n modeInfo: {\n single: {\n mode: 1,\n },\n },\n sequence: BigInt(txIndex),\n },\n ],\n fee: {\n amount: [\n {\n denom: \"uatom\",\n amount: \"5000\",\n },\n ],\n gasLimit: BigInt(200000),\n payer: \"\",\n granter: \"\",\n },\n tip: undefined,\n },\n signatures: [new Uint8Array(64)],\n };\n\n return Tx.encode(tx).finish();\n}\n\nexport class MockRpcClient {\n private chainId: string;\n private startHeight: number;\n private endHeight: number;\n private txPerBlock: number;\n\n constructor({\n chainId,\n startHeight,\n endHeight,\n txPerBlock,\n }: {\n chainId: string\n startHeight: number\n endHeight: number\n txPerBlock: number\n }) {\n this.chainId = chainId;\n this.startHeight = startHeight;\n this.endHeight = endHeight;\n this.txPerBlock = txPerBlock;\n }\n\n async block(height: number): Promise<BlockResponse> {\n const txs: Uint8Array[] = [];\n for (let i = 0; i < this.txPerBlock; i++) {\n txs.push(generateMockTx(height, i));\n }\n return {\n block: {\n header: {\n height: height,\n version: {\n block: 11,\n app: 0,\n },\n time: fromRfc3339WithNanoseconds(new Date().toISOString()),\n chainId: this.chainId,\n lastBlockId: null,\n lastCommitHash: new Uint8Array(),\n dataHash: new Uint8Array(),\n validatorsHash: new Uint8Array(),\n nextValidatorsHash: new Uint8Array(),\n consensusHash: new Uint8Array(),\n appHash: new Uint8Array(),\n lastResultsHash: new Uint8Array(),\n evidenceHash: new Uint8Array(),\n proposerAddress: new Uint8Array(),\n },\n txs: txs,\n evidence: [],\n lastCommit: {\n height: height - 1,\n round: 0,\n blockId: {\n hash: new Uint8Array(),\n parts: {\n total: 0,\n hash: new Uint8Array(),\n },\n },\n signatures: [\n {\n blockIdFlag: 2,\n validatorAddress: fromHex(\"D68EEC0D2E8248F1EC64CDB585EDB61ECA432BD8\"),\n timestamp: fromRfc3339WithNanoseconds(new Date().toISOString()),\n signature: fromBase64(\"Z6d2P35dI6qBzfPdyIZvmZi7Imo2FmQ5kNSnpVb2UvCj0aSjRCtS59BauJFB6FDHPluOUYoz0rJ4jiOnNXh9AA==\"),\n },\n ],\n },\n },\n blockId: {\n hash: new Uint8Array(),\n parts: {\n total: 0,\n hash: new Uint8Array(),\n },\n },\n };\n }\n\n async status(): Promise<StatusResponse> {\n return {\n nodeInfo: {\n protocolVersion: {\n p2p: 8,\n block: 11,\n app: 0,\n },\n id: fromHex(\"d2982128df6a29e700980f325b0444e301c604d7\"),\n listenAddr: \"tcp://0.0.0.0:26656\",\n network: \"atomone-1\",\n version: \"0.37.15\",\n channels: \"40202122233038606100\",\n moniker: \"node\",\n other: new Map([[\"txIndex\", \"on\"], [\"rpcAddress\", \"tcp://0.0.0.0:26657\"]]),\n },\n syncInfo: {\n latestBlockHash: fromHex(\"3F3F7A6F11FA91856BE440F8C78262307CAEAB122720D61CB14B118EF89892B5\"),\n latestAppHash: fromHex(\"FF91D618633BDD5395763F34805E6DACF6BBFB642A2E787677BF28B39427F289\"),\n latestBlockHeight: this.endHeight,\n latestBlockTime: fromRfc3339WithNanoseconds(\"2025-11-06T12:58:21.271608775Z\"),\n earliestBlockHash: fromHex(\"54473B6F28CAA85F5664F7CA3F2EEE49CD9857BDE41E0BF604B1A1DE93CBFEFF\"),\n earliestAppHash: fromHex(\"24DFB6C312A7FD4B753444F5CD5FAC4D239BAEC09B6A79BB3D04B21B0BC1FC53\"),\n earliestBlockHeight: 1,\n earliestBlockTime: fromRfc3339WithNanoseconds(\"2025-05-28T07:58:54.905470438Z\"),\n catchingUp: false,\n },\n validatorInfo: {\n address: fromHex(\"1C7CE0213D96CD5578249740DC31A9D8E4D7A226\"),\n pubkey: {\n algorithm: \"ed25519\",\n data: fromBase64(\"+KoTmCU6lo7NCtsfPCYpdNf0fs3aScZ8CtdgHTR/oGs=\"),\n },\n votingPower: 0n,\n },\n };\n }\n\n subscribeNewBlock() {\n return {\n addListener: (..._args: unknown[]) => {},\n removeListener: (..._args: unknown[]) => {},\n } as ReturnType<CometClient[\"subscribeNewBlock\"]>;\n }\n\n async disconnect(): Promise<void> {\n // No-op for mock\n }\n\n async blockResults(height: number): Promise<BlockResultsResponse> {\n const results: TxData[] = [];\n for (let i = 0; i < this.txPerBlock; i++) {\n results.push({\n code: 0,\n data: Buffer.from(\"success\"),\n log: JSON.stringify([\n {\n msg_index: 0,\n events: [],\n },\n ]),\n gasWanted: BigInt(200000),\n gasUsed: BigInt(150000),\n events: [],\n codespace: \"\",\n });\n }\n return {\n height: height,\n results: results,\n beginBlockEvents: [],\n endBlockEvents: [],\n validatorUpdates: [],\n consensusUpdates: undefined,\n };\n }\n\n async connect(): Promise<void> {\n }\n}\n\n/**\n * Factory function to create a mock RPC client\n */\nexport function createMockRpcClient(config: MockRpcConfig): CometClient {\n return new MockRpcClient(config) as unknown as CometClient;\n}\n"],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { BlockResponse, BlockResultsResponse, CometClient, StatusResponse } from "@cosmjs/tendermint-rpc";
2
+
3
+ //#region src/mocks/rpc-client.d.ts
4
+ /** Configuration for mock data generation */
5
+ interface MockRpcConfig {
6
+ /** Chain ID for generated blocks */
7
+ chainId: string;
8
+ /** Number of transactions per block */
9
+ txPerBlock: number;
10
+ /** Starting block height */
11
+ startHeight: number;
12
+ /** Latest block height available */
13
+ endHeight: number;
14
+ }
15
+ declare class MockRpcClient {
16
+ private chainId;
17
+ private startHeight;
18
+ private endHeight;
19
+ private txPerBlock;
20
+ constructor({
21
+ chainId,
22
+ startHeight,
23
+ endHeight,
24
+ txPerBlock
25
+ }: {
26
+ chainId: string;
27
+ startHeight: number;
28
+ endHeight: number;
29
+ txPerBlock: number;
30
+ });
31
+ block(height: number): Promise<BlockResponse>;
32
+ status(): Promise<StatusResponse>;
33
+ subscribeNewBlock(): ReturnType<CometClient["subscribeNewBlock"]>;
34
+ disconnect(): Promise<void>;
35
+ blockResults(height: number): Promise<BlockResultsResponse>;
36
+ connect(): Promise<void>;
37
+ }
38
+ /**
39
+ * Factory function to create a mock RPC client
40
+ */
41
+ declare function createMockRpcClient(config: MockRpcConfig): CometClient;
42
+ //#endregion
43
+ export { MockRpcClient, MockRpcConfig, createMockRpcClient };
44
+ //# sourceMappingURL=rpc-client.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-client.d.cts","names":[],"sources":["../../src/mocks/rpc-client.ts"],"sourcesContent":[],"mappings":";;;;UAoBiB,aAAA;EAAA;EA6DJ,OAAA,EAAA,MAAA;EAOT;EACA,UAAA,EAAA,MAAA;EACA;EACA,WAAA,EAAA,MAAA;EAamC;EAAR,SAAA,EAAA,MAAA;;AA0Db,cAjFL,aAAA,CAiFK;EA0CE,QAAA,OAAA;EAAX,QAAA,WAAA;EAGa,QAAA,SAAA;EAIwB,QAAA,UAAA;EAAR,WAAA,CAAA;IAAA,OAAA;IAAA,WAAA;IAAA,SAAA;IAAA;GAAA,EAAA;IA4BnB,OAAA,EAAA,MAAA;IAAO,WAAA,EAAA,MAAA;IAOV,SAAA,EAAA,MAAA;;;yBA9Ie,QAAQ;YA0DrB,QAAQ;uBA0CjB,WAAW;gBAGE;gCAIgB,QAAQ;aA4B3B;;;;;iBAOH,mBAAA,SAA4B,gBAAgB"}
@@ -0,0 +1,44 @@
1
+ import { BlockResponse, BlockResultsResponse, CometClient, StatusResponse } from "@cosmjs/tendermint-rpc";
2
+
3
+ //#region src/mocks/rpc-client.d.ts
4
+ /** Configuration for mock data generation */
5
+ interface MockRpcConfig {
6
+ /** Chain ID for generated blocks */
7
+ chainId: string;
8
+ /** Number of transactions per block */
9
+ txPerBlock: number;
10
+ /** Starting block height */
11
+ startHeight: number;
12
+ /** Latest block height available */
13
+ endHeight: number;
14
+ }
15
+ declare class MockRpcClient {
16
+ private chainId;
17
+ private startHeight;
18
+ private endHeight;
19
+ private txPerBlock;
20
+ constructor({
21
+ chainId,
22
+ startHeight,
23
+ endHeight,
24
+ txPerBlock
25
+ }: {
26
+ chainId: string;
27
+ startHeight: number;
28
+ endHeight: number;
29
+ txPerBlock: number;
30
+ });
31
+ block(height: number): Promise<BlockResponse>;
32
+ status(): Promise<StatusResponse>;
33
+ subscribeNewBlock(): ReturnType<CometClient["subscribeNewBlock"]>;
34
+ disconnect(): Promise<void>;
35
+ blockResults(height: number): Promise<BlockResultsResponse>;
36
+ connect(): Promise<void>;
37
+ }
38
+ /**
39
+ * Factory function to create a mock RPC client
40
+ */
41
+ declare function createMockRpcClient(config: MockRpcConfig): CometClient;
42
+ //#endregion
43
+ export { MockRpcClient, MockRpcConfig, createMockRpcClient };
44
+ //# sourceMappingURL=rpc-client.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-client.d.mts","names":[],"sources":["../../src/mocks/rpc-client.ts"],"sourcesContent":[],"mappings":";;;;UAoBiB,aAAA;EAAA;EA6DJ,OAAA,EAAA,MAAA;EAOT;EACA,UAAA,EAAA,MAAA;EACA;EACA,WAAA,EAAA,MAAA;EAamC;EAAR,SAAA,EAAA,MAAA;;AA0Db,cAjFL,aAAA,CAiFK;EA0CE,QAAA,OAAA;EAAX,QAAA,WAAA;EAGa,QAAA,SAAA;EAIwB,QAAA,UAAA;EAAR,WAAA,CAAA;IAAA,OAAA;IAAA,WAAA;IAAA,SAAA;IAAA;GAAA,EAAA;IA4BnB,OAAA,EAAA,MAAA;IAAO,WAAA,EAAA,MAAA;IAOV,SAAA,EAAA,MAAA;;;yBA9Ie,QAAQ;YA0DrB,QAAQ;uBA0CjB,WAAW;gBAGE;gCAIgB,QAAQ;aA4B3B;;;;;iBAOH,mBAAA,SAA4B,gBAAgB"}
@@ -0,0 +1,208 @@
1
+ import { __toESM } from "../_virtual/rolldown_runtime.mjs";
2
+ import { require_build } from "../node_modules/.pnpm/@cosmjs_encoding@0.36.0/node_modules/@cosmjs/encoding/build/index.mjs";
3
+ import { fromRfc3339WithNanoseconds } from "@cosmjs/tendermint-rpc";
4
+ import { Tx } from "cosmjs-types/cosmos/tx/v1beta1/tx.js";
5
+
6
+ //#region src/mocks/rpc-client.ts
7
+ var import_build = /* @__PURE__ */ __toESM(require_build(), 1);
8
+ /**
9
+ * Generates a synthetic transaction with realistic structure
10
+ */
11
+ function generateMockTx(height, txIndex) {
12
+ const tx = {
13
+ body: {
14
+ messages: [{
15
+ typeUrl: "/cosmos.bank.v1beta1.MsgSend",
16
+ value: new Uint8Array([
17
+ 10,
18
+ 45,
19
+ 99,
20
+ 111,
21
+ 115,
22
+ 109,
23
+ 111,
24
+ 115,
25
+ 49,
26
+ 18,
27
+ 45,
28
+ 99,
29
+ 111,
30
+ 115,
31
+ 109,
32
+ 111,
33
+ 115,
34
+ 50
35
+ ])
36
+ }],
37
+ memo: `Mock tx ${height}-${txIndex}`,
38
+ timeoutHeight: BigInt(height + 100),
39
+ extensionOptions: [],
40
+ nonCriticalExtensionOptions: []
41
+ },
42
+ authInfo: {
43
+ signerInfos: [{
44
+ publicKey: {
45
+ typeUrl: "/cosmos.crypto.secp256k1.PubKey",
46
+ value: new Uint8Array(33)
47
+ },
48
+ modeInfo: { single: { mode: 1 } },
49
+ sequence: BigInt(txIndex)
50
+ }],
51
+ fee: {
52
+ amount: [{
53
+ denom: "uatom",
54
+ amount: "5000"
55
+ }],
56
+ gasLimit: BigInt(2e5),
57
+ payer: "",
58
+ granter: ""
59
+ },
60
+ tip: void 0
61
+ },
62
+ signatures: [new Uint8Array(64)]
63
+ };
64
+ return Tx.encode(tx).finish();
65
+ }
66
+ var MockRpcClient = class {
67
+ chainId;
68
+ startHeight;
69
+ endHeight;
70
+ txPerBlock;
71
+ constructor({ chainId, startHeight, endHeight, txPerBlock }) {
72
+ this.chainId = chainId;
73
+ this.startHeight = startHeight;
74
+ this.endHeight = endHeight;
75
+ this.txPerBlock = txPerBlock;
76
+ }
77
+ async block(height) {
78
+ const txs = [];
79
+ for (let i = 0; i < this.txPerBlock; i++) txs.push(generateMockTx(height, i));
80
+ return {
81
+ block: {
82
+ header: {
83
+ height,
84
+ version: {
85
+ block: 11,
86
+ app: 0
87
+ },
88
+ time: fromRfc3339WithNanoseconds((/* @__PURE__ */ new Date()).toISOString()),
89
+ chainId: this.chainId,
90
+ lastBlockId: null,
91
+ lastCommitHash: new Uint8Array(),
92
+ dataHash: new Uint8Array(),
93
+ validatorsHash: new Uint8Array(),
94
+ nextValidatorsHash: new Uint8Array(),
95
+ consensusHash: new Uint8Array(),
96
+ appHash: new Uint8Array(),
97
+ lastResultsHash: new Uint8Array(),
98
+ evidenceHash: new Uint8Array(),
99
+ proposerAddress: new Uint8Array()
100
+ },
101
+ txs,
102
+ evidence: [],
103
+ lastCommit: {
104
+ height: height - 1,
105
+ round: 0,
106
+ blockId: {
107
+ hash: new Uint8Array(),
108
+ parts: {
109
+ total: 0,
110
+ hash: new Uint8Array()
111
+ }
112
+ },
113
+ signatures: [{
114
+ blockIdFlag: 2,
115
+ validatorAddress: (0, import_build.fromHex)("D68EEC0D2E8248F1EC64CDB585EDB61ECA432BD8"),
116
+ timestamp: fromRfc3339WithNanoseconds((/* @__PURE__ */ new Date()).toISOString()),
117
+ signature: (0, import_build.fromBase64)("Z6d2P35dI6qBzfPdyIZvmZi7Imo2FmQ5kNSnpVb2UvCj0aSjRCtS59BauJFB6FDHPluOUYoz0rJ4jiOnNXh9AA==")
118
+ }]
119
+ }
120
+ },
121
+ blockId: {
122
+ hash: new Uint8Array(),
123
+ parts: {
124
+ total: 0,
125
+ hash: new Uint8Array()
126
+ }
127
+ }
128
+ };
129
+ }
130
+ async status() {
131
+ return {
132
+ nodeInfo: {
133
+ protocolVersion: {
134
+ p2p: 8,
135
+ block: 11,
136
+ app: 0
137
+ },
138
+ id: (0, import_build.fromHex)("d2982128df6a29e700980f325b0444e301c604d7"),
139
+ listenAddr: "tcp://0.0.0.0:26656",
140
+ network: "atomone-1",
141
+ version: "0.37.15",
142
+ channels: "40202122233038606100",
143
+ moniker: "node",
144
+ other: new Map([["txIndex", "on"], ["rpcAddress", "tcp://0.0.0.0:26657"]])
145
+ },
146
+ syncInfo: {
147
+ latestBlockHash: (0, import_build.fromHex)("3F3F7A6F11FA91856BE440F8C78262307CAEAB122720D61CB14B118EF89892B5"),
148
+ latestAppHash: (0, import_build.fromHex)("FF91D618633BDD5395763F34805E6DACF6BBFB642A2E787677BF28B39427F289"),
149
+ latestBlockHeight: this.endHeight,
150
+ latestBlockTime: fromRfc3339WithNanoseconds("2025-11-06T12:58:21.271608775Z"),
151
+ earliestBlockHash: (0, import_build.fromHex)("54473B6F28CAA85F5664F7CA3F2EEE49CD9857BDE41E0BF604B1A1DE93CBFEFF"),
152
+ earliestAppHash: (0, import_build.fromHex)("24DFB6C312A7FD4B753444F5CD5FAC4D239BAEC09B6A79BB3D04B21B0BC1FC53"),
153
+ earliestBlockHeight: 1,
154
+ earliestBlockTime: fromRfc3339WithNanoseconds("2025-05-28T07:58:54.905470438Z"),
155
+ catchingUp: false
156
+ },
157
+ validatorInfo: {
158
+ address: (0, import_build.fromHex)("1C7CE0213D96CD5578249740DC31A9D8E4D7A226"),
159
+ pubkey: {
160
+ algorithm: "ed25519",
161
+ data: (0, import_build.fromBase64)("+KoTmCU6lo7NCtsfPCYpdNf0fs3aScZ8CtdgHTR/oGs=")
162
+ },
163
+ votingPower: 0n
164
+ }
165
+ };
166
+ }
167
+ subscribeNewBlock() {
168
+ return {
169
+ addListener: (..._args) => {},
170
+ removeListener: (..._args) => {}
171
+ };
172
+ }
173
+ async disconnect() {}
174
+ async blockResults(height) {
175
+ const results = [];
176
+ for (let i = 0; i < this.txPerBlock; i++) results.push({
177
+ code: 0,
178
+ data: Buffer.from("success"),
179
+ log: JSON.stringify([{
180
+ msg_index: 0,
181
+ events: []
182
+ }]),
183
+ gasWanted: BigInt(2e5),
184
+ gasUsed: BigInt(15e4),
185
+ events: [],
186
+ codespace: ""
187
+ });
188
+ return {
189
+ height,
190
+ results,
191
+ beginBlockEvents: [],
192
+ endBlockEvents: [],
193
+ validatorUpdates: [],
194
+ consensusUpdates: void 0
195
+ };
196
+ }
197
+ async connect() {}
198
+ };
199
+ /**
200
+ * Factory function to create a mock RPC client
201
+ */
202
+ function createMockRpcClient(config) {
203
+ return new MockRpcClient(config);
204
+ }
205
+
206
+ //#endregion
207
+ export { MockRpcClient, createMockRpcClient };
208
+ //# sourceMappingURL=rpc-client.mjs.map