clawkr-cli 1.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.
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.launchCommand = launchCommand;
7
+ const viem_1 = require("viem");
8
+ const accounts_1 = require("viem/accounts");
9
+ const chains_1 = require("viem/chains");
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const ora_1 = __importDefault(require("ora"));
12
+ const axios_1 = __importDefault(require("axios"));
13
+ const config_1 = require("../utils/config");
14
+ const abis_1 = require("../utils/abis");
15
+ async function launchCommand(options) {
16
+ const config = (0, config_1.loadConfig)();
17
+ const privateKey = (0, config_1.getPrivateKey)();
18
+ // JSON output object
19
+ const output = {
20
+ success: false,
21
+ command: 'launch',
22
+ params: {
23
+ name: options.name,
24
+ symbol: options.symbol,
25
+ description: options.description || null,
26
+ website: options.website || null,
27
+ x: options.x || null,
28
+ image: options.image || null,
29
+ tokenUri: options.tokenUri || null,
30
+ marketCap: options.marketCap,
31
+ fairLaunchDuration: options.fairLaunchDuration || '300',
32
+ },
33
+ };
34
+ // Validate private key
35
+ if (!privateKey) {
36
+ output.error = 'Private key not found. Set PRIVATE_KEY environment variable.';
37
+ if (options.json) {
38
+ console.log(JSON.stringify(output, null, 2));
39
+ }
40
+ else {
41
+ console.error(chalk_1.default.red('Error: Private key not found. Set PRIVATE_KEY environment variable.'));
42
+ }
43
+ process.exit(1);
44
+ }
45
+ // Create clients
46
+ const account = (0, accounts_1.privateKeyToAccount)(privateKey);
47
+ const publicClient = (0, viem_1.createPublicClient)({
48
+ chain: chains_1.base,
49
+ transport: (0, viem_1.http)(config.rpcUrl),
50
+ });
51
+ const walletClient = (0, viem_1.createWalletClient)({
52
+ account,
53
+ chain: chains_1.base,
54
+ transport: (0, viem_1.http)(config.rpcUrl),
55
+ });
56
+ const spinner = options.json ? null : (0, ora_1.default)('Preparing launch...').start();
57
+ try {
58
+ // Check if agent is registered via API (not blockchain)
59
+ if (spinner)
60
+ spinner.text = 'Checking agent registration...';
61
+ const apiBaseUrl = process.env.API_BASE_URL || 'https://clawkr.com/api';
62
+ try {
63
+ const agentResponse = await axios_1.default.get(`${apiBaseUrl}/agents/${account.address}`, { timeout: 10000 });
64
+ if (!agentResponse.data.success || agentResponse.data.data.status !== 'ACTIVE') {
65
+ output.error = `Agent ${account.address} is not registered or not active.`;
66
+ if (spinner)
67
+ spinner.fail(output.error);
68
+ if (options.json) {
69
+ console.log(JSON.stringify(output, null, 2));
70
+ }
71
+ else {
72
+ console.error(chalk_1.default.red('\nError: ' + output.error));
73
+ console.error(chalk_1.default.yellow('\nPlease register first with:'));
74
+ console.error(chalk_1.default.white(' clawkr register --json'));
75
+ }
76
+ process.exit(1);
77
+ }
78
+ }
79
+ catch (error) {
80
+ if (error.response?.status === 404) {
81
+ output.error = `Agent ${account.address} is not registered.`;
82
+ if (spinner)
83
+ spinner.fail(output.error);
84
+ if (options.json) {
85
+ console.log(JSON.stringify(output, null, 2));
86
+ }
87
+ else {
88
+ console.error(chalk_1.default.red('\nError: ' + output.error));
89
+ console.error(chalk_1.default.yellow('\nPlease register first with:'));
90
+ console.error(chalk_1.default.white(' clawkr register --json'));
91
+ }
92
+ process.exit(1);
93
+ }
94
+ // If other error, throw to outer catch
95
+ throw error;
96
+ }
97
+ // Check if launches are paused
98
+ const paused = await publicClient.readContract({
99
+ address: config.contracts.clawkrHook,
100
+ abi: abis_1.CLAWKR_HOOK_ABI,
101
+ functionName: 'paused',
102
+ });
103
+ if (paused) {
104
+ output.error = 'Token launches are currently paused.';
105
+ if (spinner)
106
+ spinner.fail(output.error);
107
+ if (options.json)
108
+ console.log(JSON.stringify(output, null, 2));
109
+ process.exit(1);
110
+ }
111
+ // Agents must provide tokenUri directly (agents upload images themselves)
112
+ const tokenUri = options.tokenUri || '';
113
+ // Parse market cap in ETH (default: 1 ETH)
114
+ const marketCapEth = (0, viem_1.parseEther)(options.marketCap || '1');
115
+ const fairLaunchDuration = BigInt(options.fairLaunchDuration || '300'); // 5 minutes default
116
+ const fairLaunchSupply = BigInt('10000000000000000000000000000'); // 10e27 (10 billion tokens for fair launch)
117
+ // Prepare launch params (order must match contract struct)
118
+ const launchParams = {
119
+ name: options.name,
120
+ symbol: options.symbol,
121
+ tokenUri,
122
+ marketCapEth,
123
+ fairLaunchDuration,
124
+ fairLaunchSupply,
125
+ };
126
+ // Step 1: Simulate to get return values (token address, poolId)
127
+ if (spinner)
128
+ spinner.text = 'Simulating transaction...';
129
+ const { request, result } = await publicClient.simulateContract({
130
+ address: config.contracts.clawkrHook,
131
+ abi: abis_1.CLAWKR_HOOK_ABI,
132
+ functionName: 'launch',
133
+ args: [launchParams],
134
+ account,
135
+ });
136
+ // Extract return values from simulation
137
+ // Contract returns: (address token, PoolId poolId)
138
+ const [tokenAddress, poolId] = result;
139
+ if (options.dryRun) {
140
+ output.success = true;
141
+ output.dryRun = true;
142
+ output.message = 'Simulation successful. Transaction would succeed.';
143
+ output.result = {
144
+ tokenAddress,
145
+ poolId,
146
+ estimatedGas: request.gas?.toString(),
147
+ urls: {
148
+ token: `https://basescan.org/token/${tokenAddress}`,
149
+ uniswap: `https://app.uniswap.org/explore/tokens/base/${tokenAddress}`,
150
+ dextools: `https://www.dextools.io/app/base/pair-explorer/${poolId}`,
151
+ },
152
+ };
153
+ if (spinner)
154
+ spinner.succeed('Dry run successful!');
155
+ if (options.json) {
156
+ console.log(JSON.stringify(output, null, 2));
157
+ }
158
+ else {
159
+ console.log(chalk_1.default.green('\nDry run successful!'));
160
+ console.log(chalk_1.default.gray('Transaction would succeed if executed.'));
161
+ console.log(chalk_1.default.gray('─'.repeat(50)));
162
+ console.log(chalk_1.default.white('Token Address: ') + chalk_1.default.cyan(tokenAddress));
163
+ console.log(chalk_1.default.white('Pool ID: ') + chalk_1.default.gray(poolId));
164
+ console.log(chalk_1.default.gray('─'.repeat(50)));
165
+ console.log(chalk_1.default.bold('Preview Links:'));
166
+ console.log(chalk_1.default.gray(' Token: ') + chalk_1.default.cyan(`https://basescan.org/token/${tokenAddress}`));
167
+ console.log(chalk_1.default.gray(' Dextools: ') + chalk_1.default.cyan(`https://www.dextools.io/app/base/pair-explorer/${poolId}`));
168
+ }
169
+ return;
170
+ }
171
+ // Step 2: Execute the launch using the simulated request
172
+ if (spinner)
173
+ spinner.text = 'Launching token...';
174
+ const hash = await walletClient.writeContract(request);
175
+ if (spinner)
176
+ spinner.text = 'Waiting for confirmation...';
177
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
178
+ // Step 3: Verify contract via Clawkr API (server-side verification)
179
+ let verificationAttempted = false;
180
+ if (!options.dryRun) {
181
+ verificationAttempted = true;
182
+ if (spinner)
183
+ spinner.text = 'Verifying contract on BaseScan (via Clawkr API)...';
184
+ try {
185
+ // Call Clawkr API for verification
186
+ const verificationResponse = await axios_1.default.post('https://clawkr.com/api/verify-contract', {
187
+ contractAddress: tokenAddress,
188
+ agentAddress: account.address,
189
+ hookAddress: config.contracts.clawkrHook,
190
+ }, {
191
+ timeout: 35000, // 35 second timeout (30s for verification + 5s buffer)
192
+ });
193
+ const verificationResult = verificationResponse.data;
194
+ // Add verification result to output
195
+ output.verification = {
196
+ attempted: true,
197
+ success: verificationResult.success,
198
+ status: verificationResult.status,
199
+ guid: verificationResult.guid,
200
+ result: verificationResult.result,
201
+ error: verificationResult.error,
202
+ };
203
+ if (verificationResult.success) {
204
+ if (spinner)
205
+ spinner.text = 'Contract verified successfully!';
206
+ }
207
+ else if (verificationResult.status === 'pending') {
208
+ // Timeout - verification still processing
209
+ if (spinner)
210
+ spinner.text = 'Verification timeout - still processing on BaseScan';
211
+ }
212
+ else {
213
+ // Failed
214
+ if (spinner)
215
+ spinner.text = 'Verification failed';
216
+ }
217
+ }
218
+ catch (verificationError) {
219
+ // Graceful failure - don't fail the whole launch
220
+ output.verification = {
221
+ attempted: true,
222
+ success: false,
223
+ status: 'failed',
224
+ error: verificationError.message || 'API call failed',
225
+ };
226
+ if (spinner)
227
+ spinner.text = 'Verification failed (contract deployed successfully)';
228
+ }
229
+ }
230
+ else {
231
+ // Dry run - skip verification
232
+ output.verification = {
233
+ attempted: false,
234
+ reason: 'Skipped in dry-run mode',
235
+ };
236
+ }
237
+ // Build success output with all required fields
238
+ output.success = true;
239
+ output.result = {
240
+ tokenAddress,
241
+ poolId,
242
+ transactionHash: hash,
243
+ blockNumber: receipt.blockNumber.toString(),
244
+ gasUsed: receipt.gasUsed.toString(),
245
+ status: receipt.status === 'success' ? 'confirmed' : 'failed',
246
+ urls: {
247
+ token: `https://basescan.org/token/${tokenAddress}`,
248
+ transaction: `https://basescan.org/tx/${hash}`,
249
+ uniswap: `https://app.uniswap.org/explore/tokens/base/${tokenAddress}`,
250
+ dextools: `https://www.dextools.io/app/base/pair-explorer/${poolId}`,
251
+ },
252
+ };
253
+ if (spinner)
254
+ spinner.succeed('Token launched successfully!');
255
+ if (options.json) {
256
+ console.log(JSON.stringify(output, null, 2));
257
+ }
258
+ else {
259
+ console.log('\n' + chalk_1.default.green.bold('Token Launched Successfully!'));
260
+ console.log(chalk_1.default.gray('═'.repeat(50)));
261
+ console.log(chalk_1.default.white('Name: ') + options.name);
262
+ console.log(chalk_1.default.white('Symbol: ') + options.symbol);
263
+ if (options.description) {
264
+ console.log(chalk_1.default.white('Description: ') + options.description);
265
+ }
266
+ if (options.website) {
267
+ console.log(chalk_1.default.white('Website: ') + chalk_1.default.cyan(options.website));
268
+ }
269
+ if (options.x) {
270
+ console.log(chalk_1.default.white('X (Twitter): ') + chalk_1.default.cyan(options.x));
271
+ }
272
+ console.log(chalk_1.default.white('Market Cap: ') + (0, viem_1.formatEther)(marketCapEth) + ' ETH');
273
+ console.log(chalk_1.default.white('Fair Launch: ') + fairLaunchDuration.toString() + ' seconds');
274
+ console.log(chalk_1.default.gray('─'.repeat(50)));
275
+ console.log(chalk_1.default.white('Token Address: ') + chalk_1.default.cyan(tokenAddress));
276
+ console.log(chalk_1.default.white('Pool ID: ') + chalk_1.default.gray(poolId));
277
+ if (tokenUri) {
278
+ console.log(chalk_1.default.white('Token URI: ') + chalk_1.default.cyan(tokenUri));
279
+ }
280
+ console.log(chalk_1.default.gray('─'.repeat(50)));
281
+ console.log(chalk_1.default.white('Transaction: ') + chalk_1.default.cyan(hash));
282
+ console.log(chalk_1.default.white('Block: ') + receipt.blockNumber.toString());
283
+ console.log(chalk_1.default.gray('─'.repeat(50)));
284
+ // Display verification status
285
+ if (output.verification?.attempted) {
286
+ if (output.verification.success) {
287
+ console.log(chalk_1.default.white('Verification: ') + chalk_1.default.green('✓ Verified'));
288
+ }
289
+ else if (output.verification.status === 'pending') {
290
+ console.log(chalk_1.default.white('Verification: ') + chalk_1.default.yellow('⏳ Timeout (still processing)'));
291
+ console.log(chalk_1.default.gray(' Run: ') + chalk_1.default.cyan(`clawkr verify ${tokenAddress}`));
292
+ }
293
+ else {
294
+ console.log(chalk_1.default.white('Verification: ') + chalk_1.default.red('✗ Failed'));
295
+ if (output.verification.error) {
296
+ console.log(chalk_1.default.gray(' Error: ') + chalk_1.default.red(output.verification.error));
297
+ }
298
+ console.log(chalk_1.default.gray(' Retry: ') + chalk_1.default.cyan(`clawkr verify ${tokenAddress}`));
299
+ }
300
+ }
301
+ else {
302
+ console.log(chalk_1.default.white('Verification: ') + chalk_1.default.gray('Skipped'));
303
+ if (output.verification?.reason) {
304
+ console.log(chalk_1.default.gray(' ') + output.verification.reason);
305
+ }
306
+ }
307
+ console.log(chalk_1.default.gray('═'.repeat(50)));
308
+ console.log(chalk_1.default.bold('\nUseful Links:'));
309
+ console.log(chalk_1.default.gray(' Token: ') + chalk_1.default.cyan(`https://basescan.org/token/${tokenAddress}`));
310
+ console.log(chalk_1.default.gray(' Uniswap: ') + chalk_1.default.cyan(`https://app.uniswap.org/explore/tokens/base/${tokenAddress}`));
311
+ console.log(chalk_1.default.gray(' Dextools: ') + chalk_1.default.cyan(`https://www.dextools.io/app/base/pair-explorer/${poolId}`));
312
+ console.log(chalk_1.default.gray(' Tx: ') + chalk_1.default.cyan(`https://basescan.org/tx/${hash}`));
313
+ }
314
+ }
315
+ catch (error) {
316
+ output.error = error.message || 'Unknown error occurred';
317
+ if (spinner)
318
+ spinner.fail('Launch failed');
319
+ if (options.json) {
320
+ console.log(JSON.stringify(output, null, 2));
321
+ }
322
+ else {
323
+ console.error(chalk_1.default.red('\nError: ' + output.error));
324
+ }
325
+ process.exit(1);
326
+ }
327
+ }
328
+ //# sourceMappingURL=launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerCommand = registerCommand;
7
+ const accounts_1 = require("viem/accounts");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const axios_1 = __importDefault(require("axios"));
11
+ const wallet_1 = require("../utils/wallet");
12
+ async function registerCommand(options) {
13
+ // Always create a new wallet when registering
14
+ const wallet = (0, wallet_1.createWallet)();
15
+ const privateKey = wallet.privateKey;
16
+ const output = {
17
+ success: false,
18
+ command: 'register',
19
+ params: {
20
+ name: options.name || '',
21
+ description: options.description || ''
22
+ }
23
+ };
24
+ // Show wallet creation info to user (not in JSON mode)
25
+ if (!options.json) {
26
+ console.log(chalk_1.default.yellow.bold('\n🔑 New Wallet Created!'));
27
+ console.log(chalk_1.default.gray('─'.repeat(50)));
28
+ console.log(chalk_1.default.white('Address: ') + chalk_1.default.cyan(wallet.address));
29
+ console.log(chalk_1.default.white('Stored at: ') + chalk_1.default.gray((0, wallet_1.getWalletFilePath)()));
30
+ console.log(chalk_1.default.gray('─'.repeat(50)));
31
+ console.log(chalk_1.default.yellow('⚠️ IMPORTANT: Back up your wallet file!'));
32
+ console.log(chalk_1.default.yellow('💰 Fund this wallet with Base ETH for gas fees'));
33
+ console.log(chalk_1.default.gray('─'.repeat(50)));
34
+ console.log('');
35
+ }
36
+ const account = (0, accounts_1.privateKeyToAccount)(privateKey);
37
+ const spinner = options.json ? null : (0, ora_1.default)('Registering agent via API...').start();
38
+ try {
39
+ // Get API base URL from environment or use default
40
+ const apiBaseUrl = process.env.API_BASE_URL || 'https://clawkr.com/api';
41
+ // Register via API (FREE - no blockchain transaction)
42
+ const response = await axios_1.default.post(`${apiBaseUrl}/agents/register`, {
43
+ address: account.address,
44
+ name: options.name || null,
45
+ description: options.description || null
46
+ }, {
47
+ timeout: 10000,
48
+ headers: { 'Content-Type': 'application/json' }
49
+ });
50
+ if (response.data.success) {
51
+ output.success = true;
52
+ output.result = {
53
+ agent_address: response.data.agent.address,
54
+ name: response.data.agent.name,
55
+ description: response.data.agent.description,
56
+ status: response.data.agent.status,
57
+ registered_at: response.data.agent.registered_at
58
+ };
59
+ if (spinner)
60
+ spinner.succeed('Agent registered successfully!');
61
+ if (options.json) {
62
+ console.log(JSON.stringify(output, null, 2));
63
+ }
64
+ else {
65
+ console.log('\n' + chalk_1.default.green.bold('✅ Agent Registered Successfully! (FREE - No Gas Fees)'));
66
+ console.log(chalk_1.default.gray('─'.repeat(50)));
67
+ console.log(chalk_1.default.white('Agent Address: ') + chalk_1.default.cyan(account.address));
68
+ console.log(chalk_1.default.white('Status: ') + chalk_1.default.green('ACTIVE'));
69
+ if (options.name) {
70
+ console.log(chalk_1.default.white('Name: ') + options.name);
71
+ }
72
+ if (options.description) {
73
+ console.log(chalk_1.default.white('Description: ') + options.description);
74
+ }
75
+ console.log(chalk_1.default.gray('─'.repeat(50)));
76
+ console.log('\n' + chalk_1.default.yellow('You can now launch tokens with:'));
77
+ console.log(chalk_1.default.white(' clawkr launch --name "Token Name" --symbol "TKN" --image ./logo.png'));
78
+ }
79
+ }
80
+ else {
81
+ throw new Error(response.data.error || 'Registration failed');
82
+ }
83
+ }
84
+ catch (error) {
85
+ const errorMessage = error.response?.data?.error || error.message || 'Registration failed';
86
+ output.error = errorMessage;
87
+ if (spinner)
88
+ spinner.fail('Registration failed');
89
+ if (options.json) {
90
+ console.log(JSON.stringify(output, null, 2));
91
+ }
92
+ else {
93
+ console.error(chalk_1.default.red('\n❌ Error: ' + errorMessage));
94
+ // Helpful error messages
95
+ if (errorMessage.includes('already registered')) {
96
+ console.log(chalk_1.default.yellow('\n✓ Your agent is already registered!'));
97
+ console.log(chalk_1.default.gray(' You can proceed to launch tokens.'));
98
+ }
99
+ else if (errorMessage.includes('ECONNREFUSED') || errorMessage.includes('connect')) {
100
+ console.error(chalk_1.default.gray('\n Could not connect to Clawkr API at: ' + (process.env.API_BASE_URL || 'https://clawkr.com/api')));
101
+ console.error(chalk_1.default.gray(' Please check your internet connection or API_BASE_URL environment variable.'));
102
+ }
103
+ }
104
+ process.exit(1);
105
+ }
106
+ }
107
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.statusCommand = statusCommand;
7
+ const viem_1 = require("viem");
8
+ const chains_1 = require("viem/chains");
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const ora_1 = __importDefault(require("ora"));
11
+ const config_1 = require("../utils/config");
12
+ const abis_1 = require("../utils/abis");
13
+ async function statusCommand(options) {
14
+ const config = (0, config_1.loadConfig)();
15
+ const output = {
16
+ success: false,
17
+ command: 'status',
18
+ token: options.token,
19
+ };
20
+ const publicClient = (0, viem_1.createPublicClient)({
21
+ chain: chains_1.base,
22
+ transport: (0, viem_1.http)(config.rpcUrl),
23
+ });
24
+ const spinner = options.json ? null : (0, ora_1.default)('Fetching token status...').start();
25
+ try {
26
+ // Get token details first
27
+ if (spinner)
28
+ spinner.text = 'Fetching token details...';
29
+ const [name, symbol, decimals, totalSupply, agent] = await Promise.all([
30
+ publicClient.readContract({
31
+ address: options.token,
32
+ abi: abis_1.ERC20_ABI,
33
+ functionName: 'name',
34
+ }),
35
+ publicClient.readContract({
36
+ address: options.token,
37
+ abi: abis_1.ERC20_ABI,
38
+ functionName: 'symbol',
39
+ }),
40
+ publicClient.readContract({
41
+ address: options.token,
42
+ abi: abis_1.ERC20_ABI,
43
+ functionName: 'decimals',
44
+ }),
45
+ publicClient.readContract({
46
+ address: options.token,
47
+ abi: abis_1.ERC20_ABI,
48
+ functionName: 'totalSupply',
49
+ }),
50
+ publicClient.readContract({
51
+ address: options.token,
52
+ abi: abis_1.ERC20_ABI,
53
+ functionName: 'agent',
54
+ }).catch(() => null), // May not be a Clawkr token
55
+ ]);
56
+ if (!agent) {
57
+ output.error = 'Token not found or not launched through Clawkr.';
58
+ if (spinner)
59
+ spinner.fail(output.error);
60
+ if (options.json)
61
+ console.log(JSON.stringify(output, null, 2));
62
+ process.exit(1);
63
+ }
64
+ // Get claimable fees for the agent (both ETH and token)
65
+ if (spinner)
66
+ spinner.text = 'Fetching fee balances...';
67
+ const WETH = '0x4200000000000000000000000000000000000006';
68
+ const [agentEthFees, agentTokenFees] = await Promise.all([
69
+ publicClient.readContract({
70
+ address: config.contracts.clawkrHook,
71
+ abi: abis_1.CLAWKR_HOOK_ABI,
72
+ functionName: 'agentFees',
73
+ args: [agent, WETH],
74
+ }),
75
+ publicClient.readContract({
76
+ address: config.contracts.clawkrHook,
77
+ abi: abis_1.CLAWKR_HOOK_ABI,
78
+ functionName: 'agentFees',
79
+ args: [agent, options.token],
80
+ }),
81
+ ]);
82
+ // Get total launches from hook
83
+ const totalLaunches = await publicClient.readContract({
84
+ address: config.contracts.clawkrHook,
85
+ abi: abis_1.CLAWKR_HOOK_ABI,
86
+ functionName: 'totalLaunches',
87
+ });
88
+ output.success = true;
89
+ output.data = {
90
+ token: {
91
+ address: options.token,
92
+ name,
93
+ symbol,
94
+ decimals: Number(decimals),
95
+ totalSupply: totalSupply.toString(),
96
+ },
97
+ launch: {
98
+ agent: agent,
99
+ hookAddress: config.contracts.clawkrHook,
100
+ totalLaunches: totalLaunches.toString(),
101
+ },
102
+ fees: {
103
+ agentClaimableEth: agentEthFees.toString(),
104
+ agentClaimableToken: agentTokenFees.toString(),
105
+ },
106
+ feeSplit: {
107
+ agent: 90,
108
+ protocol: 10,
109
+ },
110
+ };
111
+ if (spinner)
112
+ spinner.succeed('Status fetched successfully!');
113
+ if (options.json) {
114
+ console.log(JSON.stringify(output, null, 2));
115
+ }
116
+ else {
117
+ console.log('\n' + chalk_1.default.bold.cyan('Token Status'));
118
+ console.log(chalk_1.default.gray('═'.repeat(60)));
119
+ console.log(chalk_1.default.bold('\nToken Info'));
120
+ console.log(chalk_1.default.gray('─'.repeat(60)));
121
+ console.log(chalk_1.default.white('Name: ') + name);
122
+ console.log(chalk_1.default.white('Symbol: ') + symbol);
123
+ console.log(chalk_1.default.white('Address: ') + chalk_1.default.cyan(options.token));
124
+ console.log(chalk_1.default.white('Total Supply: ') + (0, viem_1.formatUnits)(totalSupply, Number(decimals)));
125
+ console.log(chalk_1.default.bold('\nLaunch Info'));
126
+ console.log(chalk_1.default.gray('─'.repeat(60)));
127
+ console.log(chalk_1.default.white('Agent: ') + chalk_1.default.cyan(agent));
128
+ console.log(chalk_1.default.white('Hook: ') + chalk_1.default.cyan(config.contracts.clawkrHook));
129
+ console.log(chalk_1.default.white('Total Launches: ') + totalLaunches.toString());
130
+ console.log(chalk_1.default.bold('\nFee Status (Claimable)'));
131
+ console.log(chalk_1.default.gray('─'.repeat(60)));
132
+ console.log(chalk_1.default.white('ETH Fees: ') + (0, viem_1.formatUnits)(agentEthFees, 18) + ' ETH');
133
+ console.log(chalk_1.default.white('Token Fees: ') + (0, viem_1.formatUnits)(agentTokenFees, Number(decimals)) + ' ' + symbol);
134
+ console.log(chalk_1.default.bold('\nFee Split'));
135
+ console.log(chalk_1.default.gray('─'.repeat(60)));
136
+ console.log(chalk_1.default.white('Agent: ') + chalk_1.default.green('90%'));
137
+ console.log(chalk_1.default.white('Protocol: ') + chalk_1.default.blue('10%'));
138
+ console.log(chalk_1.default.gray('\n═'.repeat(60)));
139
+ console.log(chalk_1.default.gray(`View on BaseScan: https://basescan.org/address/${options.token}`));
140
+ }
141
+ }
142
+ catch (error) {
143
+ output.error = error.message || 'Unknown error occurred';
144
+ if (spinner)
145
+ spinner.fail('Failed to fetch status');
146
+ if (options.json) {
147
+ console.log(JSON.stringify(output, null, 2));
148
+ }
149
+ else {
150
+ console.error(chalk_1.default.red('\nError: ' + output.error));
151
+ }
152
+ process.exit(1);
153
+ }
154
+ }
155
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}