@gzeoneth/gov-tracker 0.2.1-1 → 0.2.1-alpha.cli-preview.f8c3a87

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 (170) hide show
  1. package/README.md +91 -68
  2. package/dist/calldata/index.d.ts +1 -1
  3. package/dist/calldata/index.d.ts.map +1 -1
  4. package/dist/calldata/index.js.map +1 -1
  5. package/dist/calldata/parameter-decoder.d.ts.map +1 -1
  6. package/dist/calldata/parameter-decoder.js +8 -1
  7. package/dist/calldata/parameter-decoder.js.map +1 -1
  8. package/dist/calldata/signature-lookup.d.ts +17 -2
  9. package/dist/calldata/signature-lookup.d.ts.map +1 -1
  10. package/dist/calldata/signature-lookup.js +20 -2
  11. package/dist/calldata/signature-lookup.js.map +1 -1
  12. package/dist/cli/cli.d.ts +21 -0
  13. package/dist/cli/cli.d.ts.map +1 -0
  14. package/dist/cli/{monitor.js → cli.js} +130 -74
  15. package/dist/cli/cli.js.map +1 -0
  16. package/dist/cli/lib/cli.d.ts +6 -1
  17. package/dist/cli/lib/cli.d.ts.map +1 -1
  18. package/dist/cli/lib/cli.js +31 -15
  19. package/dist/cli/lib/cli.js.map +1 -1
  20. package/dist/cli/lib/concurrency.d.ts +20 -0
  21. package/dist/cli/lib/concurrency.d.ts.map +1 -0
  22. package/dist/cli/lib/concurrency.js +32 -0
  23. package/dist/cli/lib/concurrency.js.map +1 -0
  24. package/dist/cli/tui/App.d.ts +13 -0
  25. package/dist/cli/tui/App.d.ts.map +1 -0
  26. package/dist/cli/tui/App.js +92 -0
  27. package/dist/cli/tui/App.js.map +1 -0
  28. package/dist/cli/tui/components/Header.d.ts +20 -0
  29. package/dist/cli/tui/components/Header.d.ts.map +1 -0
  30. package/dist/cli/tui/components/Header.js +57 -0
  31. package/dist/cli/tui/components/Header.js.map +1 -0
  32. package/dist/cli/tui/components/KeyHelp.d.ts +11 -0
  33. package/dist/cli/tui/components/KeyHelp.d.ts.map +1 -0
  34. package/dist/cli/tui/components/KeyHelp.js +82 -0
  35. package/dist/cli/tui/components/KeyHelp.js.map +1 -0
  36. package/dist/cli/tui/components/ProposalRow.d.ts +11 -0
  37. package/dist/cli/tui/components/ProposalRow.d.ts.map +1 -0
  38. package/dist/cli/tui/components/ProposalRow.js +66 -0
  39. package/dist/cli/tui/components/ProposalRow.js.map +1 -0
  40. package/dist/cli/tui/components/StageRow.d.ts +12 -0
  41. package/dist/cli/tui/components/StageRow.d.ts.map +1 -0
  42. package/dist/cli/tui/components/StageRow.js +83 -0
  43. package/dist/cli/tui/components/StageRow.js.map +1 -0
  44. package/dist/cli/tui/components/StatusBadge.d.ts +12 -0
  45. package/dist/cli/tui/components/StatusBadge.d.ts.map +1 -0
  46. package/dist/cli/tui/components/StatusBadge.js +27 -0
  47. package/dist/cli/tui/components/StatusBadge.js.map +1 -0
  48. package/dist/cli/tui/components/ViewLayout.d.ts +18 -0
  49. package/dist/cli/tui/components/ViewLayout.d.ts.map +1 -0
  50. package/dist/cli/tui/components/ViewLayout.js +21 -0
  51. package/dist/cli/tui/components/ViewLayout.js.map +1 -0
  52. package/dist/cli/tui/hooks/index.d.ts +10 -0
  53. package/dist/cli/tui/hooks/index.d.ts.map +1 -0
  54. package/dist/cli/tui/hooks/index.js +14 -0
  55. package/dist/cli/tui/hooks/index.js.map +1 -0
  56. package/dist/cli/tui/hooks/useCache.d.ts +12 -0
  57. package/dist/cli/tui/hooks/useCache.d.ts.map +1 -0
  58. package/dist/cli/tui/hooks/useCache.js +86 -0
  59. package/dist/cli/tui/hooks/useCache.js.map +1 -0
  60. package/dist/cli/tui/hooks/useNavigation.d.ts +34 -0
  61. package/dist/cli/tui/hooks/useNavigation.d.ts.map +1 -0
  62. package/dist/cli/tui/hooks/useNavigation.js +219 -0
  63. package/dist/cli/tui/hooks/useNavigation.js.map +1 -0
  64. package/dist/cli/tui/hooks/useProposals.d.ts +10 -0
  65. package/dist/cli/tui/hooks/useProposals.d.ts.map +1 -0
  66. package/dist/cli/tui/hooks/useProposals.js +159 -0
  67. package/dist/cli/tui/hooks/useProposals.js.map +1 -0
  68. package/dist/cli/tui/hooks/useStageCalldata.d.ts +17 -0
  69. package/dist/cli/tui/hooks/useStageCalldata.d.ts.map +1 -0
  70. package/dist/cli/tui/hooks/useStageCalldata.js +50 -0
  71. package/dist/cli/tui/hooks/useStageCalldata.js.map +1 -0
  72. package/dist/cli/tui/hooks/useTracker.d.ts +28 -0
  73. package/dist/cli/tui/hooks/useTracker.d.ts.map +1 -0
  74. package/dist/cli/tui/hooks/useTracker.js +165 -0
  75. package/dist/cli/tui/hooks/useTracker.js.map +1 -0
  76. package/dist/cli/tui/index.d.ts +14 -0
  77. package/dist/cli/tui/index.d.ts.map +1 -0
  78. package/dist/cli/tui/index.js +68 -0
  79. package/dist/cli/tui/index.js.map +1 -0
  80. package/dist/cli/tui/ink-wrapper.d.ts +43 -0
  81. package/dist/cli/tui/ink-wrapper.d.ts.map +1 -0
  82. package/dist/cli/tui/ink-wrapper.js +41 -0
  83. package/dist/cli/tui/ink-wrapper.js.map +1 -0
  84. package/dist/cli/tui/types.d.ts +34 -0
  85. package/dist/cli/tui/types.d.ts.map +1 -0
  86. package/dist/cli/tui/types.js +6 -0
  87. package/dist/cli/tui/types.js.map +1 -0
  88. package/dist/cli/tui/utils/index.d.ts +4 -0
  89. package/dist/cli/tui/utils/index.d.ts.map +1 -0
  90. package/dist/cli/tui/utils/index.js +10 -0
  91. package/dist/cli/tui/utils/index.js.map +1 -0
  92. package/dist/cli/tui/utils/terminal.d.ts +18 -0
  93. package/dist/cli/tui/utils/terminal.d.ts.map +1 -0
  94. package/dist/cli/tui/utils/terminal.js +26 -0
  95. package/dist/cli/tui/utils/terminal.js.map +1 -0
  96. package/dist/cli/tui/utils/text.d.ts +12 -0
  97. package/dist/cli/tui/utils/text.d.ts.map +1 -0
  98. package/dist/cli/tui/utils/text.js +28 -0
  99. package/dist/cli/tui/utils/text.js.map +1 -0
  100. package/dist/cli/tui/views/CalldataView.d.ts +12 -0
  101. package/dist/cli/tui/views/CalldataView.d.ts.map +1 -0
  102. package/dist/cli/tui/views/CalldataView.js +180 -0
  103. package/dist/cli/tui/views/CalldataView.js.map +1 -0
  104. package/dist/cli/tui/views/DescriptionView.d.ts +12 -0
  105. package/dist/cli/tui/views/DescriptionView.d.ts.map +1 -0
  106. package/dist/cli/tui/views/DescriptionView.js +174 -0
  107. package/dist/cli/tui/views/DescriptionView.js.map +1 -0
  108. package/dist/cli/tui/views/ElectionView.d.ts +12 -0
  109. package/dist/cli/tui/views/ElectionView.d.ts.map +1 -0
  110. package/dist/cli/tui/views/ElectionView.js +159 -0
  111. package/dist/cli/tui/views/ElectionView.js.map +1 -0
  112. package/dist/cli/tui/views/ProposalDetail.d.ts +14 -0
  113. package/dist/cli/tui/views/ProposalDetail.d.ts.map +1 -0
  114. package/dist/cli/tui/views/ProposalDetail.js +172 -0
  115. package/dist/cli/tui/views/ProposalDetail.js.map +1 -0
  116. package/dist/cli/tui/views/ProposalList.d.ts +17 -0
  117. package/dist/cli/tui/views/ProposalList.d.ts.map +1 -0
  118. package/dist/cli/tui/views/ProposalList.js +111 -0
  119. package/dist/cli/tui/views/ProposalList.js.map +1 -0
  120. package/dist/cli/tui/views/SimulationView.d.ts +12 -0
  121. package/dist/cli/tui/views/SimulationView.d.ts.map +1 -0
  122. package/dist/cli/tui/views/SimulationView.js +93 -0
  123. package/dist/cli/tui/views/SimulationView.js.map +1 -0
  124. package/dist/cli/tui/views/StageView.d.ts +12 -0
  125. package/dist/cli/tui/views/StageView.d.ts.map +1 -0
  126. package/dist/cli/tui/views/StageView.js +199 -0
  127. package/dist/cli/tui/views/StageView.js.map +1 -0
  128. package/dist/constants.d.ts +1 -0
  129. package/dist/constants.d.ts.map +1 -1
  130. package/dist/constants.js +1 -0
  131. package/dist/constants.js.map +1 -1
  132. package/dist/data/bundled-cache.json +6651 -2485
  133. package/dist/discovery/governor-discovery.d.ts.map +1 -1
  134. package/dist/discovery/governor-discovery.js +2 -1
  135. package/dist/discovery/governor-discovery.js.map +1 -1
  136. package/dist/index.d.ts +22 -3
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +28 -3
  139. package/dist/index.js.map +1 -1
  140. package/dist/stages/l2-to-l1-message.d.ts +5 -0
  141. package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
  142. package/dist/stages/l2-to-l1-message.js +73 -7
  143. package/dist/stages/l2-to-l1-message.js.map +1 -1
  144. package/dist/stages/timelock.d.ts.map +1 -1
  145. package/dist/stages/timelock.js +9 -3
  146. package/dist/stages/timelock.js.map +1 -1
  147. package/dist/stages/utils.d.ts +5 -2
  148. package/dist/stages/utils.d.ts.map +1 -1
  149. package/dist/stages/utils.js +14 -6
  150. package/dist/stages/utils.js.map +1 -1
  151. package/dist/tracker/cache.d.ts +27 -0
  152. package/dist/tracker/cache.d.ts.map +1 -1
  153. package/dist/tracker/cache.js +46 -2
  154. package/dist/tracker/cache.js.map +1 -1
  155. package/dist/tracker/execute.d.ts.map +1 -1
  156. package/dist/tracker/execute.js +25 -1
  157. package/dist/tracker/execute.js.map +1 -1
  158. package/dist/types/stages.d.ts +15 -2
  159. package/dist/types/stages.d.ts.map +1 -1
  160. package/dist/types/stages.js.map +1 -1
  161. package/dist/types/tracking.d.ts +4 -0
  162. package/dist/types/tracking.d.ts.map +1 -1
  163. package/dist/utils/sanitize.d.ts +28 -0
  164. package/dist/utils/sanitize.d.ts.map +1 -0
  165. package/dist/utils/sanitize.js +52 -0
  166. package/dist/utils/sanitize.js.map +1 -0
  167. package/package.json +28 -16
  168. package/dist/cli/monitor.d.ts +0 -3
  169. package/dist/cli/monitor.d.ts.map +0 -1
  170. package/dist/cli/monitor.js.map +0 -1
