surfman 0.1.0 → 0.1.2

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.
package/README.md ADDED
@@ -0,0 +1,237 @@
1
+ # surfman
2
+
3
+ CLI tool for SurfPool RPC API interaction - Command-line interface for Solana local development and testing.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/surfman.svg)](https://www.npmjs.com/package/surfman)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ > 📖 **[SurfPool Documentation](https://docs.surfpool.run/)** - Learn more about SurfPool's local development environment
9
+
10
+ ## Features
11
+
12
+ - ⚡ **38 Commands**: Complete CLI coverage of all Surfpool APIs
13
+ - 🔧 **Testing Tools**: Time travel, account manipulation, network reset
14
+ - 🌐 **Network Queries**: Blocks, transactions, fees, cluster info
15
+ - 📦 **Account Tools**: Query accounts, tokens, balances
16
+ - 📊 **Analytics**: Scan program accounts, find largest holders
17
+ - 🎨 **Beautiful Output**: Colorful, well-formatted terminal output
18
+ - 📖 **Dual Help**: `-h` for common commands, `--help` for complete list
19
+
20
+ ## Installation
21
+
22
+ ```bash
23
+ npm install -g surfman
24
+ ```
25
+
26
+ ## Quick Start
27
+
28
+ ```bash
29
+ # Check version
30
+ surfman --version
31
+
32
+ # Show help
33
+ surfman -h # Frequently used commands
34
+ surfman --help # Complete command list
35
+
36
+ # Time travel (testing)
37
+ surfman time-travel --relative +1w
38
+
39
+ # Request airdrop
40
+ surfman request-airdrop --pubkey <ADDRESS> --amount 10
41
+
42
+ # Get account info
43
+ surfman get-account-info --pubkey <ADDRESS>
44
+
45
+ # Get latest blockhash
46
+ surfman get-latest-blockhash
47
+ ```
48
+
49
+ ## Command Categories
50
+
51
+ ### 🔧 Testing & Development (9 commands)
52
+
53
+ **Time Control:**
54
+ ```bash
55
+ surfman time-travel --absolute-epoch 100
56
+ surfman time-travel --relative +1w
57
+ surfman pause-clock
58
+ surfman resume-clock
59
+ ```
60
+
61
+ **Account Manipulation:**
62
+ ```bash
63
+ surfman set-account --pubkey <ADDR> --lamports 1000000
64
+ surfman set-token-account --address <ADDR> --amount 100
65
+ surfman reset-account --pubkey <ADDR>
66
+ ```
67
+
68
+ **Network Management:**
69
+ ```bash
70
+ surfman reset-network
71
+ surfman get-local-signatures
72
+ surfman set-program-authority --program-id <ID> --new-authority <ADDR>
73
+ ```
74
+
75
+ ### 🌐 Network Operations (18 commands)
76
+
77
+ **Block Queries:**
78
+ ```bash
79
+ surfman get-latest-blockhash
80
+ surfman get-block --slot 1000
81
+ surfman get-block-time --slot 1000
82
+ surfman get-blocks --start-slot 1000 --end-slot 2000
83
+ surfman get-blocks-with-limit --start-slot 1000 --limit 100
84
+ surfman get-first-available-block
85
+ surfman minimum-ledger-slot
86
+ ```
87
+
88
+ **Transaction Operations:**
89
+ ```bash
90
+ surfman get-transaction --signature <SIG>
91
+ surfman send-transaction --data <TX_DATA>
92
+ surfman simulate-transaction --data <TX_DATA>
93
+ surfman get-signature-statuses --signatures <SIG1,SIG2>
94
+ surfman get-signatures-for-address --address <ADDR>
95
+ ```
96
+
97
+ **Network Info & Fees:**
98
+ ```bash
99
+ surfman is-blockhash-valid --blockhash <HASH>
100
+ surfman get-fee-for-message --message <MSG>
101
+ surfman get-recent-prioritization-fees
102
+ surfman get-cluster-nodes
103
+ surfman get-recent-performance-samples
104
+ surfman request-airdrop --pubkey <ADDR> --amount 1
105
+ ```
106
+
107
+ ### 📦 Account Queries (5 commands)
108
+
109
+ ```bash
110
+ surfman get-account-info --pubkey <ADDR>
111
+ surfman get-multiple-accounts --pubkeys <ADDR1,ADDR2>
112
+ surfman get-token-account-balance --address <ADDR>
113
+ surfman get-token-supply --mint <MINT>
114
+ surfman get-block-commitment --slot 1000
115
+ ```
116
+
117
+ ### 📊 Scan & Analytics (6 commands)
118
+
119
+ **Batch Queries:**
120
+ ```bash
121
+ surfman get-program-accounts --program-id <ID> --data-size 165
122
+ surfman get-largest-accounts --filter circulating
123
+ surfman get-supply --exclude-accounts
124
+ ```
125
+
126
+ **Token Distribution:**
127
+ ```bash
128
+ surfman get-token-largest-accounts --mint <MINT>
129
+ surfman get-token-accounts-by-owner --owner <ADDR> --mint <MINT>
130
+ surfman get-token-accounts-by-delegate --delegate <ADDR> --program-id <ID>
131
+ ```
132
+
133
+ ## Common Use Cases
134
+
135
+ ### Testing Smart Contracts
136
+
137
+ ```bash
138
+ # Time travel to future epoch
139
+ surfman time-travel --relative +1d
140
+
141
+ # Set up test account with SOL
142
+ surfman set-account --pubkey <TEST_ADDR> --lamports 10000000000
143
+
144
+ # Run your tests...
145
+
146
+ # Reset when done
147
+ surfman reset-network
148
+ ```
149
+
150
+ ### Token Analysis
151
+
152
+ ```bash
153
+ # Get total supply
154
+ surfman get-supply
155
+
156
+ # Find largest token holders
157
+ surfman get-token-largest-accounts --mint <TOKEN_MINT>
158
+
159
+ # Check specific wallet tokens
160
+ surfman get-token-accounts-by-owner --owner <WALLET> --mint <TOKEN_MINT>
161
+ ```
162
+
163
+ ### Transaction Monitoring
164
+
165
+ ```bash
166
+ # Get recent transaction history
167
+ surfman get-signatures-for-address --address <ADDR> --limit 10
168
+
169
+ # Check transaction details
170
+ surfman get-transaction --signature <SIG>
171
+
172
+ # Check signature status
173
+ surfman get-signature-statuses --signatures <SIG1,SIG2>
174
+ ```
175
+
176
+ ### Program Account Scanning
177
+
178
+ ```bash
179
+ # Find all accounts owned by a program
180
+ surfman get-program-accounts --program-id <PROGRAM_ID>
181
+
182
+ # Filter by data size
183
+ surfman get-program-accounts --program-id <PROGRAM_ID> --data-size 165
184
+ ```
185
+
186
+ ## Options
187
+
188
+ Most commands support:
189
+ - `--rpc <url>` - Custom RPC endpoint (default: http://localhost:8899)
190
+ - `--commitment <level>` - Commitment level (finalized, confirmed, processed)
191
+ - `--encoding <type>` - Data encoding (base58, base64, jsonParsed)
192
+
193
+ ## Configuration
194
+
195
+ Set default RPC endpoint:
196
+ ```bash
197
+ export SURFMAN_RPC_URL=http://localhost:8899
198
+ ```
199
+
200
+ ## SDK Package
201
+
202
+ For programmatic usage in TypeScript/JavaScript:
203
+
204
+ ```bash
205
+ npm install surfman-sdk
206
+ ```
207
+
208
+ ```typescript
209
+ import { Surfman } from 'surfman-sdk';
210
+
211
+ const client = new Surfman('http://localhost:8899');
212
+ await client.cheatcodes.timeTravel({ relativeEpoch: 1 });
213
+ ```
214
+
215
+ ## Documentation
216
+
217
+ - [SurfPool Documentation](https://docs.surfpool.run/) - Official SurfPool docs
218
+ - [GitHub Repository](https://github.com/ennea8/surfman)
219
+ - [SDK Package](https://www.npmjs.com/package/surfman-sdk)
220
+ - [Report Issues](https://github.com/ennea8/surfman/issues)
221
+
222
+ ## Help
223
+
224
+ ```bash
225
+ # Quick view (common commands)
226
+ surfman -h
227
+
228
+ # Complete command list
229
+ surfman --help
230
+
231
+ # Command-specific help
232
+ surfman <command> --help
233
+ ```
234
+
235
+ ## License
236
+
237
+ MIT
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
- #!/usr/bin/env node
1
+
2
+ export { }
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env node
2
- #!/usr/bin/env node
3
2
  "use strict";
4
3
  var __create = Object.create;
5
4
  var __defProp = Object.defineProperty;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/commands/cheatcodes/time-travel.ts","../src/utils/logger.ts","../src/commands/cheatcodes/set-account.ts","../src/commands/cheatcodes/set-program-authority.ts","../src/commands/cheatcodes/pause-clock.ts","../src/commands/cheatcodes/resume-clock.ts","../src/commands/cheatcodes/get-local-signatures.ts","../src/commands/cheatcodes/set-token-account.ts","../src/commands/cheatcodes/reset-account.ts","../src/commands/cheatcodes/reset-network.ts","../src/commands/network/get-latest-blockhash.ts","../src/commands/network/get-block.ts","../src/commands/network/get-transaction.ts","../src/commands/network/send-transaction.ts","../src/commands/network/get-cluster-nodes.ts","../src/commands/network/request-airdrop.ts","../src/commands/network/get-blocks.ts","../src/commands/network/get-signatures-for-address.ts","../src/commands/network/is-blockhash-valid.ts","../src/commands/network/get-fee-for-message.ts","../src/commands/network/get-recent-prioritization-fees.ts","../src/commands/network/get-block-time.ts","../src/commands/network/get-blocks-with-limit.ts","../src/commands/network/get-first-available-block.ts","../src/commands/network/minimum-ledger-slot.ts","../src/commands/network/get-signature-statuses.ts","../src/commands/network/simulate-transaction.ts","../src/commands/network/get-recent-performance-samples.ts","../src/commands/accounts/get-account-info.ts","../src/commands/accounts/get-multiple-accounts.ts","../src/commands/accounts/get-block-commitment.ts","../src/commands/accounts/get-token-account-balance.ts","../src/commands/accounts/get-token-supply.ts","../src/commands/scan/get-program-accounts.ts","../src/commands/scan/get-largest-accounts.ts","../src/commands/scan/get-supply.ts","../src/commands/scan/get-token-largest-accounts.ts","../src/commands/scan/get-token-accounts-by-owner.ts","../src/commands/scan/get-token-accounts-by-delegate.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { createTimeTravelCommand } from './commands/cheatcodes/time-travel';\nimport { createSetAccountCommand } from './commands/cheatcodes/set-account';\nimport { createSetProgramAuthorityCommand } from './commands/cheatcodes/set-program-authority';\nimport { createPauseClockCommand } from './commands/cheatcodes/pause-clock';\nimport { createResumeClockCommand } from './commands/cheatcodes/resume-clock';\nimport { createGetLocalSignaturesCommand } from './commands/cheatcodes/get-local-signatures';\nimport { createSetTokenAccountCommand } from './commands/cheatcodes/set-token-account';\nimport { createResetAccountCommand } from './commands/cheatcodes/reset-account';\nimport { createResetNetworkCommand } from './commands/cheatcodes/reset-network';\nimport { createGetLatestBlockhashCommand } from './commands/network/get-latest-blockhash';\nimport { createGetBlockCommand } from './commands/network/get-block';\nimport { createGetTransactionCommand } from './commands/network/get-transaction';\nimport { createSendTransactionCommand } from './commands/network/send-transaction';\nimport { createGetClusterNodesCommand } from './commands/network/get-cluster-nodes';\nimport { createRequestAirdropCommand } from './commands/network/request-airdrop';\nimport { createGetBlocksCommand } from './commands/network/get-blocks';\nimport { createGetSignaturesForAddressCommand } from './commands/network/get-signatures-for-address';\nimport { createIsBlockhashValidCommand } from './commands/network/is-blockhash-valid';\nimport { createGetFeeForMessageCommand } from './commands/network/get-fee-for-message';\nimport { createGetRecentPrioritizationFeesCommand } from './commands/network/get-recent-prioritization-fees';\nimport { createGetBlockTimeCommand } from './commands/network/get-block-time';\nimport { createGetBlocksWithLimitCommand } from './commands/network/get-blocks-with-limit';\nimport { createGetFirstAvailableBlockCommand } from './commands/network/get-first-available-block';\nimport { createMinimumLedgerSlotCommand } from './commands/network/minimum-ledger-slot';\nimport { createGetSignatureStatusesCommand } from './commands/network/get-signature-statuses';\nimport { createSimulateTransactionCommand } from './commands/network/simulate-transaction';\nimport { createGetRecentPerformanceSamplesCommand } from './commands/network/get-recent-performance-samples';\nimport { createGetAccountInfoCommand } from './commands/accounts/get-account-info';\nimport { createGetMultipleAccountsCommand } from './commands/accounts/get-multiple-accounts';\nimport { createGetBlockCommitmentCommand } from './commands/accounts/get-block-commitment';\nimport { createGetTokenAccountBalanceCommand } from './commands/accounts/get-token-account-balance';\nimport { createGetTokenSupplyCommand } from './commands/accounts/get-token-supply';\nimport { createGetProgramAccountsCommand } from './commands/scan/get-program-accounts';\nimport { createGetLargestAccountsCommand } from './commands/scan/get-largest-accounts';\nimport { createGetSupplyCommand } from './commands/scan/get-supply';\nimport { createGetTokenLargestAccountsCommand } from './commands/scan/get-token-largest-accounts';\nimport { createGetTokenAccountsByOwnerCommand } from './commands/scan/get-token-accounts-by-owner';\nimport { createGetTokenAccountsByDelegateCommand } from './commands/scan/get-token-accounts-by-delegate';\n\nconst program = new Command();\n\n// Check for --help to show complete list\nconst isFullHelp = process.argv.includes('--help');\nconst isShortHelp = process.argv.includes('-h');\n\n// Handle --help flag to show complete command list\nif (isFullHelp) {\n console.log(chalk.bold.cyan('\\n🌊 Surfman CLI - Complete Command List\\n'));\n \n console.log(chalk.bold.yellow('📦 Account Queries (5 commands):\\n'));\n console.log(` ${chalk.yellow('get-account-info')} Get detailed account information`);\n console.log(` ${chalk.yellow('get-multiple-accounts')} Batch query multiple accounts`);\n console.log(` ${chalk.yellow('get-token-account-balance')} Get token account balance`);\n console.log(` ${chalk.yellow('get-token-supply')} Get total token supply`);\n console.log(` ${chalk.yellow('get-block-commitment')} Get block commitment data\\n`);\n \n console.log(chalk.bold.blue('🌐 Network Operations (18 commands):\\n'));\n console.log(chalk.dim(' Block Queries:'));\n console.log(` ${chalk.blue('get-latest-blockhash')} Get the latest blockhash`);\n console.log(` ${chalk.blue('get-block')} Get block information by slot`);\n console.log(` ${chalk.blue('get-block-time')} Get block production time`);\n console.log(` ${chalk.blue('get-blocks')} Get list of confirmed blocks`);\n console.log(` ${chalk.blue('get-blocks-with-limit')} Get blocks with limit`);\n console.log(` ${chalk.blue('get-first-available-block')} Get first available block`);\n console.log(` ${chalk.blue('minimum-ledger-slot')} Get minimum ledger slot\\n`);\n \n console.log(chalk.dim(' Transaction Operations:'));\n console.log(` ${chalk.blue('get-transaction')} Get transaction details`);\n console.log(` ${chalk.blue('get-signature-statuses')} Get signature statuses`);\n console.log(` ${chalk.blue('get-signatures-for-address')} Get address transaction history`);\n console.log(` ${chalk.blue('send-transaction')} Send a signed transaction`);\n console.log(` ${chalk.blue('simulate-transaction')} Simulate transaction execution\\n`);\n \n console.log(chalk.dim(' Network Info & Fees:'));\n console.log(` ${chalk.blue('is-blockhash-valid')} Check if blockhash is valid`);\n console.log(` ${chalk.blue('get-fee-for-message')} Get fee for a message`);\n console.log(` ${chalk.blue('get-recent-prioritization-fees')} Get recent priority fees`);\n console.log(` ${chalk.blue('get-cluster-nodes')} Get cluster node information`);\n console.log(` ${chalk.blue('get-recent-performance-samples')} Get performance samples`);\n console.log(` ${chalk.blue('request-airdrop')} Request lamports airdrop\\n`);\n \n console.log(chalk.bold.magenta('🔧 Testing & Development (9 commands):\\n'));\n console.log(chalk.dim(' Time Control:'));\n console.log(` ${chalk.magenta('time-travel')} Time travel to epoch/slot/timestamp`);\n console.log(` ${chalk.magenta('pause-clock')} Pause the network clock`);\n console.log(` ${chalk.magenta('resume-clock')} Resume the network clock\\n`);\n \n console.log(chalk.dim(' Account Manipulation:'));\n console.log(` ${chalk.magenta('set-account')} Modify account data/lamports/owner`);\n console.log(` ${chalk.magenta('set-token-account')} Update token account properties`);\n console.log(` ${chalk.magenta('reset-account')} Reset account to initial state\\n`);\n \n console.log(chalk.dim(' Network Management:'));\n console.log(` ${chalk.magenta('reset-network')} Reset entire network state`);\n console.log(` ${chalk.magenta('get-local-signatures')} Get recent local signatures`);\n console.log(` ${chalk.magenta('set-program-authority')} Set/remove program authority\\n`);\n \n console.log(chalk.bold.green('📊 Scan & Analytics (6 commands):\\n'));\n console.log(chalk.dim(' Batch Queries:'));\n console.log(` ${chalk.green('get-program-accounts')} Get all accounts owned by a program`);\n console.log(` ${chalk.green('get-largest-accounts')} Get top 20 accounts by balance`);\n console.log(` ${chalk.green('get-supply')} Get network supply information\\n`);\n \n console.log(chalk.dim(' Token Distribution:'));\n console.log(` ${chalk.green('get-token-largest-accounts')} Get largest token holders`);\n console.log(` ${chalk.green('get-token-accounts-by-owner')} Get token accounts by owner`);\n console.log(` ${chalk.green('get-token-accounts-by-delegate')} Get delegated token accounts\\n`);\n \n console.log(chalk.bold.cyan('📊 Summary:\\n'));\n console.log(` Total Commands: ${chalk.bold('38')}`);\n console.log(` Account Queries: ${chalk.yellow('5')}`);\n console.log(` Network Operations: ${chalk.blue('18')}`);\n console.log(` Testing & Development: ${chalk.magenta('9')}`);\n console.log(` Scan & Analytics: ${chalk.green('6')}\\n`);\n \n console.log(chalk.gray('💡 Use ') + chalk.cyan('surfman <command> --help') + chalk.gray(' for detailed options\\n'));\n process.exit(0);\n}\n\nprogram\n .name('surfman')\n .description('CLI tool for SurfPool RPC API interaction')\n .version('0.1.0');\n\n// Custom help configuration\nprogram.configureHelp({\n formatHelp: (cmd, helper) => {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth || 80;\n\n let output = '';\n \n // Title\n output += chalk.bold.cyan('\\n🌊 Surfman CLI\\n\\n');\n output += chalk.gray('CLI tool for SurfPool RPC API interaction\\n\\n');\n\n // Usage\n output += chalk.bold('Usage:\\n');\n output += ` $ surfman ${chalk.yellow('<command>')} ${chalk.gray('[options]')}\\n\\n`;\n\n // Options\n output += chalk.bold('Options:\\n');\n output += ` -V, --version ${chalk.gray('Output the version number')}\\n`;\n output += ` -h ${chalk.gray('Display frequently used commands (quick view)')}\\n`;\n output += ` --help ${chalk.gray('Display all commands grouped by module')}\\n\\n`;\n\n // Frequently Used Commands\n output += chalk.bold.green('⭐ Frequently Used:\\n');\n output += ` ${chalk.cyan('get-account-info')} ${chalk.gray('Get account information')}\\n`;\n output += ` ${chalk.cyan('get-latest-blockhash')} ${chalk.gray('Get latest blockhash')}\\n`;\n output += ` ${chalk.cyan('send-transaction')} ${chalk.gray('Send a transaction')}\\n`;\n output += ` ${chalk.cyan('request-airdrop')} ${chalk.gray('Request SOL airdrop')}\\n`;\n output += ` ${chalk.cyan('time-travel')} ${chalk.gray('Time travel for testing')}\\n\\n`;\n\n // Account Queries\n output += chalk.bold.yellow('📦 Account Queries:\\n');\n output += ` ${chalk.yellow('get-account-info')} Get detailed account information\\n`;\n output += ` ${chalk.yellow('get-multiple-accounts')} Batch query multiple accounts\\n`;\n output += ` ${chalk.yellow('get-token-account-balance')} Get token account balance\\n`;\n output += ` ${chalk.yellow('get-token-supply')} Get total token supply\\n`;\n output += ` ${chalk.yellow('get-block-commitment')} Get block commitment data\\n\\n`;\n\n // Network Operations\n output += chalk.bold.blue('🌐 Network Operations:\\n');\n output += ` ${chalk.blue('get-latest-blockhash')} Get the latest blockhash\\n`;\n output += ` ${chalk.blue('get-block')} Get block by slot\\n`;\n output += ` ${chalk.blue('get-transaction')} Get transaction details\\n`;\n output += ` ${chalk.blue('send-transaction')} Send a signed transaction\\n`;\n output += ` ${chalk.blue('simulate-transaction')} Simulate transaction execution\\n`;\n output += ` ${chalk.blue('get-signatures-for-address')} Get address transaction history\\n`;\n output += ` ${chalk.blue('request-airdrop')} Request lamports airdrop\\n`;\n output += ` ${chalk.blue('get-cluster-nodes')} Get cluster node info\\n\\n`;\n\n // Testing & Development (Cheatcodes)\n output += chalk.bold.magenta('🔧 Testing & Development:\\n');\n output += ` ${chalk.magenta('time-travel')} Time travel to epoch/slot\\n`;\n output += ` ${chalk.magenta('pause-clock')} Pause network clock\\n`;\n output += ` ${chalk.magenta('resume-clock')} Resume network clock\\n`;\n output += ` ${chalk.magenta('set-account')} Modify account data\\n`;\n output += ` ${chalk.magenta('set-token-account')} Update token account\\n`;\n output += ` ${chalk.magenta('reset-account')} Reset account state\\n`;\n output += ` ${chalk.magenta('reset-network')} Reset entire network\\n`;\n output += ` ${chalk.magenta('set-program-authority')} Set program authority\\n\\n`;\n\n // Additional Commands\n output += chalk.bold.gray('📋 Additional Commands:\\n');\n output += chalk.gray(' get-blocks, get-block-time, is-blockhash-valid,\\n');\n output += chalk.gray(' get-fee-for-message, get-signature-statuses,\\n');\n output += chalk.gray(' get-recent-prioritization-fees, and more...\\n\\n');\n\n // Footer\n output += chalk.gray('💡 Tips:\\n');\n output += chalk.gray(' Use ') + chalk.cyan('surfman --help') + chalk.gray(' to see all 38 commands grouped by module\\n');\n output += chalk.gray(' Use ') + chalk.cyan('surfman <command> --help') + chalk.gray(' for detailed command options\\n');\n output += chalk.gray('📖 Documentation: ') + chalk.cyan('https://github.com/your-repo/surfman\\n');\n\n return output;\n },\n});\n\n// Cheatcodes\nprogram.addCommand(createTimeTravelCommand());\nprogram.addCommand(createSetAccountCommand());\nprogram.addCommand(createSetProgramAuthorityCommand());\nprogram.addCommand(createPauseClockCommand());\nprogram.addCommand(createResumeClockCommand());\nprogram.addCommand(createGetLocalSignaturesCommand());\nprogram.addCommand(createSetTokenAccountCommand());\nprogram.addCommand(createResetAccountCommand());\nprogram.addCommand(createResetNetworkCommand());\n\n// Network\nprogram.addCommand(createGetLatestBlockhashCommand());\nprogram.addCommand(createGetBlockCommand());\nprogram.addCommand(createGetTransactionCommand());\nprogram.addCommand(createSendTransactionCommand());\nprogram.addCommand(createGetClusterNodesCommand());\nprogram.addCommand(createRequestAirdropCommand());\nprogram.addCommand(createGetBlocksCommand());\nprogram.addCommand(createGetSignaturesForAddressCommand());\nprogram.addCommand(createIsBlockhashValidCommand());\nprogram.addCommand(createGetFeeForMessageCommand());\nprogram.addCommand(createGetRecentPrioritizationFeesCommand());\nprogram.addCommand(createGetBlockTimeCommand());\nprogram.addCommand(createGetBlocksWithLimitCommand());\nprogram.addCommand(createGetFirstAvailableBlockCommand());\nprogram.addCommand(createMinimumLedgerSlotCommand());\nprogram.addCommand(createGetSignatureStatusesCommand());\nprogram.addCommand(createSimulateTransactionCommand());\nprogram.addCommand(createGetRecentPerformanceSamplesCommand());\n\n// Accounts\nprogram.addCommand(createGetAccountInfoCommand());\nprogram.addCommand(createGetMultipleAccountsCommand());\nprogram.addCommand(createGetBlockCommitmentCommand());\nprogram.addCommand(createGetTokenAccountBalanceCommand());\nprogram.addCommand(createGetTokenSupplyCommand());\n\n// Scan\nprogram.addCommand(createGetProgramAccountsCommand());\nprogram.addCommand(createGetLargestAccountsCommand());\nprogram.addCommand(createGetSupplyCommand());\nprogram.addCommand(createGetTokenLargestAccountsCommand());\nprogram.addCommand(createGetTokenAccountsByOwnerCommand());\nprogram.addCommand(createGetTokenAccountsByDelegateCommand());\n\nprogram.parse();\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createTimeTravelCommand(): Command {\n const command = new Command('time-travel')\n .description('Time travel to a specific epoch, slot, or timestamp')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--epoch <number>', 'Absolute epoch number')\n .option('--slot <number>', 'Absolute slot number')\n .option('--timestamp <number>', 'Absolute timestamp (microseconds)')\n .option('--relative <time>', 'Relative time (e.g., +1d, +1w, +12h, +30m)')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n let config: any = {};\n\n if (options.epoch) {\n config.absoluteEpoch = parseInt(options.epoch);\n } else if (options.slot) {\n config.absoluteSlot = parseInt(options.slot);\n } else if (options.timestamp) {\n config.absoluteTimestamp = parseInt(options.timestamp);\n } else if (options.relative) {\n const timeStr = options.relative;\n let secondsToAdd = 0;\n\n if (timeStr.endsWith('d')) {\n secondsToAdd = parseInt(timeStr.slice(0, -1)) * 24 * 60 * 60;\n } else if (timeStr.endsWith('w')) {\n secondsToAdd = parseInt(timeStr.slice(0, -1)) * 7 * 24 * 60 * 60;\n } else if (timeStr.endsWith('h')) {\n secondsToAdd = parseInt(timeStr.slice(0, -1)) * 60 * 60;\n } else if (timeStr.endsWith('m')) {\n secondsToAdd = parseInt(timeStr.slice(0, -1)) * 60;\n } else if (timeStr.endsWith('s')) {\n secondsToAdd = parseInt(timeStr.slice(0, -1));\n } else {\n throw new Error('Invalid time format. Use: +1d, +1w, +1h, +30m, +60s');\n }\n\n const currentTimestamp = Date.now();\n config.absoluteTimestamp = currentTimestamp + secondsToAdd * 1000;\n } else {\n const oneWeekInMilliseconds = 7 * 24 * 60 * 60 * 1000;\n config.absoluteTimestamp = Date.now() + oneWeekInMilliseconds;\n logger.info('No time specified, defaulting to +1 week');\n }\n\n const result = await client.cheatcodes.timeTravel(config);\n\n logger.success('Time travel successful!');\n logger.log(` Absolute Slot: ${result.absoluteSlot}`);\n logger.log(` Epoch: ${result.epoch}`);\n logger.log(` Slot Index: ${result.slotIndex}`);\n logger.log(` Slots in Epoch: ${result.slotsInEpoch}`);\n if (result.blockHeight) {\n logger.log(` Block Height: ${result.blockHeight}`);\n }\n } catch (error) {\n logger.error(`Failed to time travel: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import chalk from 'chalk';\n\nexport const logger = {\n info: (message: string) => console.log(chalk.blue('ℹ'), message),\n success: (message: string) => console.log(chalk.green('✓'), message),\n error: (message: string) => console.error(chalk.red('✗'), message),\n warn: (message: string) => console.warn(chalk.yellow('⚠'), message),\n log: (message: string) => console.log(message),\n};\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createSetAccountCommand(): Command {\n const command = new Command('set-account')\n .description('Modify account data, lamports, owner, etc.')\n .requiredOption('--pubkey <address>', 'Account public key')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--data <hex>', 'Account data (hex string)')\n .option('--lamports <amount>', 'Account lamports')\n .option('--owner <address>', 'Account owner')\n .option('--executable', 'Mark account as executable')\n .option('--rent-epoch <epoch>', 'Rent epoch')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const update: any = {};\n\n if (options.data) {\n update.data = options.data;\n }\n if (options.lamports) {\n update.lamports = parseInt(options.lamports);\n }\n if (options.owner) {\n update.owner = options.owner;\n }\n if (options.executable) {\n update.executable = true;\n }\n if (options.rentEpoch) {\n update.rentEpoch = parseInt(options.rentEpoch);\n }\n\n if (Object.keys(update).length === 0) {\n logger.error('No update fields specified. Use --data, --lamports, --owner, etc.');\n process.exit(1);\n }\n\n await client.cheatcodes.setAccount(options.pubkey, update);\n\n logger.success(`Account ${options.pubkey} updated successfully!`);\n logger.log('Updated fields:');\n Object.entries(update).forEach(([key, value]) => {\n logger.log(` ${key}: ${value}`);\n });\n } catch (error) {\n logger.error(`Failed to set account: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createSetProgramAuthorityCommand(): Command {\n const command = new Command('set-program-authority')\n .description('Set or remove program upgrade authority')\n .requiredOption('--program-id <address>', 'Program ID')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--new-authority <address>', 'New authority address')\n .option('--remove-authority', 'Remove authority (make program immutable)')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n let newAuthority: string | null;\n\n if (options.removeAuthority) {\n newAuthority = null;\n logger.info('Removing program authority (making immutable)');\n } else if (options.newAuthority) {\n newAuthority = options.newAuthority;\n logger.info(`Setting new authority to: ${newAuthority}`);\n } else {\n logger.error('Must specify either --new-authority or --remove-authority');\n process.exit(1);\n }\n\n await client.cheatcodes.setProgramAuthority(\n options.programId,\n newAuthority\n );\n\n logger.success(`Program authority updated successfully!`);\n logger.log(` Program ID: ${options.programId}`);\n logger.log(` New Authority: ${newAuthority ?? 'null (removed)'}`);\n } catch (error) {\n logger.error(\n `Failed to set program authority: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createPauseClockCommand(): Command {\n const command = new Command('pause-clock')\n .description('Pause the Surfnet clock (freeze time progression)')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const result = await client.cheatcodes.pauseClock();\n\n logger.success('Clock paused successfully!');\n logger.log(` Absolute Slot: ${result.absoluteSlot}`);\n logger.log(` Epoch: ${result.epoch}`);\n logger.log(` Slot Index: ${result.slotIndex}`);\n logger.log(` Slots in Epoch: ${result.slotsInEpoch}`);\n if (result.blockHeight) {\n logger.log(` Block Height: ${result.blockHeight}`);\n }\n } catch (error) {\n logger.error(`Failed to pause clock: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createResumeClockCommand(): Command {\n const command = new Command('resume-clock')\n .description('Resume the Surfnet clock (restart time progression)')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const result = await client.cheatcodes.resumeClock();\n\n logger.success('Clock resumed successfully!');\n logger.log(` Absolute Slot: ${result.absoluteSlot}`);\n logger.log(` Epoch: ${result.epoch}`);\n logger.log(` Slot Index: ${result.slotIndex}`);\n logger.log(` Slots in Epoch: ${result.slotsInEpoch}`);\n if (result.blockHeight) {\n logger.log(` Block Height: ${result.blockHeight}`);\n }\n } catch (error) {\n logger.error(`Failed to resume clock: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetLocalSignaturesCommand(): Command {\n const command = new Command('get-local-signatures')\n .description('Get recent local transaction signatures')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--limit <number>', 'Maximum number of signatures to return', '50')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const limit = parseInt(options.limit);\n\n const signatures = await client.cheatcodes.getLocalSignatures(limit);\n\n logger.success(`Retrieved ${signatures.length} signature(s):`);\n signatures.forEach((sig, index) => {\n logger.log(`\\n${index + 1}. Signature: ${sig.signature}`);\n logger.log(` Slot: ${sig.slot}`);\n logger.log(` Error: ${sig.err ? JSON.stringify(sig.err) : 'None'}`);\n if (sig.logs && sig.logs.length > 0) {\n logger.log(` Logs: ${sig.logs.length} line(s)`);\n }\n });\n } catch (error) {\n logger.error(\n `Failed to get signatures: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createSetTokenAccountCommand(): Command {\n const command = new Command('set-token-account')\n .description('Set or update token account properties')\n .requiredOption('--owner <address>', 'Token account owner address')\n .requiredOption('--mint <address>', 'Token mint address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--amount <number>', 'Token amount')\n .option('--delegate <address>', 'Delegate address (use \"none\" to clear)')\n .option('--state <state>', 'Account state (initialized, frozen, etc.)')\n .option('--delegated-amount <number>', 'Delegated amount')\n .option(\n '--close-authority <address>',\n 'Close authority address (use \"none\" to clear)'\n )\n .option('--token-program <address>', 'Token program address')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const update: any = {};\n\n if (options.amount) {\n update.amount = parseInt(options.amount);\n }\n if (options.delegate) {\n if (options.delegate.toLowerCase() === 'none') {\n update.delegate = { NoAccount: true };\n } else {\n update.delegate = { Account: options.delegate };\n }\n }\n if (options.state) {\n update.state = options.state;\n }\n if (options.delegatedAmount) {\n update.delegatedAmount = parseInt(options.delegatedAmount);\n }\n if (options.closeAuthority) {\n if (options.closeAuthority.toLowerCase() === 'none') {\n update.closeAuthority = { NoAccount: true };\n } else {\n update.closeAuthority = { Account: options.closeAuthority };\n }\n }\n\n if (Object.keys(update).length === 0) {\n logger.error('No update fields specified');\n process.exit(1);\n }\n\n await client.cheatcodes.setTokenAccount(\n options.owner,\n options.mint,\n update,\n options.tokenProgram\n );\n\n logger.success('Token account updated successfully!');\n logger.log(` Owner: ${options.owner}`);\n logger.log(` Mint: ${options.mint}`);\n logger.log('Updated fields:');\n Object.entries(update).forEach(([key, value]) => {\n logger.log(` ${key}: ${JSON.stringify(value)}`);\n });\n } catch (error) {\n logger.error(\n `Failed to set token account: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createResetAccountCommand(): Command {\n const command = new Command('reset-account')\n .description('Reset an account to its initial state')\n .requiredOption('--pubkey <address>', 'Account public key')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option(\n '--include-owned',\n 'Also reset accounts owned by this account',\n false\n )\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.includeOwned\n ? { includeOwnedAccounts: true }\n : undefined;\n\n await client.cheatcodes.resetAccount(options.pubkey, config);\n\n logger.success(`Account ${options.pubkey} reset successfully!`);\n if (options.includeOwned) {\n logger.log(' Owned accounts were also reset');\n }\n } catch (error) {\n logger.error(`Failed to reset account: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createResetNetworkCommand(): Command {\n const command = new Command('reset-network')\n .description('Reset the entire Surfnet network to initial state')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--confirm', 'Confirm network reset (required)', false)\n .action(async (options) => {\n try {\n if (!options.confirm) {\n logger.error(\n 'Network reset requires confirmation. Use --confirm flag.'\n );\n logger.warn(\n 'Warning: This will reset ALL accounts and state in the network!'\n );\n process.exit(1);\n }\n\n const client = new Surfman(options.rpc);\n\n logger.warn('Resetting network...');\n await client.cheatcodes.resetNetwork();\n\n logger.success('Network reset successfully!');\n logger.log('All accounts and state have been cleared.');\n } catch (error) {\n logger.error(`Failed to reset network: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetLatestBlockhashCommand(): Command {\n const command = new Command('get-latest-blockhash')\n .description('Get the latest blockhash')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const result = await client.network.getLatestBlockhash(config);\n\n logger.success('Latest blockhash retrieved:');\n logger.log(` Blockhash: ${result.blockhash}`);\n logger.log(` Last Valid Block Height: ${result.lastValidBlockHeight}`);\n } catch (error) {\n logger.error(\n `Failed to get latest blockhash: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetBlockCommand(): Command {\n const command = new Command('get-block')\n .description('Get block information by slot')\n .requiredOption('--slot <number>', 'Slot number')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--encoding <type>', 'Encoding type', 'json')\n .option('--rewards', 'Include rewards', false)\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const slot = parseInt(options.slot);\n\n const config = {\n encoding: options.encoding,\n rewards: options.rewards,\n };\n\n const block = await client.network.getBlock(slot, config);\n\n if (!block) {\n logger.warn(`No block found at slot ${slot}`);\n return;\n }\n\n logger.success(`Block at slot ${slot}:`);\n logger.log(` Blockhash: ${block.blockhash}`);\n logger.log(` Previous Blockhash: ${block.previousBlockhash}`);\n logger.log(` Parent Slot: ${block.parentSlot}`);\n if (block.blockTime) {\n logger.log(\n ` Block Time: ${new Date(block.blockTime * 1000).toISOString()}`\n );\n }\n if (block.blockHeight !== null && block.blockHeight !== undefined) {\n logger.log(` Block Height: ${block.blockHeight}`);\n }\n if (block.transactions) {\n logger.log(` Transactions: ${block.transactions.length}`);\n }\n } catch (error) {\n logger.error(`Failed to get block: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTransactionCommand(): Command {\n const command = new Command('get-transaction')\n .description('Get transaction details by signature')\n .requiredOption('--signature <sig>', 'Transaction signature')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--encoding <type>', 'Encoding type', 'json')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = {\n encoding: options.encoding,\n };\n\n const tx = await client.network.getTransaction(\n options.signature,\n config\n );\n\n if (!tx) {\n logger.warn(`Transaction not found: ${options.signature}`);\n return;\n }\n\n logger.success(`Transaction ${options.signature}:`);\n logger.log(` Slot: ${tx.slot}`);\n if (tx.blockTime) {\n logger.log(\n ` Block Time: ${new Date(tx.blockTime * 1000).toISOString()}`\n );\n }\n if (tx.meta) {\n logger.log(` Status: ${tx.meta.err ? 'Failed' : 'Success'}`);\n if (tx.meta.err) {\n logger.log(` Error: ${JSON.stringify(tx.meta.err)}`);\n }\n }\n } catch (error) {\n logger.error(\n `Failed to get transaction: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createSendTransactionCommand(): Command {\n const command = new Command('send-transaction')\n .description('Send a signed transaction')\n .requiredOption('--transaction <data>', 'Base64 encoded transaction')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--skip-preflight', 'Skip preflight checks', false)\n .option('--encoding <type>', 'Encoding type', 'base64')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = {\n skipPreflight: options.skipPreflight,\n encoding: options.encoding,\n };\n\n const signature = await client.network.sendTransaction(\n options.transaction,\n config\n );\n\n logger.success(`Transaction sent successfully!`);\n logger.log(` Signature: ${signature}`);\n } catch (error) {\n logger.error(\n `Failed to send transaction: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetClusterNodesCommand(): Command {\n const command = new Command('get-cluster-nodes')\n .description('Get information about cluster nodes')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const nodes = await client.network.getClusterNodes();\n\n logger.success(`Found ${nodes.length} cluster node(s):`);\n nodes.forEach((node, index) => {\n logger.log(`\\n${index + 1}. ${node.pubkey}`);\n if (node.gossip) logger.log(` Gossip: ${node.gossip}`);\n if (node.tpu) logger.log(` TPU: ${node.tpu}`);\n if (node.rpc) logger.log(` RPC: ${node.rpc}`);\n if (node.version) logger.log(` Version: ${node.version}`);\n });\n } catch (error) {\n logger.error(\n `Failed to get cluster nodes: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createRequestAirdropCommand(): Command {\n const command = new Command('request-airdrop')\n .description('Request an airdrop of lamports')\n .requiredOption('--pubkey <address>', 'Public key to airdrop to')\n .requiredOption('--lamports <amount>', 'Amount in lamports')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const lamports = parseInt(options.lamports);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const signature = await client.network.requestAirdrop(\n options.pubkey,\n lamports,\n config\n );\n\n logger.success(`Airdrop requested successfully!`);\n logger.log(` Signature: ${signature}`);\n logger.log(` Amount: ${lamports} lamports`);\n logger.log(` Recipient: ${options.pubkey}`);\n } catch (error) {\n logger.error(\n `Failed to request airdrop: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetBlocksCommand(): Command {\n const command = new Command('get-blocks')\n .description('Get list of confirmed blocks between two slots')\n .requiredOption('--start-slot <number>', 'Start slot (inclusive)')\n .option('--end-slot <number>', 'End slot (exclusive)')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const startSlot = parseInt(options.startSlot);\n const endSlot = options.endSlot ? parseInt(options.endSlot) : undefined;\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const blocks = await client.network.getBlocks(startSlot, endSlot, config);\n\n logger.success(`Found ${blocks.length} confirmed block(s):`);\n if (blocks.length > 0) {\n logger.log(` First: ${blocks[0]}`);\n logger.log(` Last: ${blocks[blocks.length - 1]}`);\n if (blocks.length <= 20) {\n logger.log(` All slots: ${blocks.join(', ')}`);\n } else {\n logger.log(` (showing first and last only, total: ${blocks.length})`);\n }\n }\n } catch (error) {\n logger.error(`Failed to get blocks: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetSignaturesForAddressCommand(): Command {\n const command = new Command('get-signatures-for-address')\n .description('Get confirmed signatures for transactions involving an address')\n .requiredOption('--address <pubkey>', 'Account address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--limit <number>', 'Maximum number of signatures', '10')\n .option('--before <signature>', 'Start searching backwards from this signature')\n .option('--until <signature>', 'Search until this signature')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n limit: parseInt(options.limit),\n };\n\n if (options.before) config.before = options.before;\n if (options.until) config.until = options.until;\n\n const signatures = await client.network.getSignaturesForAddress(\n options.address,\n config\n );\n\n logger.success(`Found ${signatures.length} signature(s):`);\n signatures.forEach((sig, index) => {\n logger.log(`\\n${index + 1}. ${sig.signature}`);\n logger.log(` Slot: ${sig.slot}`);\n logger.log(` Status: ${sig.err ? 'Failed' : 'Success'}`);\n if (sig.blockTime) {\n logger.log(\n ` Time: ${new Date(sig.blockTime * 1000).toISOString()}`\n );\n }\n if (sig.memo) {\n logger.log(` Memo: ${sig.memo}`);\n }\n });\n } catch (error) {\n logger.error(\n `Failed to get signatures: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createIsBlockhashValidCommand(): Command {\n const command = new Command('is-blockhash-valid')\n .description('Check if a blockhash is still valid')\n .requiredOption('--blockhash <hash>', 'Blockhash to check')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const isValid = await client.network.isBlockhashValid(\n options.blockhash,\n config\n );\n\n if (isValid) {\n logger.success(`Blockhash ${options.blockhash} is VALID`);\n } else {\n logger.warn(`Blockhash ${options.blockhash} is EXPIRED`);\n }\n } catch (error) {\n logger.error(\n `Failed to check blockhash: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetFeeForMessageCommand(): Command {\n const command = new Command('get-fee-for-message')\n .description('Get the fee required for a message')\n .requiredOption('--message <data>', 'Base64 encoded message')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const fee = await client.network.getFeeForMessage(\n options.message,\n config\n );\n\n if (fee !== null) {\n logger.success(`Transaction fee: ${fee} lamports`);\n logger.log(` In SOL: ${fee / 1_000_000_000} SOL`);\n } else {\n logger.warn('Could not determine fee (blockhash may be expired)');\n }\n } catch (error) {\n logger.error(`Failed to get fee: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetRecentPrioritizationFeesCommand(): Command {\n const command = new Command('get-recent-prioritization-fees')\n .description('Get recent prioritization fees')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--addresses <addresses...>', 'Account addresses to filter by')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const fees = await client.network.getRecentPrioritizationFees(\n options.addresses\n );\n\n logger.success(`Retrieved ${fees.length} fee sample(s):`);\n \n if (fees.length > 0) {\n const avgFee =\n fees.reduce((sum, f) => sum + f.prioritizationFee, 0) / fees.length;\n const maxFee = Math.max(...fees.map((f) => f.prioritizationFee));\n const minFee = Math.min(...fees.map((f) => f.prioritizationFee));\n\n logger.log(`\\nSummary:`);\n logger.log(` Average Fee: ${avgFee.toFixed(2)} micro-lamports`);\n logger.log(` Max Fee: ${maxFee} micro-lamports`);\n logger.log(` Min Fee: ${minFee} micro-lamports`);\n\n logger.log(`\\nRecent samples (newest first):`);\n fees.slice(0, 10).forEach((fee, index) => {\n logger.log(\n ` ${index + 1}. Slot ${fee.slot}: ${fee.prioritizationFee} micro-lamports`\n );\n });\n }\n } catch (error) {\n logger.error(\n `Failed to get prioritization fees: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetBlockTimeCommand(): Command {\n const command = new Command('get-block-time')\n .description('Get estimated production time of a block')\n .requiredOption('--slot <number>', 'Slot number')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const slot = parseInt(options.slot);\n\n const blockTime = await client.network.getBlockTime(slot);\n\n if (blockTime !== null) {\n const date = new Date(blockTime * 1000);\n logger.success(`Block time for slot ${slot}:`);\n logger.log(` Unix Timestamp: ${blockTime}`);\n logger.log(` Date: ${date.toISOString()}`);\n logger.log(` Local: ${date.toLocaleString()}`);\n } else {\n logger.warn(`No block time available for slot ${slot}`);\n }\n } catch (error) {\n logger.error(`Failed to get block time: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetBlocksWithLimitCommand(): Command {\n const command = new Command('get-blocks-with-limit')\n .description('Get confirmed blocks starting at a slot with a limit')\n .requiredOption('--start-slot <number>', 'Start slot (inclusive)')\n .requiredOption('--limit <number>', 'Maximum number of blocks')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const startSlot = parseInt(options.startSlot);\n const limit = parseInt(options.limit);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const blocks = await client.network.getBlocksWithLimit(\n startSlot,\n limit,\n config\n );\n\n logger.success(`Found ${blocks.length} confirmed block(s):`);\n if (blocks.length > 0) {\n logger.log(` First: ${blocks[0]}`);\n logger.log(` Last: ${blocks[blocks.length - 1]}`);\n if (blocks.length <= 20) {\n logger.log(` All slots: ${blocks.join(', ')}`);\n } else {\n logger.log(` (showing first and last only, total: ${blocks.length})`);\n }\n }\n } catch (error) {\n logger.error(`Failed to get blocks: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetFirstAvailableBlockCommand(): Command {\n const command = new Command('get-first-available-block')\n .description('Get the slot of the lowest confirmed block')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const slot = await client.network.getFirstAvailableBlock();\n\n logger.success(`First available block:`);\n logger.log(` Slot: ${slot}`);\n } catch (error) {\n logger.error(\n `Failed to get first available block: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createMinimumLedgerSlotCommand(): Command {\n const command = new Command('minimum-ledger-slot')\n .description('Get the minimum slot that the node has information about')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const slot = await client.network.minimumLedgerSlot();\n\n logger.success(`Minimum ledger slot:`);\n logger.log(` Slot: ${slot}`);\n } catch (error) {\n logger.error(\n `Failed to get minimum ledger slot: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetSignatureStatusesCommand(): Command {\n const command = new Command('get-signature-statuses')\n .description('Get the statuses of a list of signatures')\n .requiredOption('--signatures <sigs...>', 'Transaction signatures')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--search-history', 'Search transaction history', false)\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.searchHistory\n ? { searchTransactionHistory: true }\n : undefined;\n\n const statuses = await client.network.getSignatureStatuses(\n options.signatures,\n config\n );\n\n logger.success(`Retrieved ${statuses.length} signature status(es):`);\n statuses.forEach((status, index) => {\n const sig = options.signatures[index];\n logger.log(`\\n${index + 1}. ${sig}`);\n \n if (status) {\n logger.log(` Slot: ${status.slot}`);\n logger.log(` Confirmations: ${status.confirmations ?? 'max'}`);\n logger.log(` Status: ${status.err ? 'Failed' : 'Success'}`);\n if (status.confirmationStatus) {\n logger.log(` Confirmation: ${status.confirmationStatus}`);\n }\n if (status.err) {\n logger.log(` Error: ${JSON.stringify(status.err)}`);\n }\n } else {\n logger.log(' Status: Not found');\n }\n });\n } catch (error) {\n logger.error(\n `Failed to get signature statuses: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createSimulateTransactionCommand(): Command {\n const command = new Command('simulate-transaction')\n .description('Simulate a transaction without committing it')\n .requiredOption('--transaction <data>', 'Base64 encoded transaction')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--sig-verify', 'Enable signature verification', true)\n .option('--commitment <level>', 'Commitment level')\n .option('--encoding <type>', 'Encoding type', 'base64')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n sigVerify: options.sigVerify,\n encoding: options.encoding,\n };\n\n if (options.commitment) {\n config.commitment = options.commitment;\n }\n\n const result = await client.network.simulateTransaction(\n options.transaction,\n config\n );\n\n if (result.err) {\n logger.error('Transaction simulation failed:');\n logger.log(JSON.stringify(result.err, null, 2));\n } else {\n logger.success('Transaction simulation successful!');\n }\n\n if (result.logs && result.logs.length > 0) {\n logger.log('\\nLogs:');\n result.logs.forEach((log) => logger.log(` ${log}`));\n }\n\n if (result.unitsConsumed) {\n logger.log(`\\nCompute units consumed: ${result.unitsConsumed}`);\n }\n\n if (result.accounts) {\n logger.log(`\\nAccounts modified: ${result.accounts.length}`);\n }\n\n if (result.returnData) {\n logger.log(`\\nReturn data: ${JSON.stringify(result.returnData)}`);\n }\n } catch (error) {\n logger.error(\n `Failed to simulate transaction: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetRecentPerformanceSamplesCommand(): Command {\n const command = new Command('get-recent-performance-samples')\n .description('Get recent performance samples')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--limit <number>', 'Maximum number of samples', '10')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const limit = parseInt(options.limit);\n\n const samples = await client.network.getRecentPerformanceSamples(limit);\n\n logger.success(`Retrieved ${samples.length} performance sample(s):`);\n samples.forEach((sample, index) => {\n logger.log(`\\n${index + 1}. Slot ${sample.slot}`);\n logger.log(` Transactions: ${sample.numTransactions}`);\n logger.log(` Slots: ${sample.numSlots}`);\n logger.log(` Sample Period: ${sample.samplePeriodSecs}s`);\n if (sample.numNonVoteTransactions !== undefined) {\n logger.log(\n ` Non-vote Transactions: ${sample.numNonVoteTransactions}`\n );\n }\n const tps = (\n sample.numTransactions / sample.samplePeriodSecs\n ).toFixed(2);\n logger.log(` TPS: ${tps}`);\n });\n } catch (error) {\n logger.error(\n `Failed to get performance samples: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetAccountInfoCommand(): Command {\n const command = new Command('get-account-info')\n .description('Get detailed information about an account')\n .requiredOption('--pubkey <address>', 'Account public key')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--encoding <type>', 'Data encoding', 'base64')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n encoding: options.encoding,\n };\n\n if (options.commitment) {\n config.commitment = options.commitment;\n }\n\n const account = await client.accounts.getAccountInfo(\n options.pubkey,\n config\n );\n\n if (!account) {\n logger.warn(`Account not found: ${options.pubkey}`);\n return;\n }\n\n logger.success(`Account Info for ${options.pubkey}:`);\n logger.log(` Lamports: ${account.lamports}`);\n logger.log(` Owner: ${account.owner}`);\n logger.log(` Executable: ${account.executable}`);\n logger.log(` Rent Epoch: ${account.rentEpoch}`);\n if (account.space !== undefined) {\n logger.log(` Space: ${account.space} bytes`);\n }\n if (account.data) {\n logger.log(` Data: ${JSON.stringify(account.data).substring(0, 100)}...`);\n }\n } catch (error) {\n logger.error(\n `Failed to get account info: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetMultipleAccountsCommand(): Command {\n const command = new Command('get-multiple-accounts')\n .description('Get information for multiple accounts')\n .requiredOption('--pubkeys <addresses...>', 'Account public keys')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--encoding <type>', 'Data encoding', 'base64')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n encoding: options.encoding,\n };\n\n if (options.commitment) {\n config.commitment = options.commitment;\n }\n\n const accounts = await client.accounts.getMultipleAccounts(\n options.pubkeys,\n config\n );\n\n logger.success(`Retrieved ${accounts.length} account(s):`);\n accounts.forEach((account, index) => {\n const pubkey = options.pubkeys[index];\n logger.log(`\\n${index + 1}. ${pubkey}`);\n \n if (account) {\n logger.log(` Lamports: ${account.lamports}`);\n logger.log(` Owner: ${account.owner}`);\n logger.log(` Executable: ${account.executable}`);\n } else {\n logger.log(' Status: Account not found');\n }\n });\n } catch (error) {\n logger.error(\n `Failed to get accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetBlockCommitmentCommand(): Command {\n const command = new Command('get-block-commitment')\n .description('Get commitment information for a block')\n .requiredOption('--slot <number>', 'Block slot number')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const slot = parseInt(options.slot);\n\n const commitment = await client.accounts.getBlockCommitment(slot);\n\n logger.success(`Block commitment for slot ${slot}:`);\n logger.log(` Total Stake: ${commitment.totalStake}`);\n if (commitment.commitment) {\n const nonZeroLevels = commitment.commitment\n .map((count, level) => ({ level, count }))\n .filter((item) => item.count > 0);\n \n if (nonZeroLevels.length > 0) {\n logger.log(` Commitment levels:`);\n nonZeroLevels.forEach(({ level, count }) => {\n logger.log(` Level ${level}: ${count} votes`);\n });\n } else {\n logger.log(` No commitment votes recorded`);\n }\n } else {\n logger.log(` No commitment data available`);\n }\n } catch (error) {\n logger.error(\n `Failed to get block commitment: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTokenAccountBalanceCommand(): Command {\n const command = new Command('get-token-account-balance')\n .description('Get token balance of a token account')\n .requiredOption('--pubkey <address>', 'Token account public key')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const balance = await client.accounts.getTokenAccountBalance(\n options.pubkey,\n config\n );\n\n if (!balance) {\n logger.warn(`No token balance found for ${options.pubkey}`);\n return;\n }\n\n logger.success(`Token account balance for ${options.pubkey}:`);\n logger.log(` Amount: ${balance.amount}`);\n logger.log(` Decimals: ${balance.decimals}`);\n logger.log(` UI Amount: ${balance.uiAmount ?? 'N/A'}`);\n logger.log(` UI Amount String: ${balance.uiAmountString}`);\n } catch (error) {\n logger.error(\n `Failed to get token balance: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTokenSupplyCommand(): Command {\n const command = new Command('get-token-supply')\n .description('Get total supply of a token')\n .requiredOption('--mint <address>', 'Token mint address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const supply = await client.accounts.getTokenSupply(\n options.mint,\n config\n );\n\n logger.success(`Token supply for mint ${options.mint}:`);\n logger.log(` Total Supply: ${supply.amount}`);\n logger.log(` Decimals: ${supply.decimals}`);\n logger.log(` UI Amount: ${supply.uiAmount ?? 'N/A'}`);\n logger.log(` UI Amount String: ${supply.uiAmountString}`);\n } catch (error) {\n logger.error(\n `Failed to get token supply: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetProgramAccountsCommand(): Command {\n const command = new Command('get-program-accounts')\n .description('Get all accounts owned by a program')\n .requiredOption('--program-id <address>', 'Program public key')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--encoding <type>', 'Data encoding', 'base64')\n .option('--with-context', 'Include context in response', false)\n .option('--data-size <number>', 'Filter by data size')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n encoding: options.encoding,\n withContext: options.withContext,\n };\n\n if (options.dataSize) {\n config.filters = [{ dataSize: parseInt(options.dataSize) }];\n }\n\n const accounts = await client.scan.getProgramAccounts(\n options.programId,\n config\n );\n\n logger.success(`Found ${accounts.length} account(s) owned by ${options.programId}:`);\n \n if (accounts.length > 0) {\n accounts.slice(0, 10).forEach((acc, index) => {\n logger.log(`\\n${index + 1}. ${acc.pubkey}`);\n logger.log(` Lamports: ${acc.account.lamports}`);\n logger.log(` Owner: ${acc.account.owner}`);\n });\n\n if (accounts.length > 10) {\n logger.log(`\\n... and ${accounts.length - 10} more accounts`);\n }\n }\n } catch (error) {\n logger.error(\n `Failed to get program accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetLargestAccountsCommand(): Command {\n const command = new Command('get-largest-accounts')\n .description('Get the 20 largest accounts by lamport balance')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--filter <type>', 'Filter type (circulating/nonCirculating)')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {};\n if (options.filter) {\n config.filter = options.filter;\n }\n if (options.commitment) {\n config.commitment = options.commitment;\n }\n\n const accounts = await client.scan.getLargestAccounts(\n Object.keys(config).length > 0 ? config : undefined\n );\n\n logger.success(`Top ${accounts.length} largest accounts:`);\n accounts.forEach((acc, index) => {\n const sol = (acc.lamports / 1e9).toFixed(4);\n logger.log(`${index + 1}. ${acc.address}`);\n logger.log(` Balance: ${acc.lamports} lamports (${sol} SOL)\\n`);\n });\n } catch (error) {\n logger.error(\n `Failed to get largest accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetSupplyCommand(): Command {\n const command = new Command('get-supply')\n .description('Get current supply information')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--exclude-accounts', 'Exclude non-circulating accounts list', false)\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n excludeNonCirculatingAccountsList: options.excludeAccounts,\n };\n if (options.commitment) {\n config.commitment = options.commitment;\n }\n\n const supply = await client.scan.getSupply(config);\n\n const totalSOL = (supply.total / 1e9).toFixed(2);\n const circulatingSOL = (supply.circulating / 1e9).toFixed(2);\n const nonCirculatingSOL = (supply.nonCirculating / 1e9).toFixed(2);\n\n logger.success('Network Supply:');\n logger.log(` Total: ${supply.total} lamports (${totalSOL} SOL)`);\n logger.log(` Circulating: ${supply.circulating} lamports (${circulatingSOL} SOL)`);\n logger.log(` Non-Circulating: ${supply.nonCirculating} lamports (${nonCirculatingSOL} SOL)`);\n \n if (!options.excludeAccounts && supply.nonCirculatingAccounts.length > 0) {\n logger.log(`\\n Non-Circulating Accounts: ${supply.nonCirculatingAccounts.length}`);\n }\n } catch (error) {\n logger.error(`Failed to get supply: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTokenLargestAccountsCommand(): Command {\n const command = new Command('get-token-largest-accounts')\n .description('Get largest holders of a specific token')\n .requiredOption('--mint <address>', 'Token mint address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const accounts = await client.scan.getTokenLargestAccounts(\n options.mint,\n config\n );\n\n logger.success(`Top ${accounts.length} holders of token ${options.mint}:`);\n accounts.forEach((acc, index) => {\n logger.log(`\\n${index + 1}. ${acc.address}`);\n logger.log(` Amount: ${acc.amount} (${acc.uiAmountString})`);\n logger.log(` Decimals: ${acc.decimals}`);\n });\n } catch (error) {\n logger.error(\n `Failed to get token largest accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTokenAccountsByOwnerCommand(): Command {\n const command = new Command('get-token-accounts-by-owner')\n .description('Get all token accounts owned by an address')\n .requiredOption('--owner <address>', 'Owner wallet address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--mint <address>', 'Filter by token mint')\n .option('--program-id <address>', 'Filter by program ID')\n .option('--encoding <type>', 'Data encoding', 'jsonParsed')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n if (!options.mint && !options.programId) {\n logger.error('Must specify either --mint or --program-id filter');\n process.exit(1);\n }\n\n const filter = options.mint\n ? { mint: options.mint }\n : { programId: options.programId };\n\n const config = {\n encoding: options.encoding,\n };\n\n const accounts = await client.scan.getTokenAccountsByOwner(\n options.owner,\n filter,\n config\n );\n\n logger.success(`Found ${accounts.length} token account(s) for ${options.owner}:`);\n accounts.forEach((acc, index) => {\n logger.log(`\\n${index + 1}. ${acc.pubkey}`);\n logger.log(` Lamports: ${acc.account.lamports}`);\n logger.log(` Owner: ${acc.account.owner}`);\n });\n } catch (error) {\n logger.error(\n `Failed to get token accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTokenAccountsByDelegateCommand(): Command {\n const command = new Command('get-token-accounts-by-delegate')\n .description('Get token accounts delegated to an address')\n .requiredOption('--delegate <address>', 'Delegate address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--mint <address>', 'Filter by token mint')\n .option('--program-id <address>', 'Filter by program ID')\n .option('--encoding <type>', 'Data encoding', 'jsonParsed')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n if (!options.mint && !options.programId) {\n logger.error('Must specify either --mint or --program-id filter');\n process.exit(1);\n }\n\n const filter = options.mint\n ? { mint: options.mint }\n : { programId: options.programId };\n\n const config = {\n encoding: options.encoding,\n };\n\n const accounts = await client.scan.getTokenAccountsByDelegate(\n options.delegate,\n filter,\n config\n );\n\n logger.success(`Found ${accounts.length} delegated account(s) for ${options.delegate}:`);\n accounts.forEach((acc, index) => {\n logger.log(`\\n${index + 1}. ${acc.pubkey}`);\n logger.log(` Lamports: ${acc.account.lamports}`);\n logger.log(` Owner: ${acc.account.owner}`);\n });\n } catch (error) {\n logger.error(\n `Failed to get delegated accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n"],"mappings":"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","names":["import_commander","import_chalk","chalk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","chalk"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/commands/cheatcodes/time-travel.ts","../src/utils/logger.ts","../src/commands/cheatcodes/set-account.ts","../src/commands/cheatcodes/set-program-authority.ts","../src/commands/cheatcodes/pause-clock.ts","../src/commands/cheatcodes/resume-clock.ts","../src/commands/cheatcodes/get-local-signatures.ts","../src/commands/cheatcodes/set-token-account.ts","../src/commands/cheatcodes/reset-account.ts","../src/commands/cheatcodes/reset-network.ts","../src/commands/network/get-latest-blockhash.ts","../src/commands/network/get-block.ts","../src/commands/network/get-transaction.ts","../src/commands/network/send-transaction.ts","../src/commands/network/get-cluster-nodes.ts","../src/commands/network/request-airdrop.ts","../src/commands/network/get-blocks.ts","../src/commands/network/get-signatures-for-address.ts","../src/commands/network/is-blockhash-valid.ts","../src/commands/network/get-fee-for-message.ts","../src/commands/network/get-recent-prioritization-fees.ts","../src/commands/network/get-block-time.ts","../src/commands/network/get-blocks-with-limit.ts","../src/commands/network/get-first-available-block.ts","../src/commands/network/minimum-ledger-slot.ts","../src/commands/network/get-signature-statuses.ts","../src/commands/network/simulate-transaction.ts","../src/commands/network/get-recent-performance-samples.ts","../src/commands/accounts/get-account-info.ts","../src/commands/accounts/get-multiple-accounts.ts","../src/commands/accounts/get-block-commitment.ts","../src/commands/accounts/get-token-account-balance.ts","../src/commands/accounts/get-token-supply.ts","../src/commands/scan/get-program-accounts.ts","../src/commands/scan/get-largest-accounts.ts","../src/commands/scan/get-supply.ts","../src/commands/scan/get-token-largest-accounts.ts","../src/commands/scan/get-token-accounts-by-owner.ts","../src/commands/scan/get-token-accounts-by-delegate.ts"],"sourcesContent":["import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { createTimeTravelCommand } from './commands/cheatcodes/time-travel';\nimport { createSetAccountCommand } from './commands/cheatcodes/set-account';\nimport { createSetProgramAuthorityCommand } from './commands/cheatcodes/set-program-authority';\nimport { createPauseClockCommand } from './commands/cheatcodes/pause-clock';\nimport { createResumeClockCommand } from './commands/cheatcodes/resume-clock';\nimport { createGetLocalSignaturesCommand } from './commands/cheatcodes/get-local-signatures';\nimport { createSetTokenAccountCommand } from './commands/cheatcodes/set-token-account';\nimport { createResetAccountCommand } from './commands/cheatcodes/reset-account';\nimport { createResetNetworkCommand } from './commands/cheatcodes/reset-network';\nimport { createGetLatestBlockhashCommand } from './commands/network/get-latest-blockhash';\nimport { createGetBlockCommand } from './commands/network/get-block';\nimport { createGetTransactionCommand } from './commands/network/get-transaction';\nimport { createSendTransactionCommand } from './commands/network/send-transaction';\nimport { createGetClusterNodesCommand } from './commands/network/get-cluster-nodes';\nimport { createRequestAirdropCommand } from './commands/network/request-airdrop';\nimport { createGetBlocksCommand } from './commands/network/get-blocks';\nimport { createGetSignaturesForAddressCommand } from './commands/network/get-signatures-for-address';\nimport { createIsBlockhashValidCommand } from './commands/network/is-blockhash-valid';\nimport { createGetFeeForMessageCommand } from './commands/network/get-fee-for-message';\nimport { createGetRecentPrioritizationFeesCommand } from './commands/network/get-recent-prioritization-fees';\nimport { createGetBlockTimeCommand } from './commands/network/get-block-time';\nimport { createGetBlocksWithLimitCommand } from './commands/network/get-blocks-with-limit';\nimport { createGetFirstAvailableBlockCommand } from './commands/network/get-first-available-block';\nimport { createMinimumLedgerSlotCommand } from './commands/network/minimum-ledger-slot';\nimport { createGetSignatureStatusesCommand } from './commands/network/get-signature-statuses';\nimport { createSimulateTransactionCommand } from './commands/network/simulate-transaction';\nimport { createGetRecentPerformanceSamplesCommand } from './commands/network/get-recent-performance-samples';\nimport { createGetAccountInfoCommand } from './commands/accounts/get-account-info';\nimport { createGetMultipleAccountsCommand } from './commands/accounts/get-multiple-accounts';\nimport { createGetBlockCommitmentCommand } from './commands/accounts/get-block-commitment';\nimport { createGetTokenAccountBalanceCommand } from './commands/accounts/get-token-account-balance';\nimport { createGetTokenSupplyCommand } from './commands/accounts/get-token-supply';\nimport { createGetProgramAccountsCommand } from './commands/scan/get-program-accounts';\nimport { createGetLargestAccountsCommand } from './commands/scan/get-largest-accounts';\nimport { createGetSupplyCommand } from './commands/scan/get-supply';\nimport { createGetTokenLargestAccountsCommand } from './commands/scan/get-token-largest-accounts';\nimport { createGetTokenAccountsByOwnerCommand } from './commands/scan/get-token-accounts-by-owner';\nimport { createGetTokenAccountsByDelegateCommand } from './commands/scan/get-token-accounts-by-delegate';\n\nconst program = new Command();\n\n// Check for --help to show complete list\nconst isFullHelp = process.argv.includes('--help');\nconst isShortHelp = process.argv.includes('-h');\n\n// Handle --help flag to show complete command list\nif (isFullHelp) {\n console.log(chalk.bold.cyan('\\n🌊 Surfman CLI - Complete Command List\\n'));\n \n console.log(chalk.bold.yellow('📦 Account Queries (5 commands):\\n'));\n console.log(` ${chalk.yellow('get-account-info')} Get detailed account information`);\n console.log(` ${chalk.yellow('get-multiple-accounts')} Batch query multiple accounts`);\n console.log(` ${chalk.yellow('get-token-account-balance')} Get token account balance`);\n console.log(` ${chalk.yellow('get-token-supply')} Get total token supply`);\n console.log(` ${chalk.yellow('get-block-commitment')} Get block commitment data\\n`);\n \n console.log(chalk.bold.blue('🌐 Network Operations (18 commands):\\n'));\n console.log(chalk.dim(' Block Queries:'));\n console.log(` ${chalk.blue('get-latest-blockhash')} Get the latest blockhash`);\n console.log(` ${chalk.blue('get-block')} Get block information by slot`);\n console.log(` ${chalk.blue('get-block-time')} Get block production time`);\n console.log(` ${chalk.blue('get-blocks')} Get list of confirmed blocks`);\n console.log(` ${chalk.blue('get-blocks-with-limit')} Get blocks with limit`);\n console.log(` ${chalk.blue('get-first-available-block')} Get first available block`);\n console.log(` ${chalk.blue('minimum-ledger-slot')} Get minimum ledger slot\\n`);\n \n console.log(chalk.dim(' Transaction Operations:'));\n console.log(` ${chalk.blue('get-transaction')} Get transaction details`);\n console.log(` ${chalk.blue('get-signature-statuses')} Get signature statuses`);\n console.log(` ${chalk.blue('get-signatures-for-address')} Get address transaction history`);\n console.log(` ${chalk.blue('send-transaction')} Send a signed transaction`);\n console.log(` ${chalk.blue('simulate-transaction')} Simulate transaction execution\\n`);\n \n console.log(chalk.dim(' Network Info & Fees:'));\n console.log(` ${chalk.blue('is-blockhash-valid')} Check if blockhash is valid`);\n console.log(` ${chalk.blue('get-fee-for-message')} Get fee for a message`);\n console.log(` ${chalk.blue('get-recent-prioritization-fees')} Get recent priority fees`);\n console.log(` ${chalk.blue('get-cluster-nodes')} Get cluster node information`);\n console.log(` ${chalk.blue('get-recent-performance-samples')} Get performance samples`);\n console.log(` ${chalk.blue('request-airdrop')} Request lamports airdrop\\n`);\n \n console.log(chalk.bold.magenta('🔧 Testing & Development (9 commands):\\n'));\n console.log(chalk.dim(' Time Control:'));\n console.log(` ${chalk.magenta('time-travel')} Time travel to epoch/slot/timestamp`);\n console.log(` ${chalk.magenta('pause-clock')} Pause the network clock`);\n console.log(` ${chalk.magenta('resume-clock')} Resume the network clock\\n`);\n \n console.log(chalk.dim(' Account Manipulation:'));\n console.log(` ${chalk.magenta('set-account')} Modify account data/lamports/owner`);\n console.log(` ${chalk.magenta('set-token-account')} Update token account properties`);\n console.log(` ${chalk.magenta('reset-account')} Reset account to initial state\\n`);\n \n console.log(chalk.dim(' Network Management:'));\n console.log(` ${chalk.magenta('reset-network')} Reset entire network state`);\n console.log(` ${chalk.magenta('get-local-signatures')} Get recent local signatures`);\n console.log(` ${chalk.magenta('set-program-authority')} Set/remove program authority\\n`);\n \n console.log(chalk.bold.green('📊 Scan & Analytics (6 commands):\\n'));\n console.log(chalk.dim(' Batch Queries:'));\n console.log(` ${chalk.green('get-program-accounts')} Get all accounts owned by a program`);\n console.log(` ${chalk.green('get-largest-accounts')} Get top 20 accounts by balance`);\n console.log(` ${chalk.green('get-supply')} Get network supply information\\n`);\n \n console.log(chalk.dim(' Token Distribution:'));\n console.log(` ${chalk.green('get-token-largest-accounts')} Get largest token holders`);\n console.log(` ${chalk.green('get-token-accounts-by-owner')} Get token accounts by owner`);\n console.log(` ${chalk.green('get-token-accounts-by-delegate')} Get delegated token accounts\\n`);\n \n console.log(chalk.bold.cyan('📊 Summary:\\n'));\n console.log(` Total Commands: ${chalk.bold('38')}`);\n console.log(` Account Queries: ${chalk.yellow('5')}`);\n console.log(` Network Operations: ${chalk.blue('18')}`);\n console.log(` Testing & Development: ${chalk.magenta('9')}`);\n console.log(` Scan & Analytics: ${chalk.green('6')}\\n`);\n \n console.log(chalk.gray('💡 Use ') + chalk.cyan('surfman <command> --help') + chalk.gray(' for detailed options\\n'));\n process.exit(0);\n}\n\nprogram\n .name('surfman')\n .description('CLI tool for SurfPool RPC API interaction')\n .version('0.1.0');\n\n// Custom help configuration\nprogram.configureHelp({\n formatHelp: (cmd, helper) => {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth || 80;\n\n let output = '';\n \n // Title\n output += chalk.bold.cyan('\\n🌊 Surfman CLI\\n\\n');\n output += chalk.gray('CLI tool for SurfPool RPC API interaction\\n\\n');\n\n // Usage\n output += chalk.bold('Usage:\\n');\n output += ` $ surfman ${chalk.yellow('<command>')} ${chalk.gray('[options]')}\\n\\n`;\n\n // Options\n output += chalk.bold('Options:\\n');\n output += ` -V, --version ${chalk.gray('Output the version number')}\\n`;\n output += ` -h ${chalk.gray('Display frequently used commands (quick view)')}\\n`;\n output += ` --help ${chalk.gray('Display all commands grouped by module')}\\n\\n`;\n\n // Frequently Used Commands\n output += chalk.bold.green('⭐ Frequently Used:\\n');\n output += ` ${chalk.cyan('get-account-info')} ${chalk.gray('Get account information')}\\n`;\n output += ` ${chalk.cyan('get-latest-blockhash')} ${chalk.gray('Get latest blockhash')}\\n`;\n output += ` ${chalk.cyan('send-transaction')} ${chalk.gray('Send a transaction')}\\n`;\n output += ` ${chalk.cyan('request-airdrop')} ${chalk.gray('Request SOL airdrop')}\\n`;\n output += ` ${chalk.cyan('time-travel')} ${chalk.gray('Time travel for testing')}\\n\\n`;\n\n // Account Queries\n output += chalk.bold.yellow('📦 Account Queries:\\n');\n output += ` ${chalk.yellow('get-account-info')} Get detailed account information\\n`;\n output += ` ${chalk.yellow('get-multiple-accounts')} Batch query multiple accounts\\n`;\n output += ` ${chalk.yellow('get-token-account-balance')} Get token account balance\\n`;\n output += ` ${chalk.yellow('get-token-supply')} Get total token supply\\n`;\n output += ` ${chalk.yellow('get-block-commitment')} Get block commitment data\\n\\n`;\n\n // Network Operations\n output += chalk.bold.blue('🌐 Network Operations:\\n');\n output += ` ${chalk.blue('get-latest-blockhash')} Get the latest blockhash\\n`;\n output += ` ${chalk.blue('get-block')} Get block by slot\\n`;\n output += ` ${chalk.blue('get-transaction')} Get transaction details\\n`;\n output += ` ${chalk.blue('send-transaction')} Send a signed transaction\\n`;\n output += ` ${chalk.blue('simulate-transaction')} Simulate transaction execution\\n`;\n output += ` ${chalk.blue('get-signatures-for-address')} Get address transaction history\\n`;\n output += ` ${chalk.blue('request-airdrop')} Request lamports airdrop\\n`;\n output += ` ${chalk.blue('get-cluster-nodes')} Get cluster node info\\n\\n`;\n\n // Testing & Development (Cheatcodes)\n output += chalk.bold.magenta('🔧 Testing & Development:\\n');\n output += ` ${chalk.magenta('time-travel')} Time travel to epoch/slot\\n`;\n output += ` ${chalk.magenta('pause-clock')} Pause network clock\\n`;\n output += ` ${chalk.magenta('resume-clock')} Resume network clock\\n`;\n output += ` ${chalk.magenta('set-account')} Modify account data\\n`;\n output += ` ${chalk.magenta('set-token-account')} Update token account\\n`;\n output += ` ${chalk.magenta('reset-account')} Reset account state\\n`;\n output += ` ${chalk.magenta('reset-network')} Reset entire network\\n`;\n output += ` ${chalk.magenta('set-program-authority')} Set program authority\\n\\n`;\n\n // Additional Commands\n output += chalk.bold.gray('📋 Additional Commands:\\n');\n output += chalk.gray(' get-blocks, get-block-time, is-blockhash-valid,\\n');\n output += chalk.gray(' get-fee-for-message, get-signature-statuses,\\n');\n output += chalk.gray(' get-recent-prioritization-fees, and more...\\n\\n');\n\n // Footer\n output += chalk.gray('💡 Tips:\\n');\n output += chalk.gray(' Use ') + chalk.cyan('surfman --help') + chalk.gray(' to see all 38 commands grouped by module\\n');\n output += chalk.gray(' Use ') + chalk.cyan('surfman <command> --help') + chalk.gray(' for detailed command options\\n');\n output += chalk.gray('📖 Documentation: ') + chalk.cyan('https://github.com/your-repo/surfman\\n');\n\n return output;\n },\n});\n\n// Cheatcodes\nprogram.addCommand(createTimeTravelCommand());\nprogram.addCommand(createSetAccountCommand());\nprogram.addCommand(createSetProgramAuthorityCommand());\nprogram.addCommand(createPauseClockCommand());\nprogram.addCommand(createResumeClockCommand());\nprogram.addCommand(createGetLocalSignaturesCommand());\nprogram.addCommand(createSetTokenAccountCommand());\nprogram.addCommand(createResetAccountCommand());\nprogram.addCommand(createResetNetworkCommand());\n\n// Network\nprogram.addCommand(createGetLatestBlockhashCommand());\nprogram.addCommand(createGetBlockCommand());\nprogram.addCommand(createGetTransactionCommand());\nprogram.addCommand(createSendTransactionCommand());\nprogram.addCommand(createGetClusterNodesCommand());\nprogram.addCommand(createRequestAirdropCommand());\nprogram.addCommand(createGetBlocksCommand());\nprogram.addCommand(createGetSignaturesForAddressCommand());\nprogram.addCommand(createIsBlockhashValidCommand());\nprogram.addCommand(createGetFeeForMessageCommand());\nprogram.addCommand(createGetRecentPrioritizationFeesCommand());\nprogram.addCommand(createGetBlockTimeCommand());\nprogram.addCommand(createGetBlocksWithLimitCommand());\nprogram.addCommand(createGetFirstAvailableBlockCommand());\nprogram.addCommand(createMinimumLedgerSlotCommand());\nprogram.addCommand(createGetSignatureStatusesCommand());\nprogram.addCommand(createSimulateTransactionCommand());\nprogram.addCommand(createGetRecentPerformanceSamplesCommand());\n\n// Accounts\nprogram.addCommand(createGetAccountInfoCommand());\nprogram.addCommand(createGetMultipleAccountsCommand());\nprogram.addCommand(createGetBlockCommitmentCommand());\nprogram.addCommand(createGetTokenAccountBalanceCommand());\nprogram.addCommand(createGetTokenSupplyCommand());\n\n// Scan\nprogram.addCommand(createGetProgramAccountsCommand());\nprogram.addCommand(createGetLargestAccountsCommand());\nprogram.addCommand(createGetSupplyCommand());\nprogram.addCommand(createGetTokenLargestAccountsCommand());\nprogram.addCommand(createGetTokenAccountsByOwnerCommand());\nprogram.addCommand(createGetTokenAccountsByDelegateCommand());\n\nprogram.parse();\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createTimeTravelCommand(): Command {\n const command = new Command('time-travel')\n .description('Time travel to a specific epoch, slot, or timestamp')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--epoch <number>', 'Absolute epoch number')\n .option('--slot <number>', 'Absolute slot number')\n .option('--timestamp <number>', 'Absolute timestamp (microseconds)')\n .option('--relative <time>', 'Relative time (e.g., +1d, +1w, +12h, +30m)')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n let config: any = {};\n\n if (options.epoch) {\n config.absoluteEpoch = parseInt(options.epoch);\n } else if (options.slot) {\n config.absoluteSlot = parseInt(options.slot);\n } else if (options.timestamp) {\n config.absoluteTimestamp = parseInt(options.timestamp);\n } else if (options.relative) {\n const timeStr = options.relative;\n let secondsToAdd = 0;\n\n if (timeStr.endsWith('d')) {\n secondsToAdd = parseInt(timeStr.slice(0, -1)) * 24 * 60 * 60;\n } else if (timeStr.endsWith('w')) {\n secondsToAdd = parseInt(timeStr.slice(0, -1)) * 7 * 24 * 60 * 60;\n } else if (timeStr.endsWith('h')) {\n secondsToAdd = parseInt(timeStr.slice(0, -1)) * 60 * 60;\n } else if (timeStr.endsWith('m')) {\n secondsToAdd = parseInt(timeStr.slice(0, -1)) * 60;\n } else if (timeStr.endsWith('s')) {\n secondsToAdd = parseInt(timeStr.slice(0, -1));\n } else {\n throw new Error('Invalid time format. Use: +1d, +1w, +1h, +30m, +60s');\n }\n\n const currentTimestamp = Date.now();\n config.absoluteTimestamp = currentTimestamp + secondsToAdd * 1000;\n } else {\n const oneWeekInMilliseconds = 7 * 24 * 60 * 60 * 1000;\n config.absoluteTimestamp = Date.now() + oneWeekInMilliseconds;\n logger.info('No time specified, defaulting to +1 week');\n }\n\n const result = await client.cheatcodes.timeTravel(config);\n\n logger.success('Time travel successful!');\n logger.log(` Absolute Slot: ${result.absoluteSlot}`);\n logger.log(` Epoch: ${result.epoch}`);\n logger.log(` Slot Index: ${result.slotIndex}`);\n logger.log(` Slots in Epoch: ${result.slotsInEpoch}`);\n if (result.blockHeight) {\n logger.log(` Block Height: ${result.blockHeight}`);\n }\n } catch (error) {\n logger.error(`Failed to time travel: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import chalk from 'chalk';\n\nexport const logger = {\n info: (message: string) => console.log(chalk.blue('ℹ'), message),\n success: (message: string) => console.log(chalk.green('✓'), message),\n error: (message: string) => console.error(chalk.red('✗'), message),\n warn: (message: string) => console.warn(chalk.yellow('⚠'), message),\n log: (message: string) => console.log(message),\n};\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createSetAccountCommand(): Command {\n const command = new Command('set-account')\n .description('Modify account data, lamports, owner, etc.')\n .requiredOption('--pubkey <address>', 'Account public key')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--data <hex>', 'Account data (hex string)')\n .option('--lamports <amount>', 'Account lamports')\n .option('--owner <address>', 'Account owner')\n .option('--executable', 'Mark account as executable')\n .option('--rent-epoch <epoch>', 'Rent epoch')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const update: any = {};\n\n if (options.data) {\n update.data = options.data;\n }\n if (options.lamports) {\n update.lamports = parseInt(options.lamports);\n }\n if (options.owner) {\n update.owner = options.owner;\n }\n if (options.executable) {\n update.executable = true;\n }\n if (options.rentEpoch) {\n update.rentEpoch = parseInt(options.rentEpoch);\n }\n\n if (Object.keys(update).length === 0) {\n logger.error('No update fields specified. Use --data, --lamports, --owner, etc.');\n process.exit(1);\n }\n\n await client.cheatcodes.setAccount(options.pubkey, update);\n\n logger.success(`Account ${options.pubkey} updated successfully!`);\n logger.log('Updated fields:');\n Object.entries(update).forEach(([key, value]) => {\n logger.log(` ${key}: ${value}`);\n });\n } catch (error) {\n logger.error(`Failed to set account: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createSetProgramAuthorityCommand(): Command {\n const command = new Command('set-program-authority')\n .description('Set or remove program upgrade authority')\n .requiredOption('--program-id <address>', 'Program ID')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--new-authority <address>', 'New authority address')\n .option('--remove-authority', 'Remove authority (make program immutable)')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n let newAuthority: string | null;\n\n if (options.removeAuthority) {\n newAuthority = null;\n logger.info('Removing program authority (making immutable)');\n } else if (options.newAuthority) {\n newAuthority = options.newAuthority;\n logger.info(`Setting new authority to: ${newAuthority}`);\n } else {\n logger.error('Must specify either --new-authority or --remove-authority');\n process.exit(1);\n }\n\n await client.cheatcodes.setProgramAuthority(\n options.programId,\n newAuthority\n );\n\n logger.success(`Program authority updated successfully!`);\n logger.log(` Program ID: ${options.programId}`);\n logger.log(` New Authority: ${newAuthority ?? 'null (removed)'}`);\n } catch (error) {\n logger.error(\n `Failed to set program authority: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createPauseClockCommand(): Command {\n const command = new Command('pause-clock')\n .description('Pause the Surfnet clock (freeze time progression)')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const result = await client.cheatcodes.pauseClock();\n\n logger.success('Clock paused successfully!');\n logger.log(` Absolute Slot: ${result.absoluteSlot}`);\n logger.log(` Epoch: ${result.epoch}`);\n logger.log(` Slot Index: ${result.slotIndex}`);\n logger.log(` Slots in Epoch: ${result.slotsInEpoch}`);\n if (result.blockHeight) {\n logger.log(` Block Height: ${result.blockHeight}`);\n }\n } catch (error) {\n logger.error(`Failed to pause clock: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createResumeClockCommand(): Command {\n const command = new Command('resume-clock')\n .description('Resume the Surfnet clock (restart time progression)')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const result = await client.cheatcodes.resumeClock();\n\n logger.success('Clock resumed successfully!');\n logger.log(` Absolute Slot: ${result.absoluteSlot}`);\n logger.log(` Epoch: ${result.epoch}`);\n logger.log(` Slot Index: ${result.slotIndex}`);\n logger.log(` Slots in Epoch: ${result.slotsInEpoch}`);\n if (result.blockHeight) {\n logger.log(` Block Height: ${result.blockHeight}`);\n }\n } catch (error) {\n logger.error(`Failed to resume clock: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetLocalSignaturesCommand(): Command {\n const command = new Command('get-local-signatures')\n .description('Get recent local transaction signatures')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--limit <number>', 'Maximum number of signatures to return', '50')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const limit = parseInt(options.limit);\n\n const signatures = await client.cheatcodes.getLocalSignatures(limit);\n\n logger.success(`Retrieved ${signatures.length} signature(s):`);\n signatures.forEach((sig, index) => {\n logger.log(`\\n${index + 1}. Signature: ${sig.signature}`);\n logger.log(` Slot: ${sig.slot}`);\n logger.log(` Error: ${sig.err ? JSON.stringify(sig.err) : 'None'}`);\n if (sig.logs && sig.logs.length > 0) {\n logger.log(` Logs: ${sig.logs.length} line(s)`);\n }\n });\n } catch (error) {\n logger.error(\n `Failed to get signatures: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createSetTokenAccountCommand(): Command {\n const command = new Command('set-token-account')\n .description('Set or update token account properties')\n .requiredOption('--owner <address>', 'Token account owner address')\n .requiredOption('--mint <address>', 'Token mint address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--amount <number>', 'Token amount')\n .option('--delegate <address>', 'Delegate address (use \"none\" to clear)')\n .option('--state <state>', 'Account state (initialized, frozen, etc.)')\n .option('--delegated-amount <number>', 'Delegated amount')\n .option(\n '--close-authority <address>',\n 'Close authority address (use \"none\" to clear)'\n )\n .option('--token-program <address>', 'Token program address')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const update: any = {};\n\n if (options.amount) {\n update.amount = parseInt(options.amount);\n }\n if (options.delegate) {\n if (options.delegate.toLowerCase() === 'none') {\n update.delegate = { NoAccount: true };\n } else {\n update.delegate = { Account: options.delegate };\n }\n }\n if (options.state) {\n update.state = options.state;\n }\n if (options.delegatedAmount) {\n update.delegatedAmount = parseInt(options.delegatedAmount);\n }\n if (options.closeAuthority) {\n if (options.closeAuthority.toLowerCase() === 'none') {\n update.closeAuthority = { NoAccount: true };\n } else {\n update.closeAuthority = { Account: options.closeAuthority };\n }\n }\n\n if (Object.keys(update).length === 0) {\n logger.error('No update fields specified');\n process.exit(1);\n }\n\n await client.cheatcodes.setTokenAccount(\n options.owner,\n options.mint,\n update,\n options.tokenProgram\n );\n\n logger.success('Token account updated successfully!');\n logger.log(` Owner: ${options.owner}`);\n logger.log(` Mint: ${options.mint}`);\n logger.log('Updated fields:');\n Object.entries(update).forEach(([key, value]) => {\n logger.log(` ${key}: ${JSON.stringify(value)}`);\n });\n } catch (error) {\n logger.error(\n `Failed to set token account: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createResetAccountCommand(): Command {\n const command = new Command('reset-account')\n .description('Reset an account to its initial state')\n .requiredOption('--pubkey <address>', 'Account public key')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option(\n '--include-owned',\n 'Also reset accounts owned by this account',\n false\n )\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.includeOwned\n ? { includeOwnedAccounts: true }\n : undefined;\n\n await client.cheatcodes.resetAccount(options.pubkey, config);\n\n logger.success(`Account ${options.pubkey} reset successfully!`);\n if (options.includeOwned) {\n logger.log(' Owned accounts were also reset');\n }\n } catch (error) {\n logger.error(`Failed to reset account: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createResetNetworkCommand(): Command {\n const command = new Command('reset-network')\n .description('Reset the entire Surfnet network to initial state')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--confirm', 'Confirm network reset (required)', false)\n .action(async (options) => {\n try {\n if (!options.confirm) {\n logger.error(\n 'Network reset requires confirmation. Use --confirm flag.'\n );\n logger.warn(\n 'Warning: This will reset ALL accounts and state in the network!'\n );\n process.exit(1);\n }\n\n const client = new Surfman(options.rpc);\n\n logger.warn('Resetting network...');\n await client.cheatcodes.resetNetwork();\n\n logger.success('Network reset successfully!');\n logger.log('All accounts and state have been cleared.');\n } catch (error) {\n logger.error(`Failed to reset network: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetLatestBlockhashCommand(): Command {\n const command = new Command('get-latest-blockhash')\n .description('Get the latest blockhash')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const result = await client.network.getLatestBlockhash(config);\n\n logger.success('Latest blockhash retrieved:');\n logger.log(` Blockhash: ${result.blockhash}`);\n logger.log(` Last Valid Block Height: ${result.lastValidBlockHeight}`);\n } catch (error) {\n logger.error(\n `Failed to get latest blockhash: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetBlockCommand(): Command {\n const command = new Command('get-block')\n .description('Get block information by slot')\n .requiredOption('--slot <number>', 'Slot number')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--encoding <type>', 'Encoding type', 'json')\n .option('--rewards', 'Include rewards', false)\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const slot = parseInt(options.slot);\n\n const config = {\n encoding: options.encoding,\n rewards: options.rewards,\n };\n\n const block = await client.network.getBlock(slot, config);\n\n if (!block) {\n logger.warn(`No block found at slot ${slot}`);\n return;\n }\n\n logger.success(`Block at slot ${slot}:`);\n logger.log(` Blockhash: ${block.blockhash}`);\n logger.log(` Previous Blockhash: ${block.previousBlockhash}`);\n logger.log(` Parent Slot: ${block.parentSlot}`);\n if (block.blockTime) {\n logger.log(\n ` Block Time: ${new Date(block.blockTime * 1000).toISOString()}`\n );\n }\n if (block.blockHeight !== null && block.blockHeight !== undefined) {\n logger.log(` Block Height: ${block.blockHeight}`);\n }\n if (block.transactions) {\n logger.log(` Transactions: ${block.transactions.length}`);\n }\n } catch (error) {\n logger.error(`Failed to get block: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTransactionCommand(): Command {\n const command = new Command('get-transaction')\n .description('Get transaction details by signature')\n .requiredOption('--signature <sig>', 'Transaction signature')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--encoding <type>', 'Encoding type', 'json')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = {\n encoding: options.encoding,\n };\n\n const tx = await client.network.getTransaction(\n options.signature,\n config\n );\n\n if (!tx) {\n logger.warn(`Transaction not found: ${options.signature}`);\n return;\n }\n\n logger.success(`Transaction ${options.signature}:`);\n logger.log(` Slot: ${tx.slot}`);\n if (tx.blockTime) {\n logger.log(\n ` Block Time: ${new Date(tx.blockTime * 1000).toISOString()}`\n );\n }\n if (tx.meta) {\n logger.log(` Status: ${tx.meta.err ? 'Failed' : 'Success'}`);\n if (tx.meta.err) {\n logger.log(` Error: ${JSON.stringify(tx.meta.err)}`);\n }\n }\n } catch (error) {\n logger.error(\n `Failed to get transaction: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createSendTransactionCommand(): Command {\n const command = new Command('send-transaction')\n .description('Send a signed transaction')\n .requiredOption('--transaction <data>', 'Base64 encoded transaction')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--skip-preflight', 'Skip preflight checks', false)\n .option('--encoding <type>', 'Encoding type', 'base64')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = {\n skipPreflight: options.skipPreflight,\n encoding: options.encoding,\n };\n\n const signature = await client.network.sendTransaction(\n options.transaction,\n config\n );\n\n logger.success(`Transaction sent successfully!`);\n logger.log(` Signature: ${signature}`);\n } catch (error) {\n logger.error(\n `Failed to send transaction: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetClusterNodesCommand(): Command {\n const command = new Command('get-cluster-nodes')\n .description('Get information about cluster nodes')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const nodes = await client.network.getClusterNodes();\n\n logger.success(`Found ${nodes.length} cluster node(s):`);\n nodes.forEach((node, index) => {\n logger.log(`\\n${index + 1}. ${node.pubkey}`);\n if (node.gossip) logger.log(` Gossip: ${node.gossip}`);\n if (node.tpu) logger.log(` TPU: ${node.tpu}`);\n if (node.rpc) logger.log(` RPC: ${node.rpc}`);\n if (node.version) logger.log(` Version: ${node.version}`);\n });\n } catch (error) {\n logger.error(\n `Failed to get cluster nodes: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createRequestAirdropCommand(): Command {\n const command = new Command('request-airdrop')\n .description('Request an airdrop of lamports')\n .requiredOption('--pubkey <address>', 'Public key to airdrop to')\n .requiredOption('--lamports <amount>', 'Amount in lamports')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const lamports = parseInt(options.lamports);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const signature = await client.network.requestAirdrop(\n options.pubkey,\n lamports,\n config\n );\n\n logger.success(`Airdrop requested successfully!`);\n logger.log(` Signature: ${signature}`);\n logger.log(` Amount: ${lamports} lamports`);\n logger.log(` Recipient: ${options.pubkey}`);\n } catch (error) {\n logger.error(\n `Failed to request airdrop: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetBlocksCommand(): Command {\n const command = new Command('get-blocks')\n .description('Get list of confirmed blocks between two slots')\n .requiredOption('--start-slot <number>', 'Start slot (inclusive)')\n .option('--end-slot <number>', 'End slot (exclusive)')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const startSlot = parseInt(options.startSlot);\n const endSlot = options.endSlot ? parseInt(options.endSlot) : undefined;\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const blocks = await client.network.getBlocks(startSlot, endSlot, config);\n\n logger.success(`Found ${blocks.length} confirmed block(s):`);\n if (blocks.length > 0) {\n logger.log(` First: ${blocks[0]}`);\n logger.log(` Last: ${blocks[blocks.length - 1]}`);\n if (blocks.length <= 20) {\n logger.log(` All slots: ${blocks.join(', ')}`);\n } else {\n logger.log(` (showing first and last only, total: ${blocks.length})`);\n }\n }\n } catch (error) {\n logger.error(`Failed to get blocks: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetSignaturesForAddressCommand(): Command {\n const command = new Command('get-signatures-for-address')\n .description('Get confirmed signatures for transactions involving an address')\n .requiredOption('--address <pubkey>', 'Account address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--limit <number>', 'Maximum number of signatures', '10')\n .option('--before <signature>', 'Start searching backwards from this signature')\n .option('--until <signature>', 'Search until this signature')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n limit: parseInt(options.limit),\n };\n\n if (options.before) config.before = options.before;\n if (options.until) config.until = options.until;\n\n const signatures = await client.network.getSignaturesForAddress(\n options.address,\n config\n );\n\n logger.success(`Found ${signatures.length} signature(s):`);\n signatures.forEach((sig, index) => {\n logger.log(`\\n${index + 1}. ${sig.signature}`);\n logger.log(` Slot: ${sig.slot}`);\n logger.log(` Status: ${sig.err ? 'Failed' : 'Success'}`);\n if (sig.blockTime) {\n logger.log(\n ` Time: ${new Date(sig.blockTime * 1000).toISOString()}`\n );\n }\n if (sig.memo) {\n logger.log(` Memo: ${sig.memo}`);\n }\n });\n } catch (error) {\n logger.error(\n `Failed to get signatures: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createIsBlockhashValidCommand(): Command {\n const command = new Command('is-blockhash-valid')\n .description('Check if a blockhash is still valid')\n .requiredOption('--blockhash <hash>', 'Blockhash to check')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const isValid = await client.network.isBlockhashValid(\n options.blockhash,\n config\n );\n\n if (isValid) {\n logger.success(`Blockhash ${options.blockhash} is VALID`);\n } else {\n logger.warn(`Blockhash ${options.blockhash} is EXPIRED`);\n }\n } catch (error) {\n logger.error(\n `Failed to check blockhash: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetFeeForMessageCommand(): Command {\n const command = new Command('get-fee-for-message')\n .description('Get the fee required for a message')\n .requiredOption('--message <data>', 'Base64 encoded message')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const fee = await client.network.getFeeForMessage(\n options.message,\n config\n );\n\n if (fee !== null) {\n logger.success(`Transaction fee: ${fee} lamports`);\n logger.log(` In SOL: ${fee / 1_000_000_000} SOL`);\n } else {\n logger.warn('Could not determine fee (blockhash may be expired)');\n }\n } catch (error) {\n logger.error(`Failed to get fee: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetRecentPrioritizationFeesCommand(): Command {\n const command = new Command('get-recent-prioritization-fees')\n .description('Get recent prioritization fees')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--addresses <addresses...>', 'Account addresses to filter by')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const fees = await client.network.getRecentPrioritizationFees(\n options.addresses\n );\n\n logger.success(`Retrieved ${fees.length} fee sample(s):`);\n \n if (fees.length > 0) {\n const avgFee =\n fees.reduce((sum, f) => sum + f.prioritizationFee, 0) / fees.length;\n const maxFee = Math.max(...fees.map((f) => f.prioritizationFee));\n const minFee = Math.min(...fees.map((f) => f.prioritizationFee));\n\n logger.log(`\\nSummary:`);\n logger.log(` Average Fee: ${avgFee.toFixed(2)} micro-lamports`);\n logger.log(` Max Fee: ${maxFee} micro-lamports`);\n logger.log(` Min Fee: ${minFee} micro-lamports`);\n\n logger.log(`\\nRecent samples (newest first):`);\n fees.slice(0, 10).forEach((fee, index) => {\n logger.log(\n ` ${index + 1}. Slot ${fee.slot}: ${fee.prioritizationFee} micro-lamports`\n );\n });\n }\n } catch (error) {\n logger.error(\n `Failed to get prioritization fees: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetBlockTimeCommand(): Command {\n const command = new Command('get-block-time')\n .description('Get estimated production time of a block')\n .requiredOption('--slot <number>', 'Slot number')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const slot = parseInt(options.slot);\n\n const blockTime = await client.network.getBlockTime(slot);\n\n if (blockTime !== null) {\n const date = new Date(blockTime * 1000);\n logger.success(`Block time for slot ${slot}:`);\n logger.log(` Unix Timestamp: ${blockTime}`);\n logger.log(` Date: ${date.toISOString()}`);\n logger.log(` Local: ${date.toLocaleString()}`);\n } else {\n logger.warn(`No block time available for slot ${slot}`);\n }\n } catch (error) {\n logger.error(`Failed to get block time: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetBlocksWithLimitCommand(): Command {\n const command = new Command('get-blocks-with-limit')\n .description('Get confirmed blocks starting at a slot with a limit')\n .requiredOption('--start-slot <number>', 'Start slot (inclusive)')\n .requiredOption('--limit <number>', 'Maximum number of blocks')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const startSlot = parseInt(options.startSlot);\n const limit = parseInt(options.limit);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const blocks = await client.network.getBlocksWithLimit(\n startSlot,\n limit,\n config\n );\n\n logger.success(`Found ${blocks.length} confirmed block(s):`);\n if (blocks.length > 0) {\n logger.log(` First: ${blocks[0]}`);\n logger.log(` Last: ${blocks[blocks.length - 1]}`);\n if (blocks.length <= 20) {\n logger.log(` All slots: ${blocks.join(', ')}`);\n } else {\n logger.log(` (showing first and last only, total: ${blocks.length})`);\n }\n }\n } catch (error) {\n logger.error(`Failed to get blocks: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetFirstAvailableBlockCommand(): Command {\n const command = new Command('get-first-available-block')\n .description('Get the slot of the lowest confirmed block')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const slot = await client.network.getFirstAvailableBlock();\n\n logger.success(`First available block:`);\n logger.log(` Slot: ${slot}`);\n } catch (error) {\n logger.error(\n `Failed to get first available block: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createMinimumLedgerSlotCommand(): Command {\n const command = new Command('minimum-ledger-slot')\n .description('Get the minimum slot that the node has information about')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const slot = await client.network.minimumLedgerSlot();\n\n logger.success(`Minimum ledger slot:`);\n logger.log(` Slot: ${slot}`);\n } catch (error) {\n logger.error(\n `Failed to get minimum ledger slot: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetSignatureStatusesCommand(): Command {\n const command = new Command('get-signature-statuses')\n .description('Get the statuses of a list of signatures')\n .requiredOption('--signatures <sigs...>', 'Transaction signatures')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--search-history', 'Search transaction history', false)\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.searchHistory\n ? { searchTransactionHistory: true }\n : undefined;\n\n const statuses = await client.network.getSignatureStatuses(\n options.signatures,\n config\n );\n\n logger.success(`Retrieved ${statuses.length} signature status(es):`);\n statuses.forEach((status, index) => {\n const sig = options.signatures[index];\n logger.log(`\\n${index + 1}. ${sig}`);\n \n if (status) {\n logger.log(` Slot: ${status.slot}`);\n logger.log(` Confirmations: ${status.confirmations ?? 'max'}`);\n logger.log(` Status: ${status.err ? 'Failed' : 'Success'}`);\n if (status.confirmationStatus) {\n logger.log(` Confirmation: ${status.confirmationStatus}`);\n }\n if (status.err) {\n logger.log(` Error: ${JSON.stringify(status.err)}`);\n }\n } else {\n logger.log(' Status: Not found');\n }\n });\n } catch (error) {\n logger.error(\n `Failed to get signature statuses: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createSimulateTransactionCommand(): Command {\n const command = new Command('simulate-transaction')\n .description('Simulate a transaction without committing it')\n .requiredOption('--transaction <data>', 'Base64 encoded transaction')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--sig-verify', 'Enable signature verification', true)\n .option('--commitment <level>', 'Commitment level')\n .option('--encoding <type>', 'Encoding type', 'base64')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n sigVerify: options.sigVerify,\n encoding: options.encoding,\n };\n\n if (options.commitment) {\n config.commitment = options.commitment;\n }\n\n const result = await client.network.simulateTransaction(\n options.transaction,\n config\n );\n\n if (result.err) {\n logger.error('Transaction simulation failed:');\n logger.log(JSON.stringify(result.err, null, 2));\n } else {\n logger.success('Transaction simulation successful!');\n }\n\n if (result.logs && result.logs.length > 0) {\n logger.log('\\nLogs:');\n result.logs.forEach((log) => logger.log(` ${log}`));\n }\n\n if (result.unitsConsumed) {\n logger.log(`\\nCompute units consumed: ${result.unitsConsumed}`);\n }\n\n if (result.accounts) {\n logger.log(`\\nAccounts modified: ${result.accounts.length}`);\n }\n\n if (result.returnData) {\n logger.log(`\\nReturn data: ${JSON.stringify(result.returnData)}`);\n }\n } catch (error) {\n logger.error(\n `Failed to simulate transaction: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetRecentPerformanceSamplesCommand(): Command {\n const command = new Command('get-recent-performance-samples')\n .description('Get recent performance samples')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--limit <number>', 'Maximum number of samples', '10')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const limit = parseInt(options.limit);\n\n const samples = await client.network.getRecentPerformanceSamples(limit);\n\n logger.success(`Retrieved ${samples.length} performance sample(s):`);\n samples.forEach((sample, index) => {\n logger.log(`\\n${index + 1}. Slot ${sample.slot}`);\n logger.log(` Transactions: ${sample.numTransactions}`);\n logger.log(` Slots: ${sample.numSlots}`);\n logger.log(` Sample Period: ${sample.samplePeriodSecs}s`);\n if (sample.numNonVoteTransactions !== undefined) {\n logger.log(\n ` Non-vote Transactions: ${sample.numNonVoteTransactions}`\n );\n }\n const tps = (\n sample.numTransactions / sample.samplePeriodSecs\n ).toFixed(2);\n logger.log(` TPS: ${tps}`);\n });\n } catch (error) {\n logger.error(\n `Failed to get performance samples: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetAccountInfoCommand(): Command {\n const command = new Command('get-account-info')\n .description('Get detailed information about an account')\n .requiredOption('--pubkey <address>', 'Account public key')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--encoding <type>', 'Data encoding', 'base64')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n encoding: options.encoding,\n };\n\n if (options.commitment) {\n config.commitment = options.commitment;\n }\n\n const account = await client.accounts.getAccountInfo(\n options.pubkey,\n config\n );\n\n if (!account) {\n logger.warn(`Account not found: ${options.pubkey}`);\n return;\n }\n\n logger.success(`Account Info for ${options.pubkey}:`);\n logger.log(` Lamports: ${account.lamports}`);\n logger.log(` Owner: ${account.owner}`);\n logger.log(` Executable: ${account.executable}`);\n logger.log(` Rent Epoch: ${account.rentEpoch}`);\n if (account.space !== undefined) {\n logger.log(` Space: ${account.space} bytes`);\n }\n if (account.data) {\n logger.log(` Data: ${JSON.stringify(account.data).substring(0, 100)}...`);\n }\n } catch (error) {\n logger.error(\n `Failed to get account info: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetMultipleAccountsCommand(): Command {\n const command = new Command('get-multiple-accounts')\n .description('Get information for multiple accounts')\n .requiredOption('--pubkeys <addresses...>', 'Account public keys')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--encoding <type>', 'Data encoding', 'base64')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n encoding: options.encoding,\n };\n\n if (options.commitment) {\n config.commitment = options.commitment;\n }\n\n const accounts = await client.accounts.getMultipleAccounts(\n options.pubkeys,\n config\n );\n\n logger.success(`Retrieved ${accounts.length} account(s):`);\n accounts.forEach((account, index) => {\n const pubkey = options.pubkeys[index];\n logger.log(`\\n${index + 1}. ${pubkey}`);\n \n if (account) {\n logger.log(` Lamports: ${account.lamports}`);\n logger.log(` Owner: ${account.owner}`);\n logger.log(` Executable: ${account.executable}`);\n } else {\n logger.log(' Status: Account not found');\n }\n });\n } catch (error) {\n logger.error(\n `Failed to get accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetBlockCommitmentCommand(): Command {\n const command = new Command('get-block-commitment')\n .description('Get commitment information for a block')\n .requiredOption('--slot <number>', 'Block slot number')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n const slot = parseInt(options.slot);\n\n const commitment = await client.accounts.getBlockCommitment(slot);\n\n logger.success(`Block commitment for slot ${slot}:`);\n logger.log(` Total Stake: ${commitment.totalStake}`);\n if (commitment.commitment) {\n const nonZeroLevels = commitment.commitment\n .map((count, level) => ({ level, count }))\n .filter((item) => item.count > 0);\n \n if (nonZeroLevels.length > 0) {\n logger.log(` Commitment levels:`);\n nonZeroLevels.forEach(({ level, count }) => {\n logger.log(` Level ${level}: ${count} votes`);\n });\n } else {\n logger.log(` No commitment votes recorded`);\n }\n } else {\n logger.log(` No commitment data available`);\n }\n } catch (error) {\n logger.error(\n `Failed to get block commitment: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTokenAccountBalanceCommand(): Command {\n const command = new Command('get-token-account-balance')\n .description('Get token balance of a token account')\n .requiredOption('--pubkey <address>', 'Token account public key')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const balance = await client.accounts.getTokenAccountBalance(\n options.pubkey,\n config\n );\n\n if (!balance) {\n logger.warn(`No token balance found for ${options.pubkey}`);\n return;\n }\n\n logger.success(`Token account balance for ${options.pubkey}:`);\n logger.log(` Amount: ${balance.amount}`);\n logger.log(` Decimals: ${balance.decimals}`);\n logger.log(` UI Amount: ${balance.uiAmount ?? 'N/A'}`);\n logger.log(` UI Amount String: ${balance.uiAmountString}`);\n } catch (error) {\n logger.error(\n `Failed to get token balance: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTokenSupplyCommand(): Command {\n const command = new Command('get-token-supply')\n .description('Get total supply of a token')\n .requiredOption('--mint <address>', 'Token mint address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const supply = await client.accounts.getTokenSupply(\n options.mint,\n config\n );\n\n logger.success(`Token supply for mint ${options.mint}:`);\n logger.log(` Total Supply: ${supply.amount}`);\n logger.log(` Decimals: ${supply.decimals}`);\n logger.log(` UI Amount: ${supply.uiAmount ?? 'N/A'}`);\n logger.log(` UI Amount String: ${supply.uiAmountString}`);\n } catch (error) {\n logger.error(\n `Failed to get token supply: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetProgramAccountsCommand(): Command {\n const command = new Command('get-program-accounts')\n .description('Get all accounts owned by a program')\n .requiredOption('--program-id <address>', 'Program public key')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--encoding <type>', 'Data encoding', 'base64')\n .option('--with-context', 'Include context in response', false)\n .option('--data-size <number>', 'Filter by data size')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n encoding: options.encoding,\n withContext: options.withContext,\n };\n\n if (options.dataSize) {\n config.filters = [{ dataSize: parseInt(options.dataSize) }];\n }\n\n const accounts = await client.scan.getProgramAccounts(\n options.programId,\n config\n );\n\n logger.success(`Found ${accounts.length} account(s) owned by ${options.programId}:`);\n \n if (accounts.length > 0) {\n accounts.slice(0, 10).forEach((acc, index) => {\n logger.log(`\\n${index + 1}. ${acc.pubkey}`);\n logger.log(` Lamports: ${acc.account.lamports}`);\n logger.log(` Owner: ${acc.account.owner}`);\n });\n\n if (accounts.length > 10) {\n logger.log(`\\n... and ${accounts.length - 10} more accounts`);\n }\n }\n } catch (error) {\n logger.error(\n `Failed to get program accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetLargestAccountsCommand(): Command {\n const command = new Command('get-largest-accounts')\n .description('Get the 20 largest accounts by lamport balance')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--filter <type>', 'Filter type (circulating/nonCirculating)')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {};\n if (options.filter) {\n config.filter = options.filter;\n }\n if (options.commitment) {\n config.commitment = options.commitment;\n }\n\n const accounts = await client.scan.getLargestAccounts(\n Object.keys(config).length > 0 ? config : undefined\n );\n\n logger.success(`Top ${accounts.length} largest accounts:`);\n accounts.forEach((acc, index) => {\n const sol = (acc.lamports / 1e9).toFixed(4);\n logger.log(`${index + 1}. ${acc.address}`);\n logger.log(` Balance: ${acc.lamports} lamports (${sol} SOL)\\n`);\n });\n } catch (error) {\n logger.error(\n `Failed to get largest accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetSupplyCommand(): Command {\n const command = new Command('get-supply')\n .description('Get current supply information')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--exclude-accounts', 'Exclude non-circulating accounts list', false)\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config: any = {\n excludeNonCirculatingAccountsList: options.excludeAccounts,\n };\n if (options.commitment) {\n config.commitment = options.commitment;\n }\n\n const supply = await client.scan.getSupply(config);\n\n const totalSOL = (supply.total / 1e9).toFixed(2);\n const circulatingSOL = (supply.circulating / 1e9).toFixed(2);\n const nonCirculatingSOL = (supply.nonCirculating / 1e9).toFixed(2);\n\n logger.success('Network Supply:');\n logger.log(` Total: ${supply.total} lamports (${totalSOL} SOL)`);\n logger.log(` Circulating: ${supply.circulating} lamports (${circulatingSOL} SOL)`);\n logger.log(` Non-Circulating: ${supply.nonCirculating} lamports (${nonCirculatingSOL} SOL)`);\n \n if (!options.excludeAccounts && supply.nonCirculatingAccounts.length > 0) {\n logger.log(`\\n Non-Circulating Accounts: ${supply.nonCirculatingAccounts.length}`);\n }\n } catch (error) {\n logger.error(`Failed to get supply: ${(error as Error).message}`);\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTokenLargestAccountsCommand(): Command {\n const command = new Command('get-token-largest-accounts')\n .description('Get largest holders of a specific token')\n .requiredOption('--mint <address>', 'Token mint address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--commitment <level>', 'Commitment level')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n const config = options.commitment\n ? { commitment: options.commitment }\n : undefined;\n\n const accounts = await client.scan.getTokenLargestAccounts(\n options.mint,\n config\n );\n\n logger.success(`Top ${accounts.length} holders of token ${options.mint}:`);\n accounts.forEach((acc, index) => {\n logger.log(`\\n${index + 1}. ${acc.address}`);\n logger.log(` Amount: ${acc.amount} (${acc.uiAmountString})`);\n logger.log(` Decimals: ${acc.decimals}`);\n });\n } catch (error) {\n logger.error(\n `Failed to get token largest accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTokenAccountsByOwnerCommand(): Command {\n const command = new Command('get-token-accounts-by-owner')\n .description('Get all token accounts owned by an address')\n .requiredOption('--owner <address>', 'Owner wallet address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--mint <address>', 'Filter by token mint')\n .option('--program-id <address>', 'Filter by program ID')\n .option('--encoding <type>', 'Data encoding', 'jsonParsed')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n if (!options.mint && !options.programId) {\n logger.error('Must specify either --mint or --program-id filter');\n process.exit(1);\n }\n\n const filter = options.mint\n ? { mint: options.mint }\n : { programId: options.programId };\n\n const config = {\n encoding: options.encoding,\n };\n\n const accounts = await client.scan.getTokenAccountsByOwner(\n options.owner,\n filter,\n config\n );\n\n logger.success(`Found ${accounts.length} token account(s) for ${options.owner}:`);\n accounts.forEach((acc, index) => {\n logger.log(`\\n${index + 1}. ${acc.pubkey}`);\n logger.log(` Lamports: ${acc.account.lamports}`);\n logger.log(` Owner: ${acc.account.owner}`);\n });\n } catch (error) {\n logger.error(\n `Failed to get token accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n","import { Command } from 'commander';\nimport { Surfman } from 'surfman-sdk';\nimport { logger } from '../../utils/logger';\n\nexport function createGetTokenAccountsByDelegateCommand(): Command {\n const command = new Command('get-token-accounts-by-delegate')\n .description('Get token accounts delegated to an address')\n .requiredOption('--delegate <address>', 'Delegate address')\n .option('--rpc <url>', 'RPC URL', 'http://localhost:8899')\n .option('--mint <address>', 'Filter by token mint')\n .option('--program-id <address>', 'Filter by program ID')\n .option('--encoding <type>', 'Data encoding', 'jsonParsed')\n .action(async (options) => {\n try {\n const client = new Surfman(options.rpc);\n\n if (!options.mint && !options.programId) {\n logger.error('Must specify either --mint or --program-id filter');\n process.exit(1);\n }\n\n const filter = options.mint\n ? { mint: options.mint }\n : { programId: options.programId };\n\n const config = {\n encoding: options.encoding,\n };\n\n const accounts = await client.scan.getTokenAccountsByDelegate(\n options.delegate,\n filter,\n config\n );\n\n logger.success(`Found ${accounts.length} delegated account(s) for ${options.delegate}:`);\n accounts.forEach((acc, index) => {\n logger.log(`\\n${index + 1}. ${acc.pubkey}`);\n logger.log(` Lamports: ${acc.account.lamports}`);\n logger.log(` Owner: ${acc.account.owner}`);\n });\n } catch (error) {\n logger.error(\n `Failed to get delegated accounts: ${(error as Error).message}`\n );\n process.exit(1);\n }\n });\n\n return command;\n}\n"],"mappings":"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","names":["import_commander","import_chalk","chalk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","import_commander","import_surfman_sdk","chalk"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "surfman",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "CLI tool for SurfPool RPC API interaction",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -8,7 +8,8 @@
8
8
  "surfman": "./dist/index.js"
9
9
  },
10
10
  "files": [
11
- "dist"
11
+ "dist",
12
+ "README.md"
12
13
  ],
13
14
  "keywords": [
14
15
  "surfpool",
@@ -34,9 +35,9 @@
34
35
  "access": "public"
35
36
  },
36
37
  "dependencies": {
38
+ "surfman-sdk": "^0.1.2",
37
39
  "commander": "^12.0.0",
38
- "chalk": "^5.3.0",
39
- "surfman-sdk": "0.1.0"
40
+ "chalk": "^5.3.0"
40
41
  },
41
42
  "devDependencies": {
42
43
  "@types/node": "^22.0.0",