clawcontract-cli 0.1.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 (146) hide show
  1. package/README.md +229 -0
  2. package/dist/analyzer/fallback.d.ts +28 -0
  3. package/dist/analyzer/fallback.d.ts.map +1 -0
  4. package/dist/analyzer/fallback.js +142 -0
  5. package/dist/analyzer/fallback.js.map +1 -0
  6. package/dist/analyzer/index.d.ts +24 -0
  7. package/dist/analyzer/index.d.ts.map +1 -0
  8. package/dist/analyzer/index.js +73 -0
  9. package/dist/analyzer/index.js.map +1 -0
  10. package/dist/analyzer/slither.d.ts +36 -0
  11. package/dist/analyzer/slither.d.ts.map +1 -0
  12. package/dist/analyzer/slither.js +92 -0
  13. package/dist/analyzer/slither.js.map +1 -0
  14. package/dist/cli/commands/analyze.d.ts +7 -0
  15. package/dist/cli/commands/analyze.d.ts.map +1 -0
  16. package/dist/cli/commands/analyze.js +74 -0
  17. package/dist/cli/commands/analyze.js.map +1 -0
  18. package/dist/cli/commands/create.d.ts +8 -0
  19. package/dist/cli/commands/create.d.ts.map +1 -0
  20. package/dist/cli/commands/create.js +44 -0
  21. package/dist/cli/commands/create.js.map +1 -0
  22. package/dist/cli/commands/delete.d.ts +5 -0
  23. package/dist/cli/commands/delete.d.ts.map +1 -0
  24. package/dist/cli/commands/delete.js +48 -0
  25. package/dist/cli/commands/delete.js.map +1 -0
  26. package/dist/cli/commands/deploy.d.ts +7 -0
  27. package/dist/cli/commands/deploy.d.ts.map +1 -0
  28. package/dist/cli/commands/deploy.js +130 -0
  29. package/dist/cli/commands/deploy.js.map +1 -0
  30. package/dist/cli/commands/featured.d.ts +4 -0
  31. package/dist/cli/commands/featured.d.ts.map +1 -0
  32. package/dist/cli/commands/featured.js +47 -0
  33. package/dist/cli/commands/featured.js.map +1 -0
  34. package/dist/cli/commands/full.d.ts +14 -0
  35. package/dist/cli/commands/full.d.ts.map +1 -0
  36. package/dist/cli/commands/full.js +72 -0
  37. package/dist/cli/commands/full.js.map +1 -0
  38. package/dist/cli/commands/generate.d.ts +10 -0
  39. package/dist/cli/commands/generate.d.ts.map +1 -0
  40. package/dist/cli/commands/generate.js +71 -0
  41. package/dist/cli/commands/generate.js.map +1 -0
  42. package/dist/cli/commands/info.d.ts +4 -0
  43. package/dist/cli/commands/info.d.ts.map +1 -0
  44. package/dist/cli/commands/info.js +76 -0
  45. package/dist/cli/commands/info.js.map +1 -0
  46. package/dist/cli/commands/interact.d.ts +7 -0
  47. package/dist/cli/commands/interact.d.ts.map +1 -0
  48. package/dist/cli/commands/interact.js +173 -0
  49. package/dist/cli/commands/interact.js.map +1 -0
  50. package/dist/cli/commands/list.d.ts +6 -0
  51. package/dist/cli/commands/list.d.ts.map +1 -0
  52. package/dist/cli/commands/list.js +37 -0
  53. package/dist/cli/commands/list.js.map +1 -0
  54. package/dist/cli/commands/register.d.ts +4 -0
  55. package/dist/cli/commands/register.d.ts.map +1 -0
  56. package/dist/cli/commands/register.js +54 -0
  57. package/dist/cli/commands/register.js.map +1 -0
  58. package/dist/cli/commands/verified.d.ts +9 -0
  59. package/dist/cli/commands/verified.d.ts.map +1 -0
  60. package/dist/cli/commands/verified.js +61 -0
  61. package/dist/cli/commands/verified.js.map +1 -0
  62. package/dist/cli/commands/verify.d.ts +9 -0
  63. package/dist/cli/commands/verify.d.ts.map +1 -0
  64. package/dist/cli/commands/verify.js +87 -0
  65. package/dist/cli/commands/verify.js.map +1 -0
  66. package/dist/cli/index.d.ts +3 -0
  67. package/dist/cli/index.d.ts.map +1 -0
  68. package/dist/cli/index.js +160 -0
  69. package/dist/cli/index.js.map +1 -0
  70. package/dist/cli/utils.d.ts +8 -0
  71. package/dist/cli/utils.d.ts.map +1 -0
  72. package/dist/cli/utils.js +36 -0
  73. package/dist/cli/utils.js.map +1 -0
  74. package/dist/config/chains.d.ts +18 -0
  75. package/dist/config/chains.d.ts.map +1 -0
  76. package/dist/config/chains.js +52 -0
  77. package/dist/config/chains.js.map +1 -0
  78. package/dist/config/clawcontractbook.d.ts +3 -0
  79. package/dist/config/clawcontractbook.d.ts.map +1 -0
  80. package/dist/config/clawcontractbook.js +3 -0
  81. package/dist/config/clawcontractbook.js.map +1 -0
  82. package/dist/config/index.d.ts +4 -0
  83. package/dist/config/index.d.ts.map +1 -0
  84. package/dist/config/index.js +3 -0
  85. package/dist/config/index.js.map +1 -0
  86. package/dist/constants/index.d.ts +3 -0
  87. package/dist/constants/index.d.ts.map +1 -0
  88. package/dist/constants/index.js +3 -0
  89. package/dist/constants/index.js.map +1 -0
  90. package/dist/deployer/compiler.d.ts +10 -0
  91. package/dist/deployer/compiler.d.ts.map +1 -0
  92. package/dist/deployer/compiler.js +93 -0
  93. package/dist/deployer/compiler.js.map +1 -0
  94. package/dist/deployer/deploy.d.ts +28 -0
  95. package/dist/deployer/deploy.d.ts.map +1 -0
  96. package/dist/deployer/deploy.js +60 -0
  97. package/dist/deployer/deploy.js.map +1 -0
  98. package/dist/deployer/hardhat-config-template.d.ts +2 -0
  99. package/dist/deployer/hardhat-config-template.d.ts.map +1 -0
  100. package/dist/deployer/hardhat-config-template.js +21 -0
  101. package/dist/deployer/hardhat-config-template.js.map +1 -0
  102. package/dist/deployer/index.d.ts +7 -0
  103. package/dist/deployer/index.d.ts.map +1 -0
  104. package/dist/deployer/index.js +4 -0
  105. package/dist/deployer/index.js.map +1 -0
  106. package/dist/deployer/metadata.d.ts +17 -0
  107. package/dist/deployer/metadata.d.ts.map +1 -0
  108. package/dist/deployer/metadata.js +317 -0
  109. package/dist/deployer/metadata.js.map +1 -0
  110. package/dist/deployer/wallet.d.ts +6 -0
  111. package/dist/deployer/wallet.d.ts.map +1 -0
  112. package/dist/deployer/wallet.js +15 -0
  113. package/dist/deployer/wallet.js.map +1 -0
  114. package/dist/generator/index.d.ts +2 -0
  115. package/dist/generator/index.d.ts.map +1 -0
  116. package/dist/generator/index.js +2 -0
  117. package/dist/generator/index.js.map +1 -0
  118. package/dist/generator/llm.d.ts +15 -0
  119. package/dist/generator/llm.d.ts.map +1 -0
  120. package/dist/generator/llm.js +128 -0
  121. package/dist/generator/llm.js.map +1 -0
  122. package/dist/generator/utils.d.ts +5 -0
  123. package/dist/generator/utils.d.ts.map +1 -0
  124. package/dist/generator/utils.js +49 -0
  125. package/dist/generator/utils.js.map +1 -0
  126. package/dist/index.d.ts +2 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +2 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/lib/clawcontractbook.d.ts +65 -0
  131. package/dist/lib/clawcontractbook.d.ts.map +1 -0
  132. package/dist/lib/clawcontractbook.js +158 -0
  133. package/dist/lib/clawcontractbook.js.map +1 -0
  134. package/dist/lib/credentials.d.ts +28 -0
  135. package/dist/lib/credentials.d.ts.map +1 -0
  136. package/dist/lib/credentials.js +73 -0
  137. package/dist/lib/credentials.js.map +1 -0
  138. package/dist/verifier/explorer-api.d.ts +21 -0
  139. package/dist/verifier/explorer-api.d.ts.map +1 -0
  140. package/dist/verifier/explorer-api.js +92 -0
  141. package/dist/verifier/explorer-api.js.map +1 -0
  142. package/dist/verifier/index.d.ts +20 -0
  143. package/dist/verifier/index.d.ts.map +1 -0
  144. package/dist/verifier/index.js +31 -0
  145. package/dist/verifier/index.js.map +1 -0
  146. package/package.json +54 -0
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env node
2
+ import 'dotenv/config';
3
+ import { Command } from 'commander';
4
+ import { createRequire } from 'node:module';
5
+ import { displayBanner, displayLLMNotice } from './utils.js';
6
+ import { createCommand } from './commands/create.js';
7
+ import { analyzeCommand } from './commands/analyze.js';
8
+ import { deployCommand } from './commands/deploy.js';
9
+ import { fullCommand } from './commands/full.js';
10
+ import { interactCommand } from './commands/interact.js';
11
+ import { listCommand } from './commands/list.js';
12
+ import { deleteCommand } from './commands/delete.js';
13
+ import { registerCommand } from './commands/register.js';
14
+ import { infoCommand } from './commands/info.js';
15
+ import { featuredCommand } from './commands/featured.js';
16
+ import { verifiedCommand } from './commands/verified.js';
17
+ const require = createRequire(import.meta.url);
18
+ const pkg = require('../../package.json');
19
+ const program = new Command();
20
+ program
21
+ .name('clawcontract')
22
+ .description('Smart contract analyzer and deployer for BNB Chain')
23
+ .version(pkg.version)
24
+ .option('--chain <chain>', 'target blockchain', 'bsc-testnet')
25
+ .option('--output <dir>', 'output directory for generated contracts', './contracts')
26
+ .hook('preAction', () => {
27
+ displayBanner();
28
+ });
29
+ program
30
+ .command('create')
31
+ .description('Create a smart contract from supplied source')
32
+ .option('--source <code>', 'Solidity source code')
33
+ .option('--stdin', 'read Solidity source from stdin')
34
+ .action(async (cmdOpts) => {
35
+ const opts = program.opts();
36
+ if (!cmdOpts.source && !cmdOpts.stdin) {
37
+ console.error('Error: Provide Solidity source via --source <code> or --stdin.');
38
+ process.exit(1);
39
+ }
40
+ await createCommand({ ...opts, source: cmdOpts.source, stdin: cmdOpts.stdin });
41
+ displayLLMNotice();
42
+ });
43
+ program
44
+ .command('analyze <file>')
45
+ .description('Run security analysis on a Solidity file')
46
+ .action(async (file) => {
47
+ await analyzeCommand(file);
48
+ displayLLMNotice();
49
+ });
50
+ program
51
+ .command('deploy <file>')
52
+ .description('Deploy a contract to BSC/opBNB')
53
+ .option('--publish', 'Publish to ClawContractBook')
54
+ .option('--description <text>', 'Deployment description')
55
+ .action(async (file, cmdOpts) => {
56
+ const opts = program.opts();
57
+ await deployCommand(file, {
58
+ chain: opts.chain,
59
+ publish: cmdOpts.publish,
60
+ description: cmdOpts.description,
61
+ });
62
+ displayLLMNotice();
63
+ });
64
+ program
65
+ .command('full')
66
+ .description('Full pipeline: create → analyze → deploy')
67
+ .option('--source <code>', 'use supplied Solidity source')
68
+ .option('--stdin', 'read Solidity source from stdin')
69
+ .option('--file <path>', 'use existing Solidity file (skip create step)')
70
+ .option('--skip-deploy', 'Stop after analysis — do not deploy')
71
+ .option('--skip-analyze', 'Skip security analysis step entirely')
72
+ .option('--publish', 'Publish to ClawContractBook')
73
+ .option('--description <text>', 'Deployment description')
74
+ .action(async (cmdOpts) => {
75
+ const opts = program.opts();
76
+ const hasInput = !!cmdOpts.source || !!cmdOpts.stdin || !!cmdOpts.file;
77
+ if (!hasInput) {
78
+ console.error('Error: Provide Solidity source via --source, --stdin, or --file.');
79
+ process.exit(1);
80
+ }
81
+ await fullCommand({ source: cmdOpts.source, stdin: cmdOpts.stdin, file: cmdOpts.file }, { ...opts, skipDeploy: cmdOpts.skipDeploy, skipAnalyze: cmdOpts.skipAnalyze, publish: cmdOpts.publish, description: cmdOpts.description });
82
+ displayLLMNotice();
83
+ });
84
+ program
85
+ .command('interact <address> <function> [args...]')
86
+ .description('Interact with a deployed contract (call read/write functions)')
87
+ .option('--file <file>', 'source Solidity file for ABI resolution')
88
+ .option('--abi-url <url>', 'fetch ABI from URL (e.g. from verified/featured output)')
89
+ .option('--value <value>', 'BNB value to send (in wei) for payable functions')
90
+ .action(async (address, fn, args, cmdOpts) => {
91
+ const opts = program.opts();
92
+ await interactCommand(address, fn, args, { chain: opts.chain, file: cmdOpts.file, abiUrl: cmdOpts.abiUrl, value: cmdOpts.value });
93
+ displayLLMNotice();
94
+ });
95
+ program
96
+ .command('register')
97
+ .description('Register agent with ClawContractBook and save credentials')
98
+ .requiredOption('--name <name>', 'Agent name (3-100 chars)')
99
+ .action(async (cmdOpts) => {
100
+ await registerCommand({ name: cmdOpts.name });
101
+ displayLLMNotice();
102
+ });
103
+ program
104
+ .command('info')
105
+ .description('Show agent info, EVM address, and native balance')
106
+ .option('--chain <chain>', 'chain for balance lookup', 'bsc-testnet')
107
+ .action(async (cmdOpts) => {
108
+ const opts = program.opts();
109
+ await infoCommand({ chain: cmdOpts.chain ?? opts.chain });
110
+ displayLLMNotice();
111
+ });
112
+ program
113
+ .command('list')
114
+ .description('List all stored deployment records')
115
+ .option('--json', 'output as JSON')
116
+ .option('--chain <chain>', 'filter by chain')
117
+ .action(async (cmdOpts) => {
118
+ const opts = program.opts();
119
+ await listCommand({ chain: cmdOpts.chain, json: cmdOpts.json, output: opts.output });
120
+ displayLLMNotice();
121
+ });
122
+ program
123
+ .command('verified')
124
+ .description('Browse verified deployments from ClawContractBook')
125
+ .option('--page <number>', 'page number', '1')
126
+ .option('--limit <number>', 'results per page', '20')
127
+ .option('--chain <chain>', 'filter by chain')
128
+ .option('--search <query>', 'search by name or description')
129
+ .option('--sort <sort>', 'sort order: newest, oldest, name', 'newest')
130
+ .option('--json', 'output as JSON')
131
+ .action(async (cmdOpts) => {
132
+ await verifiedCommand({
133
+ page: parseInt(cmdOpts.page, 10),
134
+ limit: parseInt(cmdOpts.limit, 10),
135
+ chain: cmdOpts.chain,
136
+ search: cmdOpts.search,
137
+ sort: cmdOpts.sort,
138
+ json: cmdOpts.json,
139
+ });
140
+ displayLLMNotice();
141
+ });
142
+ program
143
+ .command('featured')
144
+ .description('Show featured verified deployments from ClawContractBook')
145
+ .option('--json', 'output as JSON')
146
+ .action(async (cmdOpts) => {
147
+ await featuredCommand({ json: cmdOpts.json });
148
+ displayLLMNotice();
149
+ });
150
+ program
151
+ .command('delete <address>')
152
+ .description('Remove a deployment record by address')
153
+ .option('--force', 'skip confirmation prompt')
154
+ .action(async (address, cmdOpts) => {
155
+ const opts = program.opts();
156
+ await deleteCommand(address, { force: cmdOpts.force, output: opts.output });
157
+ displayLLMNotice();
158
+ });
159
+ program.parse();
160
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEjE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,oDAAoD,CAAC;KACjE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,aAAa,CAAC;KAC7D,MAAM,CAAC,gBAAgB,EAAE,0CAA0C,EAAE,aAAa,CAAC;KACnF,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACtB,aAAa,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACjD,MAAM,CAAC,SAAS,EAAE,iCAAiC,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,OAA6C,EAAE,EAAE;IAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAqC,CAAC;IAC/D,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/E,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3B,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,WAAW,EAAE,6BAA6B,CAAC;KAClD,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAoD,EAAE,EAAE;IACnF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAqC,CAAC;IAC/D,MAAM,aAAa,CAAC,IAAI,EAAE;QACxB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;IACH,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;KACzD,MAAM,CAAC,SAAS,EAAE,iCAAiC,CAAC;KACpD,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;KACxE,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC;KAC9D,MAAM,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;KAChE,MAAM,CAAC,WAAW,EAAE,6BAA6B,CAAC;KAClD,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,OAAkJ,EAAE,EAAE;IACnK,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAqC,CAAC;IAC/D,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,WAAW,CACf,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EACpE,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAC1I,CAAC;IACF,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,yCAAyC,CAAC;KAClD,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,eAAe,EAAE,yCAAyC,CAAC;KAClE,MAAM,CAAC,iBAAiB,EAAE,yDAAyD,CAAC;KACpF,MAAM,CAAC,iBAAiB,EAAE,kDAAkD,CAAC;KAC7E,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAU,EAAE,IAAc,EAAE,OAA2D,EAAE,EAAE;IACzH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAqC,CAAC;IAC/D,MAAM,eAAe,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAClI,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,2DAA2D,CAAC;KACxE,cAAc,CAAC,eAAe,EAAE,0BAA0B,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,OAAyB,EAAE,EAAE;IAC1C,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,aAAa,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAqB,CAAC;IAC/C,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;KAC5C,MAAM,CAAC,KAAK,EAAE,OAA2C,EAAE,EAAE;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAqC,CAAC;IAC/D,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACrF,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,GAAG,CAAC;KAC7C,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,IAAI,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;KAC5C,MAAM,CAAC,kBAAkB,EAAE,+BAA+B,CAAC;KAC3D,MAAM,CAAC,eAAe,EAAE,kCAAkC,EAAE,QAAQ,CAAC;KACrE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAAwG,EAAE,EAAE;IACzH,MAAM,eAAe,CAAC;QACpB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IACH,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC;KAC7C,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAA4B,EAAE,EAAE;IAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAqC,CAAC;IAC/D,MAAM,aAAa,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function displayBanner(): void;
2
+ export declare function displayResult(label: string, value: string): void;
3
+ export declare function displayError(message: string): void;
4
+ export declare function displayLLMNotice(): void;
5
+ export declare function confirmAction(_message: string): Promise<boolean>;
6
+ export declare function selectChain(): Promise<string>;
7
+ export declare function formatGas(gas: bigint, price: bigint): string;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,IAAI,IAAI,CAWpC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGlD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEtE;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAEnD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI5D"}
@@ -0,0 +1,36 @@
1
+ import chalk from 'chalk';
2
+ import { ethers } from 'ethers';
3
+ export function displayBanner() {
4
+ const banner = chalk.cyan(`
5
+ _____ _ _____ _ _
6
+ / ____| | / ____| | | | |
7
+ | | | | __ ___ _| | ___ _ __ | |_ _ __ __ _ ___| |_
8
+ | | | |/ _\` \\ \\ /\\ / / | / _ \\| '_ \\| __| '__/ _\` |/ __| __|
9
+ | |____| | (_| |\\ V V /| |___| (_) | | | | |_| | | (_| | (__| |_
10
+ \\_____|_|\\__,_| \\_/\\_/ \\_____\\___/|_| |_|\\__|_| \\__,_|\\___|\\__|
11
+ `);
12
+ console.log(banner);
13
+ console.log(chalk.gray(' Smart contract analyzer and deployer for BNB Chain\n'));
14
+ }
15
+ export function displayResult(label, value) {
16
+ console.log(` ${chalk.bold.white(label + ':')} ${chalk.green(value)}`);
17
+ }
18
+ export function displayError(message) {
19
+ console.error(chalk.yellow('\n[LLM NOTICE] Do not attempt to fix this error unless you used the command incorrectly (retry with corrected arguments) or the issue is fixable with a clawcontract-cli command—in that case you may fix it. Otherwise, report the error to the user as-is.'));
20
+ console.error(chalk.red(`\nError: ${message}`));
21
+ }
22
+ export function displayLLMNotice() {
23
+ console.log(chalk.yellow('\n[LLM NOTICE] Command completed successfully. If you see any errors in the output above or elsewhere, do not attempt to fix them unless they are fixable with clawcontract-cli commands—otherwise report them to the user as-is.\n'));
24
+ }
25
+ export async function confirmAction(_message) {
26
+ return true;
27
+ }
28
+ export async function selectChain() {
29
+ return 'bsc-testnet';
30
+ }
31
+ export function formatGas(gas, price) {
32
+ const costWei = gas * price;
33
+ const costBnb = ethers.formatEther(costWei);
34
+ return `${costBnb} BNB (${gas.toString()} gas @ ${ethers.formatUnits(price, 'gwei')} gwei)`;
35
+ }
36
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;;CAO3B,CAAC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,KAAa;IACxD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,8PAA8P,CAAC,CAAC,CAAC;IAC5R,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,qOAAqO,CACtO,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,KAAa;IAClD,MAAM,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,GAAG,OAAO,SAAS,GAAG,CAAC,QAAQ,EAAE,UAAU,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC9F,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface ChainConfig {
2
+ name: string;
3
+ chainId: number;
4
+ rpcUrl: string;
5
+ explorerUrl: string;
6
+ explorerApiUrl: string;
7
+ nativeCurrency: {
8
+ name: string;
9
+ symbol: string;
10
+ decimals: number;
11
+ };
12
+ isTestnet: boolean;
13
+ }
14
+ export declare const CHAINS: Record<string, ChainConfig>;
15
+ export declare function getChain(key: string): ChainConfig;
16
+ export declare function getTestnetChains(): Record<string, ChainConfig>;
17
+ export declare function getMainnetChains(): Record<string, ChainConfig>;
18
+ //# sourceMappingURL=chains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../src/config/chains.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAqC9C,CAAC;AAEF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAMjD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAE9D;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAE9D"}
@@ -0,0 +1,52 @@
1
+ export const CHAINS = {
2
+ 'bsc-mainnet': {
3
+ name: 'BNB Smart Chain',
4
+ chainId: 56,
5
+ rpcUrl: 'https://bsc-dataseed.binance.org',
6
+ explorerUrl: 'https://bscscan.com',
7
+ explorerApiUrl: 'https://api.bscscan.com/api',
8
+ nativeCurrency: { name: 'BNB', symbol: 'BNB', decimals: 18 },
9
+ isTestnet: false,
10
+ },
11
+ 'bsc-testnet': {
12
+ name: 'BNB Smart Chain Testnet',
13
+ chainId: 97,
14
+ rpcUrl: 'https://bsc-testnet-rpc.publicnode.com',
15
+ explorerUrl: 'https://testnet.bscscan.com',
16
+ explorerApiUrl: 'https://api-testnet.bscscan.com/api',
17
+ nativeCurrency: { name: 'tBNB', symbol: 'tBNB', decimals: 18 },
18
+ isTestnet: true,
19
+ },
20
+ 'opbnb-mainnet': {
21
+ name: 'opBNB',
22
+ chainId: 204,
23
+ rpcUrl: 'https://opbnb-mainnet-rpc.bnbchain.org',
24
+ explorerUrl: 'https://opbnbscan.com',
25
+ explorerApiUrl: 'https://api-opbnb.bscscan.com/api',
26
+ nativeCurrency: { name: 'BNB', symbol: 'BNB', decimals: 18 },
27
+ isTestnet: false,
28
+ },
29
+ 'opbnb-testnet': {
30
+ name: 'opBNB Testnet',
31
+ chainId: 5611,
32
+ rpcUrl: 'https://opbnb-testnet-rpc.bnbchain.org',
33
+ explorerUrl: 'https://testnet.opbnbscan.com',
34
+ explorerApiUrl: 'https://api-opbnb-testnet.bscscan.com/api',
35
+ nativeCurrency: { name: 'tBNB', symbol: 'tBNB', decimals: 18 },
36
+ isTestnet: true,
37
+ },
38
+ };
39
+ export function getChain(key) {
40
+ const chain = CHAINS[key];
41
+ if (!chain) {
42
+ throw new Error(`Unknown chain: ${key}. Available: ${Object.keys(CHAINS).join(', ')}`);
43
+ }
44
+ return chain;
45
+ }
46
+ export function getTestnetChains() {
47
+ return Object.fromEntries(Object.entries(CHAINS).filter(([, c]) => c.isTestnet));
48
+ }
49
+ export function getMainnetChains() {
50
+ return Object.fromEntries(Object.entries(CHAINS).filter(([, c]) => !c.isTestnet));
51
+ }
52
+ //# sourceMappingURL=chains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../src/config/chains.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,MAAM,GAAgC;IACjD,aAAa,EAAE;QACb,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,kCAAkC;QAC1C,WAAW,EAAE,qBAAqB;QAClC,cAAc,EAAE,6BAA6B;QAC7C,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC5D,SAAS,EAAE,KAAK;KACjB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,wCAAwC;QAChD,WAAW,EAAE,6BAA6B;QAC1C,cAAc,EAAE,qCAAqC;QACrD,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9D,SAAS,EAAE,IAAI;KAChB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,wCAAwC;QAChD,WAAW,EAAE,uBAAuB;QACpC,cAAc,EAAE,mCAAmC;QACnD,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC5D,SAAS,EAAE,KAAK;KACjB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,wCAAwC;QAChD,WAAW,EAAE,+BAA+B;QAC5C,cAAc,EAAE,2CAA2C;QAC3D,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9D,SAAS,EAAE,IAAI;KAChB;CACF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACpF,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Default ClawContractBook API base URL */
2
+ export declare const CLAWCONTRACT_BOOK_DEFAULT_ENDPOINT = "http://localhost:3000";
3
+ //# sourceMappingURL=clawcontractbook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clawcontractbook.d.ts","sourceRoot":"","sources":["../../src/config/clawcontractbook.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,eAAO,MAAM,kCAAkC,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Default ClawContractBook API base URL */
2
+ export const CLAWCONTRACT_BOOK_DEFAULT_ENDPOINT = "http://localhost:3000";
3
+ //# sourceMappingURL=clawcontractbook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clawcontractbook.js","sourceRoot":"","sources":["../../src/config/clawcontractbook.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,CAAC,MAAM,kCAAkC,GAAG,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type { ChainConfig } from './chains.js';
2
+ export { CHAINS, getChain, getTestnetChains, getMainnetChains } from './chains.js';
3
+ export { CLAWCONTRACT_BOOK_DEFAULT_ENDPOINT } from './clawcontractbook.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { CHAINS, getChain, getTestnetChains, getMainnetChains } from './chains.js';
2
+ export { CLAWCONTRACT_BOOK_DEFAULT_ENDPOINT } from './clawcontractbook.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Default ClawContractBook API base URL */
2
+ export declare const CLAWCONTRACT_BOOK_DEFAULT_ENDPOINT = "http://localhost:3000";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,eAAO,MAAM,kCAAkC,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Default ClawContractBook API base URL */
2
+ export const CLAWCONTRACT_BOOK_DEFAULT_ENDPOINT = "http://localhost:3000";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,CAAC,MAAM,kCAAkC,GAAG,uBAAuB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface CompileResult {
2
+ abi: readonly Record<string, unknown>[];
3
+ bytecode: string;
4
+ contractName: string;
5
+ standardJsonInput: unknown;
6
+ solcLongVersion: string;
7
+ fullyQualifiedName: string;
8
+ }
9
+ export declare function compileContract(sourceFile: string): Promise<CompileResult>;
10
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/deployer/compiler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA0EhF"}
@@ -0,0 +1,93 @@
1
+ import { execSync } from 'node:child_process';
2
+ import * as fs from 'node:fs';
3
+ import * as path from 'node:path';
4
+ import * as os from 'node:os';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { getHardhatConfigContent } from './hardhat-config-template.js';
7
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
+ export async function compileContract(sourceFile) {
9
+ const sourceCode = fs.readFileSync(sourceFile, 'utf-8');
10
+ const contractName = extractContractName(sourceCode);
11
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'clawcontract-'));
12
+ try {
13
+ const contractsDir = path.join(tmpDir, 'contracts');
14
+ fs.mkdirSync(contractsDir, { recursive: true });
15
+ fs.writeFileSync(path.join(tmpDir, 'hardhat.config.ts'), getHardhatConfigContent());
16
+ fs.writeFileSync(path.join(tmpDir, 'package.json'), JSON.stringify({ name: 'temp-compile', type: 'commonjs' }));
17
+ fs.writeFileSync(path.join(tmpDir, 'tsconfig.json'), JSON.stringify({
18
+ compilerOptions: {
19
+ target: 'ES2022',
20
+ module: 'commonjs',
21
+ moduleResolution: 'node',
22
+ esModuleInterop: true,
23
+ skipLibCheck: true,
24
+ },
25
+ }));
26
+ const fileName = path.basename(sourceFile);
27
+ fs.writeFileSync(path.join(contractsDir, fileName), sourceCode);
28
+ // Hardhat requires a local installation (HH12). Symlink the package's
29
+ // node_modules into the temp dir so hardhat sees itself as local.
30
+ const pkgRoot = path.resolve(__dirname, '..', '..');
31
+ const pkgNodeModules = path.join(pkgRoot, 'node_modules');
32
+ const tmpNodeModules = path.join(tmpDir, 'node_modules');
33
+ if (fs.existsSync(pkgNodeModules) && !fs.existsSync(tmpNodeModules)) {
34
+ fs.symlinkSync(pkgNodeModules, tmpNodeModules, 'junction');
35
+ }
36
+ const hardhatBin = path.join(tmpDir, 'node_modules', '.bin', 'hardhat');
37
+ const hardhatCmd = fs.existsSync(hardhatBin + '.cmd') ? `"${hardhatBin}.cmd"` : `"${hardhatBin}"`;
38
+ execSync(`${hardhatCmd} compile`, {
39
+ cwd: tmpDir,
40
+ stdio: 'pipe',
41
+ env: { ...process.env, HARDHAT_CONFIG: path.join(tmpDir, 'hardhat.config.ts') },
42
+ });
43
+ const artifactPath = findArtifact(tmpDir, contractName);
44
+ const artifact = JSON.parse(fs.readFileSync(artifactPath, 'utf-8'));
45
+ const buildInfo = readBuildInfo(tmpDir);
46
+ const sourceKey = `contracts/${fileName}`;
47
+ return {
48
+ abi: artifact.abi,
49
+ bytecode: artifact.bytecode,
50
+ contractName,
51
+ standardJsonInput: buildInfo.input,
52
+ solcLongVersion: buildInfo.solcLongVersion,
53
+ fullyQualifiedName: `${sourceKey}:${contractName}`,
54
+ };
55
+ }
56
+ finally {
57
+ fs.rmSync(tmpDir, { recursive: true, force: true });
58
+ }
59
+ }
60
+ function extractContractName(sourceCode) {
61
+ const match = sourceCode.match(/contract\s+(\w+)/);
62
+ if (!match) {
63
+ throw new Error('Could not find contract name in source file');
64
+ }
65
+ return match[1];
66
+ }
67
+ function readBuildInfo(tmpDir) {
68
+ const buildInfoDir = path.join(tmpDir, 'artifacts', 'build-info');
69
+ if (!fs.existsSync(buildInfoDir)) {
70
+ throw new Error('Build info directory not found');
71
+ }
72
+ const files = fs.readdirSync(buildInfoDir).filter((f) => f.endsWith('.json'));
73
+ if (files.length === 0) {
74
+ throw new Error('No build info files found');
75
+ }
76
+ const raw = fs.readFileSync(path.join(buildInfoDir, files[0]), 'utf-8');
77
+ return JSON.parse(raw);
78
+ }
79
+ function findArtifact(tmpDir, contractName) {
80
+ const artifactsDir = path.join(tmpDir, 'artifacts', 'contracts');
81
+ if (!fs.existsSync(artifactsDir)) {
82
+ throw new Error(`Compilation failed: artifacts directory not found at ${artifactsDir}`);
83
+ }
84
+ const solDirs = fs.readdirSync(artifactsDir);
85
+ for (const solDir of solDirs) {
86
+ const artifactFile = path.join(artifactsDir, solDir, `${contractName}.json`);
87
+ if (fs.existsSync(artifactFile)) {
88
+ return artifactFile;
89
+ }
90
+ }
91
+ throw new Error(`Artifact not found for contract "${contractName}" in ${artifactsDir}`);
92
+ }
93
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/deployer/compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface DeployOptions {
2
+ sourceFile: string;
3
+ chainKey: string;
4
+ constructorArgs?: unknown[];
5
+ privateKey: string;
6
+ }
7
+ export interface DeployResult {
8
+ contractAddress: string;
9
+ transactionHash: string;
10
+ blockNumber: number;
11
+ gasUsed: string;
12
+ deployer: string;
13
+ chainKey: string;
14
+ explorerUrl: string;
15
+ standardJsonInput: unknown;
16
+ solcLongVersion: string;
17
+ fullyQualifiedName: string;
18
+ }
19
+ export interface GasEstimate {
20
+ gasLimit: bigint;
21
+ gasPrice: bigint;
22
+ totalCostWei: bigint;
23
+ totalCostBNB: string;
24
+ totalCostWithBuffer: string;
25
+ }
26
+ export declare function estimateGas(sourceFile: string, chainKey: string, privateKey: string): Promise<GasEstimate>;
27
+ export declare function deployContract(options: DeployOptions): Promise<DeployResult>;
28
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/deployer/deploy.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,CA8BtB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAkClF"}
@@ -0,0 +1,60 @@
1
+ import { ethers } from 'ethers';
2
+ import { getChain } from '../config/chains.js';
3
+ import { compileContract } from './compiler.js';
4
+ export async function estimateGas(sourceFile, chainKey, privateKey) {
5
+ const chain = getChain(chainKey);
6
+ const { abi, bytecode } = await compileContract(sourceFile);
7
+ const provider = new ethers.JsonRpcProvider(chain.rpcUrl, {
8
+ name: chain.name,
9
+ chainId: chain.chainId,
10
+ });
11
+ const wallet = new ethers.Wallet(privateKey, provider);
12
+ const factory = new ethers.ContractFactory(abi, bytecode, wallet);
13
+ const deployTx = await factory.getDeployTransaction();
14
+ const gasLimit = await provider.estimateGas({
15
+ ...deployTx,
16
+ from: wallet.address,
17
+ });
18
+ const feeData = await provider.getFeeData();
19
+ const gasPrice = feeData.gasPrice ?? 0n;
20
+ const totalCostWei = gasLimit * gasPrice;
21
+ const bufferCostWei = (totalCostWei * 120n) / 100n;
22
+ return {
23
+ gasLimit,
24
+ gasPrice,
25
+ totalCostWei,
26
+ totalCostBNB: ethers.formatEther(totalCostWei),
27
+ totalCostWithBuffer: ethers.formatEther(bufferCostWei),
28
+ };
29
+ }
30
+ export async function deployContract(options) {
31
+ const { sourceFile, chainKey, constructorArgs = [], privateKey } = options;
32
+ const chain = getChain(chainKey);
33
+ const compiled = await compileContract(sourceFile);
34
+ const provider = new ethers.JsonRpcProvider(chain.rpcUrl, {
35
+ name: chain.name,
36
+ chainId: chain.chainId,
37
+ });
38
+ const wallet = new ethers.Wallet(privateKey, provider);
39
+ const factory = new ethers.ContractFactory(compiled.abi, compiled.bytecode, wallet);
40
+ const contract = await factory.deploy(...constructorArgs);
41
+ const confirmations = chain.isTestnet ? 1 : 3;
42
+ const receipt = await contract.deploymentTransaction().wait(confirmations);
43
+ if (!receipt) {
44
+ throw new Error('Deployment transaction failed: no receipt returned');
45
+ }
46
+ const contractAddress = await contract.getAddress();
47
+ return {
48
+ contractAddress,
49
+ transactionHash: receipt.hash,
50
+ blockNumber: receipt.blockNumber,
51
+ gasUsed: receipt.gasUsed.toString(),
52
+ deployer: wallet.address,
53
+ chainKey,
54
+ explorerUrl: `${chain.explorerUrl}/address/${contractAddress}`,
55
+ standardJsonInput: compiled.standardJsonInput,
56
+ solcLongVersion: compiled.solcLongVersion,
57
+ fullyQualifiedName: compiled.fullyQualifiedName,
58
+ };
59
+ }
60
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/deployer/deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function getHardhatConfigContent(): string;
2
+ //# sourceMappingURL=hardhat-config-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardhat-config-template.d.ts","sourceRoot":"","sources":["../../src/deployer/hardhat-config-template.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,IAAI,MAAM,CAmBhD"}
@@ -0,0 +1,21 @@
1
+ export function getHardhatConfigContent() {
2
+ return `
3
+ import { HardhatUserConfig } from "hardhat/config";
4
+
5
+ const config: HardhatUserConfig = {
6
+ solidity: {
7
+ version: "0.8.20",
8
+ settings: {
9
+ optimizer: {
10
+ enabled: true,
11
+ runs: 200,
12
+ },
13
+ evmVersion: "paris",
14
+ },
15
+ },
16
+ };
17
+
18
+ export default config;
19
+ `.trimStart();
20
+ }
21
+ //# sourceMappingURL=hardhat-config-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardhat-config-template.js","sourceRoot":"","sources":["../../src/deployer/hardhat-config-template.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAC,SAAS,EAAE,CAAC;AACd,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type { CompileResult } from './compiler.js';
2
+ export { compileContract } from './compiler.js';
3
+ export type { DeployOptions, DeployResult, GasEstimate } from './deploy.js';
4
+ export { estimateGas, deployContract } from './deploy.js';
5
+ export type { DeploymentRecord } from './metadata.js';
6
+ export { saveDeployment, loadDeployment, loadAllDeployments, deleteDeployment } from './metadata.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deployer/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}