package/README.md CHANGED
@@ -9,30 +9,40 @@ Track and execute Arbitrum DAO governance proposal lifecycle stages.
9
9
  ## Installation
10
10
 
11
11
  ```bash
12
- yarn add @gzeoneth/gov-tracker
12
+ yarn add @gzeoneth/gov-tracker ethers@^5.8.0
13
13
  ```
14
14
 
15
15
  ## Quick Start
16
16
 
17
17
  ```typescript
18
- import { createTracker, ADDRESSES } from "@gzeoneth/gov-tracker";
18
+ import { ethers } from "ethers";
19
+ import { createTracker, findExecutableStage, ADDRESSES } from "@gzeoneth/gov-tracker";
19
20
 
20
21
  // Use StaticJsonRpcProvider for better performance
21
22
  const tracker = createTracker({
22
- l2Provider: new ethers.providers.StaticJsonRpcProvider(ARB1_RPC_URL),
23
- l1Provider: new ethers.providers.StaticJsonRpcProvider(ETH_RPC_URL),
24
- novaProvider: new ethers.providers.StaticJsonRpcProvider(NOVA_RPC),
23
+ l2Provider: new ethers.providers.StaticJsonRpcProvider(process.env.ARB1_RPC),
24
+ l1Provider: new ethers.providers.StaticJsonRpcProvider(process.env.ETH_RPC),
25
+ novaProvider: new ethers.providers.StaticJsonRpcProvider(process.env.NOVA_RPC),
26
+ cachePath: "./gov-tracker-cache.json",
25
27
  });
26
28
 
27
- // Track from governor proposal
28
- const result = await tracker.trackFromGovernor(ADDRESSES.CONSTITUTIONAL_GOVERNOR, proposalId);
29
-
30
- for (const stage of result.stages) {
29
+ // Track from transaction hash
30
+ const results = await tracker.trackByTxHash("0x...");
31
+ for (const stage of results[0].stages) {
31
32
  console.log(`${stage.type}: ${stage.status}`);
32
33
  }
33
34
 
34
- // Track from transaction hash
35
- const results = await tracker.trackByTxHash("0x...");
35
+ // Or track from governor
36
+ const result = await tracker.trackFromGovernor(ADDRESSES.CONSTITUTIONAL_GOVERNOR, proposalId);
37
+
38
+ // Execute ready stages
39
+ const readyStage = findExecutableStage(results[0].stages);
40
+ if (readyStage) {
41
+ const prep = await tracker.prepareTransaction(readyStage);
42
+ if (prep.success) {
43
+ await signer.sendTransaction(prep.prepared);
44
+ }
45
+ }
36
46
  ```
37
47
 
38
48
  ## Stages
@@ -49,74 +59,75 @@ const results = await tracker.trackByTxHash("0x...");
49
59
 
50
60
  Statuses: `NOT_STARTED`, `PENDING`, `READY`, `COMPLETED`, `FAILED`, `SKIPPED`
51
61
 
52
- ## Execution
53
-
54
- ```typescript
55
- import { findExecutableStage } from "@gzeoneth/gov-tracker";
56
-
57
- const readyStage = findExecutableStage(result.stages);
58
- if (readyStage) {
59
- const prepResult = await tracker.prepareTransaction(readyStage);
60
- if (prepResult.success) {
61
- const { to, data, value, chain } = prepResult.prepared;
62
- const tx = await signer.sendTransaction({ to, data, value });
63
- await tx.wait();
64
- }
65
- }
66
- ```
67
-
68
- ## Calldata Decoding & Simulation
69
-
70
- Decode proposal calldata and prepare simulation data for Tenderly, Foundry, or other tools.
71
-
72
- ```typescript
73
- import {
74
- decodeCalldata,
75
- extractAllSimulationsFromDecoded,
76
- getAddressLabel
77
- } from "@gzeoneth/gov-tracker";
78
-
79
- // Decode proposal actions
80
- const stage = result.stages[0]; // PROPOSAL_CREATED
81
- const { calldatas, targets } = stage.data;
82
-
83
- for (let i = 0; i < calldatas.length; i++) {
84
- const decoded = await decodeCalldata(calldatas[i], targets[i], 0, "arb1");
85
-
86
- console.log(`${decoded.signature}`);
87
- console.log(`Target: ${getAddressLabel(targets[i], "arb1")}`);
88
-
89
- // Extract simulation data
90
- const sims = extractAllSimulationsFromDecoded(decoded, "arb1");
91
- for (const sim of sims) {
92
- console.log(`Network: ${sim.simulation.networkId}`);
93
- console.log(`From: ${sim.simulation.from}`);
94
- console.log(`To: ${sim.simulation.to}`);
95
- }
96
- }
97
- ```
98
-
99
- See [Examples](./docs/EXAMPLES.md#calldata-decoding--simulation) for Tenderly and Foundry integration.
100
-
101
62
  ## CLI
102
63
 
103
64
  ```bash
104
- # Track a proposal by transaction hash
65
+ # Track a proposal
105
66
  npx @gzeoneth/gov-tracker track 0x...
106
67
 
107
- # Decode and inspect calldata
68
+ # Track AND decode calldata
69
+ npx @gzeoneth/gov-tracker track 0x... -i
70
+
71
+ # Decode calldata only (no tracking)
108
72
  npx @gzeoneth/gov-tracker track 0x... --inspect-only
109
73
 
110
- # Show simulation data for Tenderly/Foundry integration
74
+ # Show simulation data
111
75
  npx @gzeoneth/gov-tracker track 0x... --show-simulation
112
76
 
113
77
  # Execute ready stages
114
- npx @gzeoneth/gov-tracker track 0x... --write --private-key $PRIVATE_KEY
78
+ npx @gzeoneth/gov-tracker track 0x... -w --private-key $PRIVATE_KEY
115
79
 
116
80
  # Discover and track all proposals
117
81
  npx @gzeoneth/gov-tracker run
82
+
83
+ # Disable caching
84
+ npx @gzeoneth/gov-tracker track 0x... --no-cache
85
+
86
+ # Interactive TUI (requires ink)
87
+ npx @gzeoneth/gov-tracker ui
118
88
  ```
119
89
 
90
+ **Shorthands:** `-v` (verbose), `-p` (prepare), `-w` (write), `-i` (inspect)
91
+
92
+ ### Interactive TUI
93
+
94
+ The `ui` command launches an interactive terminal interface for browsing proposals:
95
+
96
+ ```bash
97
+ # Browse bundled cache (no RPC required)
98
+ npx @gzeoneth/gov-tracker ui
99
+
100
+ # Enable live tracking with RPC
101
+ npx @gzeoneth/gov-tracker ui --l2-rpc $ARB1_RPC --l1-rpc $ETH_RPC
102
+ ```
103
+
104
+ **Features:**
105
+ - Browse 105+ bundled proposals with filter tabs (All, Active, Complete, Timelocks)
106
+ - View proposal details, voting statistics, and stage progress
107
+ - Inspect decoded calldata with nested parameter display
108
+ - View simulation data for Tenderly/Foundry fork testing
109
+ - Monitor Security Council election status (requires RPC)
110
+ - Live tracking and discovery when RPC providers are configured
111
+
112
+ **Navigation:**
113
+ | Key | Action |
114
+ |-----|--------|
115
+ | `↑↓` | Navigate |
116
+ | `PgUp/Dn` | Page navigation |
117
+ | `Enter` | View details |
118
+ | `Tab` | Cycle filter |
119
+ | `c` | View calldata |
120
+ | `s` | View simulation |
121
+ | `d` | Discover proposals (with RPC) |
122
+ | `e` | Election status (with RPC) |
123
+ | `r` | Re-track (with RPC) |
124
+ | `b`/`Esc` | Go back |
125
+ | `q` | Quit |
126
+
127
+ **Note:** The TUI requires `ink` and `react` packages (installed as optional dependencies).
128
+
129
+ **Bundled Cache**: The CLI includes a pre-built cache of completed proposals. On first run, this eliminates initial discovery RPC calls. SDK users can access via `getBundledCachePath()` or direct JSON import - see [Examples](./docs/EXAMPLES.md#bundled-cache-bootstrap).
130
+
120
131
  ## Environment
121
132
 
122
133
  ```bash
@@ -126,9 +137,23 @@ NOVA_RPC=https://nova.arbitrum.io/rpc
126
137
  PRIVATE_KEY=0x... # For execution
127
138
  ```
128
139
 
140
+ The CLI warns when using default public RPCs. For production, set these environment variables.
141
+
142
+ ## Security & Privacy
143
+
144
+ **External API Lookups**: When decoding calldata, unknown function selectors are looked up via [4byte.directory](https://www.4byte.directory/). To disable:
145
+
146
+ ```bash
147
+ DISABLE_4BYTE_LOOKUP=1 npx @gzeoneth/gov-tracker track 0x...
148
+ ```
149
+
150
+ ```typescript
151
+ import { lookupSignature } from "@gzeoneth/gov-tracker";
152
+ const result = await lookupSignature("0x12345678", { disableApiLookup: true });
153
+ ```
154
+
129
155
  ## Documentation
130
156
 
131
- - [Getting Started](./docs/GETTING_STARTED.md) - Installation and basic usage
132
157
  - [API Reference](./docs/API.md) - Complete API documentation
133
158
  - [Examples](./docs/EXAMPLES.md) - Common patterns and use cases
134
159
  - [Architecture](./docs/ARCHITECTURE.md) - SDK internals and design
@@ -139,12 +164,10 @@ PRIVATE_KEY=0x... # For execution
139
164
  yarn build # Compile TypeScript
140
165
  yarn test # Run fast tests (no RPC)
141
166
  yarn test:coverage # Run tests with coverage
142
- yarn test:coverage:fork # Run fork tests with coverage (requires archive RPC)
143
- yarn test:coverage:all # Merge all coverage reports
144
167
  yarn lint # Run ESLint
145
168
  ```
146
169
 
147
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for development workflow and publishing instructions.
170
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for development workflow.
148
171
 
149
172
  ## Terminology
150
173
 
@@ -5,7 +5,7 @@
5
5
  * and address utilities.
6
6
  */
7
7
  export { decodeCalldata, decodeCalldataArray, extractCalldataFromStage } from "./decoder";
8
- export { lookupSignature, lookupLocalSignature } from "./signature-lookup";
8
+ export { lookupSignature, lookupLocalSignature, LookupSignatureOptions } from "./signature-lookup";
9
9
  export { parseParamTypes, isLikelyCalldata, formatDecodedValue, getAddressLabel, } from "./parameter-decoder";
10
10
  export { RETRYABLE_TICKET_MAGIC, isRetryableTicketMagic, decodeRetryableTicket, getRetryableChainName, } from "./retryable-ticket";
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/calldata/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAG1F,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/calldata/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAG1F,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGnG,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/calldata/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,8BAA8B;AAC9B,qCAA0F;AAAjF,yGAAA,cAAc,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAAE,mHAAA,wBAAwB,OAAA;AAEtE,mBAAmB;AACnB,uDAA2E;AAAlE,mHAAA,eAAe,OAAA;AAAE,wHAAA,oBAAoB,OAAA;AAE9C,0CAA0C;AAC1C,yDAK6B;AAJ3B,oHAAA,eAAe,OAAA;AACf,qHAAA,gBAAgB,OAAA;AAChB,uHAAA,kBAAkB,OAAA;AAClB,oHAAA,eAAe,OAAA;AAGjB,mBAAmB;AACnB,uDAK4B;AAJ1B,0HAAA,sBAAsB,OAAA;AACtB,0HAAA,sBAAsB,OAAA;AACtB,yHAAA,qBAAqB,OAAA;AACrB,yHAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/calldata/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,8BAA8B;AAC9B,qCAA0F;AAAjF,yGAAA,cAAc,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAAE,mHAAA,wBAAwB,OAAA;AAEtE,mBAAmB;AACnB,uDAAmG;AAA1F,mHAAA,eAAe,OAAA;AAAE,wHAAA,oBAAoB,OAAA;AAE9C,0CAA0C;AAC1C,yDAK6B;AAJ3B,oHAAA,eAAe,OAAA;AACf,qHAAA,gBAAgB,OAAA;AAChB,uHAAA,kBAAkB,OAAA;AAClB,oHAAA,eAAe,OAAA;AAGjB,mBAAmB;AACnB,uDAK4B;AAJ1B,0HAAA,sBAAsB,OAAA;AACtB,0HAAA,sBAAsB,OAAA;AACtB,yHAAA,qBAAqB,OAAA;AACrB,yHAAA,qBAAqB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"parameter-decoder.d.ts","sourceRoot":"","sources":["../../src/calldata/parameter-decoder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAgEtC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG7F;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUvD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAmCvE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,KAAK,GAClB;IAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAA;CAAE,GAAG,IAAI,CAiDrE"}
1
+ {"version":3,"file":"parameter-decoder.d.ts","sourceRoot":"","sources":["../../src/calldata/parameter-decoder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAgEtC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG7F;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUvD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAmCvE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,KAAK,GAClB;IAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAA;CAAE,GAAG,IAAI,CAuDrE"}
@@ -153,7 +153,14 @@ function decodeParameters(calldata, signature, chainContext) {
153
153
  const fragment = iface.getFunction(signature);
154
154
  const inputs = fragment.inputs;
155
155
  // Decode using Interface - handles selector automatically
156
- const decoded = iface.decodeFunctionData(fragment, calldata);
156
+ // Wrapped in try/catch to handle malformed calldata gracefully
157
+ let decoded;
158
+ try {
159
+ decoded = iface.decodeFunctionData(fragment, calldata);
160
+ }
161
+ catch {
162
+ return null;
163
+ }
157
164
  // Format into DecodedParameter array
158
165
  const params = inputs.map((paramType, index) => {
159
166
  const rawValue = decoded[index];
@@ -1 +1 @@
1
- {"version":3,"file":"parameter-decoder.js","sourceRoot":"","sources":["../../src/calldata/parameter-decoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parameter-decoder.js","sourceRoot":"","sources":["../../src/calldata/parameter-decoder.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,9 @@
3
3
  *
4
4
  * Resolves 4-byte function selectors to full function signatures.
5
5
  * Uses local registry first, then falls back to 4byte.directory API.
6
+ *
7
+ * Privacy note: Set DISABLE_4BYTE_LOOKUP=1 to prevent external API calls.
8
+ * When enabled, only local signatures will be used.
6
9
  */
7
10
  /**
8
11
  * Look up function signature in local registry
@@ -11,17 +14,29 @@
11
14
  * @returns The function signature if found, null otherwise
12
15
  */
13
16
  export declare function lookupLocalSignature(selector: string): string | null;
17
+ /**
18
+ * Options for signature lookup
19
+ */
20
+ export interface LookupSignatureOptions {
21
+ /**
22
+ * Disable external 4byte.directory API lookup.
23
+ * When true, only local signatures will be used.
24
+ * Can also be disabled globally via DISABLE_4BYTE_LOOKUP=1 env var.
25
+ */
26
+ disableApiLookup?: boolean;
27
+ }
14
28
  /**
15
29
  * Look up function signature from all sources
16
30
  *
17
31
  * Priority:
18
32
  * 1. Local registry (instant)
19
- * 2. 4byte.directory API (with caching)
33
+ * 2. 4byte.directory API (with caching) - unless disabled
20
34
  *
21
35
  * @param selector - The 4-byte function selector (e.g., "0x8f2a0bb0")
36
+ * @param options - Optional configuration for the lookup
22
37
  * @returns Object with signature and source, or null signature if not found
23
38
  */
24
- export declare function lookupSignature(selector: string): Promise<{
39
+ export declare function lookupSignature(selector: string, options?: LookupSignatureOptions): Promise<{
25
40
  signature: string | null;
26
41
  source: "local" | "api" | "failed";
27
42
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"signature-lookup.d.ts","sourceRoot":"","sources":["../../src/calldata/signature-lookup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoEH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE;AAmDD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;CAAE,CAAC,CAc3E"}
1
+ {"version":3,"file":"signature-lookup.d.ts","sourceRoot":"","sources":["../../src/calldata/signature-lookup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4EH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE;AAmDD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;CAAE,CAAC,CAsB3E"}
@@ -4,6 +4,9 @@
4
4
  *
5
5
  * Resolves 4-byte function selectors to full function signatures.
6
6
  * Uses local registry first, then falls back to 4byte.directory API.
7
+ *
8
+ * Privacy note: Set DISABLE_4BYTE_LOOKUP=1 to prevent external API calls.
9
+ * When enabled, only local signatures will be used.
7
10
  */
8
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
9
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -13,6 +16,13 @@ exports.lookupLocalSignature = lookupLocalSignature;
13
16
  exports.lookupSignature = lookupSignature;
14
17
  const debug_1 = __importDefault(require("debug"));
15
18
  const debug = (0, debug_1.default)("gov-tracker:calldata");
19
+ /**
20
+ * Check if 4byte.directory API lookups are disabled via environment variable.
21
+ * When disabled, only local signatures will be used (no external API calls).
22
+ */
23
+ function is4byteLookupDisabled() {
24
+ return process.env.DISABLE_4BYTE_LOOKUP === "1";
25
+ }
16
26
  /**
17
27
  * Local registry of common governance function signatures
18
28
  * Priority 1: Checked before API lookup
@@ -120,18 +130,26 @@ async function lookup4byteDirectory(selector) {
120
130
  *
121
131
  * Priority:
122
132
  * 1. Local registry (instant)
123
- * 2. 4byte.directory API (with caching)
133
+ * 2. 4byte.directory API (with caching) - unless disabled
124
134
  *
125
135
  * @param selector - The 4-byte function selector (e.g., "0x8f2a0bb0")
136
+ * @param options - Optional configuration for the lookup
126
137
  * @returns Object with signature and source, or null signature if not found
127
138
  */
128
- async function lookupSignature(selector) {
139
+ async function lookupSignature(selector, options) {
129
140
  // Try local registry first
130
141
  const localResult = lookupLocalSignature(selector);
131
142
  if (localResult) {
132
143
  return { signature: localResult, source: "local" };
133
144
  }
145
+ // Check if external API lookups are disabled (via option or env var)
146
+ if (options?.disableApiLookup || is4byteLookupDisabled()) {
147
+ const reason = options?.disableApiLookup ? "option" : "DISABLE_4BYTE_LOOKUP env var";
148
+ debug("4byte.directory lookup disabled via %s for selector: %s", reason, selector);
149
+ return { signature: null, source: "failed" };
150
+ }
134
151
  // Fall back to 4byte.directory API
152
+ debug("Looking up selector via 4byte.directory API: %s", selector);
135
153
  const apiResult = await lookup4byteDirectory(selector);
136
154
  if (apiResult) {
137
155
  return { signature: apiResult, source: "api" };
@@ -1 +1 @@
1
- {"version":3,"file":"signature-lookup.js","sourceRoot":"","sources":["../../src/calldata/signature-lookup.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AA0EH,oDAGC;AA6DD,0CAgBC;AAxJD,kDAA0B;AAE1B,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,sBAAsB,CAAC,CAAC;AAE5C;;;GAGG;AACH,MAAM,gBAAgB,GAA2B;IAC/C,sBAAsB;IACtB,YAAY,EAAE,yDAAyD;IACvE,YAAY,EAAE,oEAAoE;IAClF,YAAY,EAAE,gDAAgD;IAC9D,YAAY,EAAE,2DAA2D;IACzE,YAAY,EAAE,iBAAiB;IAC/B,YAAY,EAAE,sDAAsD;IACpE,YAAY,EAAE,iEAAiE;IAE/E,wBAAwB;IACxB,YAAY,EAAE,2BAA2B;IAEzC,kBAAkB;IAClB,YAAY,EAAE,wBAAwB;IACtC,YAAY,EAAE,4BAA4B;IAE1C,QAAQ;IACR,YAAY,EAAE,2BAA2B;IACzC,YAAY,EAAE,0BAA0B;IACxC,YAAY,EAAE,uCAAuC;IACrD,YAAY,EAAE,oBAAoB;IAClC,YAAY,EAAE,4BAA4B;IAE1C,iBAAiB;IACjB,YAAY,EAAE,oBAAoB;IAClC,YAAY,EAAE,iCAAiC;IAC/C,YAAY,EAAE,kBAAkB;IAChC,YAAY,EAAE,0BAA0B;IAExC,YAAY;IACZ,YAAY,EAAE,mBAAmB;IACjC,YAAY,EAAE,4BAA4B;IAC1C,YAAY,EAAE,qBAAqB;IACnC,YAAY,EAAE,SAAS;IAEvB,WAAW;IACX,YAAY,EAAE,6CAA6C;IAC3D,YAAY,EAAE,kBAAkB;IAChC,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,yBAAyB;IACvC,YAAY,EAAE,0CAA0C;IAExD,mBAAmB;IACnB,YAAY,EAAE,oCAAoC;IAClD,YAAY,EAAE,WAAW;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;AAExD;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,QAAgB;IACnD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClD,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IAClD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAElD,sBAAsB;IACtB,IAAI,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC3C,OAAO,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC;IACxD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;QAEvE,MAAM,GAAG,GAAG,gEAAgE,kBAAkB,EAAE,CAAC;QACjG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,KAAK,CAAC,+BAA+B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxD,cAAc,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAElC,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,2CAA2C;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;YACjD,cAAc,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YAClD,KAAK,CAAC,iCAAiC,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACxE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,cAAc,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAClD,cAAc,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,eAAe,CACnC,QAAgB;IAEhB,2BAA2B;IAC3B,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,mCAAmC;IACnC,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"signature-lookup.js","sourceRoot":"","sources":["../../src/calldata/signature-lookup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Monitor CLI - Example SDK Usage
4
+ *
5
+ * NOTE: This is a CLI application that demonstrates SDK usage, not library code.
6
+ * It serves as both a reference implementation and a production-ready tool.
7
+ * Developers should treat this as an application of the SDK, not as part of the SDK API.
8
+ *
9
+ * Demonstrates how to use the governance tracking SDK for:
10
+ * - Discovering proposals and timelock operations
11
+ * - Tracking lifecycle stages
12
+ * - Preparing and executing transactions
13
+ *
14
+ * Usage: npx @gzeoneth/gov-tracker [run|track <tx-hash>|election|status] [options]
15
+ *
16
+ * Dependencies:
17
+ * - commander is an optional dependency required for CLI usage
18
+ * - dotenv is a dev dependency; .env files are loaded if available
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}