clawclick-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +141 -0
- package/dist/abi.d.ts +542 -0
- package/dist/abi.d.ts.map +1 -0
- package/dist/abi.js +373 -0
- package/dist/abi.js.map +1 -0
- package/dist/cli/config.d.ts +9 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +51 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +332 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/sdk.d.ts +173 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +438 -0
- package/dist/sdk.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const config_1 = require("./config");
|
|
6
|
+
const viem_1 = require("viem");
|
|
7
|
+
const program = new commander_1.Command();
|
|
8
|
+
program
|
|
9
|
+
.name('clawclick')
|
|
10
|
+
.description('CLI for Claw.Click agents ā launch, trade, manage tokens')
|
|
11
|
+
.version('0.1.0');
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// LAUNCH
|
|
14
|
+
// ============================================================================
|
|
15
|
+
program
|
|
16
|
+
.command('launch')
|
|
17
|
+
.description('Launch a new token')
|
|
18
|
+
.requiredOption('-n, --name <name>', 'Token name')
|
|
19
|
+
.requiredOption('-s, --symbol <symbol>', 'Token symbol')
|
|
20
|
+
.requiredOption('-b, --beneficiary <address>', 'Beneficiary address for fees')
|
|
21
|
+
.option('-m, --mcap <eth>', 'Target MCAP in ETH (default: 1)', '1')
|
|
22
|
+
.option('-a, --agent <address>', 'Agent wallet address (defaults to signer)')
|
|
23
|
+
.option('--fee-wallets <addresses>', 'Comma-separated fee split wallet addresses')
|
|
24
|
+
.option('--fee-pcts <percentages>', 'Comma-separated fee split percentages (must match wallets)')
|
|
25
|
+
.action(async (opts) => {
|
|
26
|
+
try {
|
|
27
|
+
const sdk = (0, config_1.createSDK)();
|
|
28
|
+
console.log(`š¦ Launching token: ${opts.name} (${opts.symbol})`);
|
|
29
|
+
console.log(` Beneficiary: ${opts.beneficiary}`);
|
|
30
|
+
console.log(` Target MCAP: ${opts.mcap} ETH`);
|
|
31
|
+
console.log(` Signer: ${sdk.address}`);
|
|
32
|
+
let feeSplit;
|
|
33
|
+
if (opts.feeWallets) {
|
|
34
|
+
const wallets = opts.feeWallets.split(',').map((w) => w.trim());
|
|
35
|
+
const pcts = (opts.feePcts || '').split(',').map((p) => parseInt(p.trim()));
|
|
36
|
+
if (wallets.length !== pcts.length) {
|
|
37
|
+
throw new Error('Fee wallets and percentages count must match');
|
|
38
|
+
}
|
|
39
|
+
feeSplit = { wallets, percentages: pcts };
|
|
40
|
+
}
|
|
41
|
+
const result = await sdk.launch({
|
|
42
|
+
name: opts.name,
|
|
43
|
+
symbol: opts.symbol,
|
|
44
|
+
beneficiary: opts.beneficiary,
|
|
45
|
+
agentWallet: opts.agent,
|
|
46
|
+
targetMcapETH: opts.mcap,
|
|
47
|
+
feeSplit,
|
|
48
|
+
});
|
|
49
|
+
console.log(`\nā
Token launched!`);
|
|
50
|
+
console.log(` Token: ${result.tokenAddress}`);
|
|
51
|
+
console.log(` Pool ID: ${result.poolId}`);
|
|
52
|
+
console.log(` TX: ${result.txHash}`);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
console.error(`\nā Launch failed: ${err.message}`);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
// ============================================================================
|
|
60
|
+
// BUY
|
|
61
|
+
// ============================================================================
|
|
62
|
+
program
|
|
63
|
+
.command('buy')
|
|
64
|
+
.description('Buy tokens with ETH')
|
|
65
|
+
.requiredOption('-t, --token <address>', 'Token address')
|
|
66
|
+
.requiredOption('-a, --amount <eth>', 'Amount of ETH to spend')
|
|
67
|
+
.option('--slippage <bps>', 'Slippage tolerance in bps (default: 500)', '500')
|
|
68
|
+
.action(async (opts) => {
|
|
69
|
+
try {
|
|
70
|
+
const sdk = (0, config_1.createSDK)();
|
|
71
|
+
console.log(`š Buying ${opts.token} with ${opts.amount} ETH...`);
|
|
72
|
+
const txHash = await sdk.buy(opts.token, opts.amount, parseInt(opts.slippage));
|
|
73
|
+
console.log(`ā
Buy submitted! TX: ${txHash}`);
|
|
74
|
+
const receipt = await sdk.publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
75
|
+
console.log(` Status: ${receipt.status === 'success' ? 'ā
Success' : 'ā Failed'}`);
|
|
76
|
+
console.log(` Gas used: ${receipt.gasUsed}`);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
console.error(`\nā Buy failed: ${err.message}`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
// ============================================================================
|
|
84
|
+
// SELL
|
|
85
|
+
// ============================================================================
|
|
86
|
+
program
|
|
87
|
+
.command('sell')
|
|
88
|
+
.description('Sell tokens for ETH')
|
|
89
|
+
.requiredOption('-t, --token <address>', 'Token address')
|
|
90
|
+
.requiredOption('-a, --amount <tokens>', 'Amount of tokens to sell (or "all")')
|
|
91
|
+
.option('--slippage <bps>', 'Slippage tolerance in bps (default: 500)', '500')
|
|
92
|
+
.action(async (opts) => {
|
|
93
|
+
try {
|
|
94
|
+
const sdk = (0, config_1.createSDK)();
|
|
95
|
+
console.log(`š° Selling ${opts.amount === 'all' ? 'ALL' : opts.amount} of ${opts.token}...`);
|
|
96
|
+
const txHash = await sdk.sell(opts.token, opts.amount, parseInt(opts.slippage));
|
|
97
|
+
console.log(`ā
Sell submitted! TX: ${txHash}`);
|
|
98
|
+
const receipt = await sdk.publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
99
|
+
console.log(` Status: ${receipt.status === 'success' ? 'ā
Success' : 'ā Failed'}`);
|
|
100
|
+
console.log(` Gas used: ${receipt.gasUsed}`);
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
console.error(`\nā Sell failed: ${err.message}`);
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// UPLOAD IMAGES
|
|
109
|
+
// ============================================================================
|
|
110
|
+
program
|
|
111
|
+
.command('upload')
|
|
112
|
+
.description('Upload logo and/or banner for a token you own')
|
|
113
|
+
.requiredOption('-t, --token <address>', 'Token address')
|
|
114
|
+
.option('-l, --logo <path>', 'Path to logo image')
|
|
115
|
+
.option('-b, --banner <path>', 'Path to banner image')
|
|
116
|
+
.action(async (opts) => {
|
|
117
|
+
try {
|
|
118
|
+
if (!opts.logo && !opts.banner) {
|
|
119
|
+
console.error('ā Provide at least --logo or --banner');
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
const sdk = (0, config_1.createSDK)();
|
|
123
|
+
console.log(`šø Uploading images for ${opts.token}...`);
|
|
124
|
+
const result = await sdk.uploadImages(opts.token, {
|
|
125
|
+
logoPath: opts.logo,
|
|
126
|
+
bannerPath: opts.banner,
|
|
127
|
+
});
|
|
128
|
+
console.log(`ā
Upload complete!`);
|
|
129
|
+
if (result.logo_url)
|
|
130
|
+
console.log(` Logo: ${result.logo_url}`);
|
|
131
|
+
if (result.banner_url)
|
|
132
|
+
console.log(` Banner: ${result.banner_url}`);
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
console.error(`\nā Upload failed: ${err.message}`);
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
// ============================================================================
|
|
140
|
+
// CLAIM FEES
|
|
141
|
+
// ============================================================================
|
|
142
|
+
program
|
|
143
|
+
.command('claim')
|
|
144
|
+
.description('Claim accumulated fees')
|
|
145
|
+
.option('-b, --beneficiary <address>', 'Beneficiary address (defaults to agent wallet)')
|
|
146
|
+
.option('-t, --token <address>', 'Token address (for token fees ā omit for ETH fees)')
|
|
147
|
+
.action(async (opts) => {
|
|
148
|
+
try {
|
|
149
|
+
const sdk = (0, config_1.createSDK)();
|
|
150
|
+
const beneficiary = (opts.beneficiary || sdk.address);
|
|
151
|
+
if (opts.token) {
|
|
152
|
+
console.log(`š Claiming token fees for ${beneficiary}...`);
|
|
153
|
+
const txHash = await sdk.claimFeesToken(opts.token, beneficiary);
|
|
154
|
+
console.log(`ā
Claimed! TX: ${txHash}`);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
console.log(`š° Claiming ETH fees for ${beneficiary}...`);
|
|
158
|
+
const txHash = await sdk.claimFeesETH(beneficiary);
|
|
159
|
+
console.log(`ā
Claimed! TX: ${txHash}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
console.error(`\nā Claim failed: ${err.message}`);
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
// ============================================================================
|
|
168
|
+
// INFO ā token details from on-chain + API
|
|
169
|
+
// ============================================================================
|
|
170
|
+
program
|
|
171
|
+
.command('info')
|
|
172
|
+
.description('Get token info (on-chain + API)')
|
|
173
|
+
.requiredOption('-t, --token <address>', 'Token address')
|
|
174
|
+
.action(async (opts) => {
|
|
175
|
+
try {
|
|
176
|
+
const sdk = (0, config_1.createSDK)();
|
|
177
|
+
const token = opts.token;
|
|
178
|
+
console.log(`\nš Token Info: ${token}\n`);
|
|
179
|
+
// On-chain data
|
|
180
|
+
const [info, progress, tax, limits, graduated] = await Promise.all([
|
|
181
|
+
sdk.getTokenInfo(token),
|
|
182
|
+
sdk.getPoolProgress(token),
|
|
183
|
+
sdk.getCurrentTax(token),
|
|
184
|
+
sdk.getCurrentLimits(token),
|
|
185
|
+
sdk.isGraduated(token),
|
|
186
|
+
]);
|
|
187
|
+
console.log(` Name: ${info.name}`);
|
|
188
|
+
console.log(` Symbol: ${info.symbol}`);
|
|
189
|
+
console.log(` Creator: ${info.creator}`);
|
|
190
|
+
console.log(` Beneficiary: ${info.beneficiary}`);
|
|
191
|
+
console.log(` Agent Wallet: ${info.agentWallet}`);
|
|
192
|
+
console.log(` Pool ID: ${info.poolId}`);
|
|
193
|
+
console.log(` Target MCAP: ${(0, viem_1.formatEther)(info.targetMcapETH)} ETH`);
|
|
194
|
+
console.log(` Epoch: ${progress.currentEpoch}`);
|
|
195
|
+
console.log(` Position: ${progress.currentPosition}`);
|
|
196
|
+
console.log(` Tax: ${Number(tax) / 100}%`);
|
|
197
|
+
console.log(` Max TX: ${(0, viem_1.formatEther)(limits.maxTx)} tokens`);
|
|
198
|
+
console.log(` Max Wallet: ${(0, viem_1.formatEther)(limits.maxWallet)} tokens`);
|
|
199
|
+
console.log(` Graduated: ${graduated ? 'ā
Yes' : 'ā No'}`);
|
|
200
|
+
// API data
|
|
201
|
+
try {
|
|
202
|
+
const apiData = await sdk.getTokenFromAPI(token);
|
|
203
|
+
console.log(`\n š Backend Data:`);
|
|
204
|
+
console.log(` Price: ${apiData.current_price || 'N/A'} ETH`);
|
|
205
|
+
console.log(` MCAP: ${apiData.current_mcap || 'N/A'} ETH`);
|
|
206
|
+
console.log(` Vol 24h: ${apiData.volume_24h} ETH`);
|
|
207
|
+
console.log(` Vol Total: ${apiData.volume_total} ETH`);
|
|
208
|
+
if (apiData.logo_url)
|
|
209
|
+
console.log(` Logo: ${apiData.logo_url}`);
|
|
210
|
+
if (apiData.banner_url)
|
|
211
|
+
console.log(` Banner: ${apiData.banner_url}`);
|
|
212
|
+
if (apiData.recentSwaps?.length > 0) {
|
|
213
|
+
console.log(`\n š Recent Swaps (last ${apiData.recentSwaps.length}):`);
|
|
214
|
+
for (const swap of apiData.recentSwaps.slice(0, 5)) {
|
|
215
|
+
const dir = swap.is_buy ? 'š¢ BUY ' : 'š“ SELL';
|
|
216
|
+
console.log(` ${dir} ${swap.amount_in} ā ${swap.amount_out} (${swap.trader.slice(0, 8)}...)`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
console.log(`\n ā ļø Backend API unavailable`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
console.error(`\nā Info failed: ${err.message}`);
|
|
226
|
+
process.exit(1);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
// ============================================================================
|
|
230
|
+
// BALANCE
|
|
231
|
+
// ============================================================================
|
|
232
|
+
program
|
|
233
|
+
.command('balance')
|
|
234
|
+
.description('Check token and ETH balances')
|
|
235
|
+
.option('-t, --token <address>', 'Token address (omit for ETH only)')
|
|
236
|
+
.action(async (opts) => {
|
|
237
|
+
try {
|
|
238
|
+
const sdk = (0, config_1.createSDK)();
|
|
239
|
+
console.log(`\nš¼ Wallet: ${sdk.address}\n`);
|
|
240
|
+
const ethBal = await sdk.getETHBalance();
|
|
241
|
+
console.log(` ETH: ${(0, viem_1.formatEther)(ethBal)}`);
|
|
242
|
+
if (opts.token) {
|
|
243
|
+
const tokenBal = await sdk.getTokenBalance(opts.token);
|
|
244
|
+
const symbol = await sdk.publicClient.readContract({
|
|
245
|
+
address: opts.token,
|
|
246
|
+
abi: [{ name: 'symbol', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ name: '', type: 'string' }] }],
|
|
247
|
+
functionName: 'symbol',
|
|
248
|
+
});
|
|
249
|
+
console.log(` ${symbol}: ${(0, viem_1.formatEther)(tokenBal)}`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
console.error(`\nā Balance failed: ${err.message}`);
|
|
254
|
+
process.exit(1);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
// ============================================================================
|
|
258
|
+
// LIST ā list tokens from API
|
|
259
|
+
// ============================================================================
|
|
260
|
+
program
|
|
261
|
+
.command('list')
|
|
262
|
+
.description('List tokens from the API')
|
|
263
|
+
.option('-s, --sort <sort>', 'Sort: new, hot, mcap, volume (default: new)', 'new')
|
|
264
|
+
.option('-l, --limit <n>', 'Number of tokens (default: 10)', '10')
|
|
265
|
+
.option('-q, --search <query>', 'Search by name/symbol/address')
|
|
266
|
+
.action(async (opts) => {
|
|
267
|
+
try {
|
|
268
|
+
const sdk = (0, config_1.createSDK)();
|
|
269
|
+
const { tokens, total } = await sdk.listTokens({
|
|
270
|
+
sort: opts.sort,
|
|
271
|
+
limit: parseInt(opts.limit),
|
|
272
|
+
search: opts.search,
|
|
273
|
+
});
|
|
274
|
+
console.log(`\nš¦ Tokens (${tokens.length} of ${total}) sorted by ${opts.sort}:\n`);
|
|
275
|
+
for (const t of tokens) {
|
|
276
|
+
const grad = t.graduated ? 'š' : 'š';
|
|
277
|
+
const mcap = t.current_mcap ? `${parseFloat(t.current_mcap).toFixed(4)} ETH` : 'N/A';
|
|
278
|
+
console.log(` ${grad} ${t.symbol.padEnd(8)} ${t.name.padEnd(20)} MCAP: ${mcap.padEnd(14)} Vol24h: ${parseFloat(t.volume_24h).toFixed(4)} ETH`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
catch (err) {
|
|
282
|
+
console.error(`\nā List failed: ${err.message}`);
|
|
283
|
+
process.exit(1);
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
// ============================================================================
|
|
287
|
+
// TRENDING
|
|
288
|
+
// ============================================================================
|
|
289
|
+
program
|
|
290
|
+
.command('trending')
|
|
291
|
+
.description('Show trending tokens')
|
|
292
|
+
.action(async () => {
|
|
293
|
+
try {
|
|
294
|
+
const sdk = (0, config_1.createSDK)();
|
|
295
|
+
const tokens = await sdk.getTrending();
|
|
296
|
+
console.log(`\nš„ Trending Tokens:\n`);
|
|
297
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
298
|
+
const t = tokens[i];
|
|
299
|
+
const mcap = t.current_mcap ? `${parseFloat(t.current_mcap).toFixed(4)} ETH` : 'N/A';
|
|
300
|
+
console.log(` ${i + 1}. ${t.symbol.padEnd(8)} ${t.name.padEnd(20)} MCAP: ${mcap.padEnd(14)} Vol24h: ${parseFloat(t.volume_24h).toFixed(4)} ETH`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
catch (err) {
|
|
304
|
+
console.error(`\nā Trending failed: ${err.message}`);
|
|
305
|
+
process.exit(1);
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
// ============================================================================
|
|
309
|
+
// STATS
|
|
310
|
+
// ============================================================================
|
|
311
|
+
program
|
|
312
|
+
.command('stats')
|
|
313
|
+
.description('Show platform stats')
|
|
314
|
+
.action(async () => {
|
|
315
|
+
try {
|
|
316
|
+
const sdk = (0, config_1.createSDK)();
|
|
317
|
+
const s = await sdk.getStats();
|
|
318
|
+
console.log(`\nš Claw.Click Platform Stats\n`);
|
|
319
|
+
console.log(` Total Tokens: ${s.total_tokens}`);
|
|
320
|
+
console.log(` Total Volume: ${s.total_volume_eth} ETH`);
|
|
321
|
+
console.log(` Volume 24h: ${s.total_volume_24h} ETH`);
|
|
322
|
+
console.log(` Total TXs: ${s.total_txs}`);
|
|
323
|
+
console.log(` TXs 24h: ${s.total_txs_24h}`);
|
|
324
|
+
console.log(` Last Updated: ${s.updated_at}`);
|
|
325
|
+
}
|
|
326
|
+
catch (err) {
|
|
327
|
+
console.error(`\nā Stats failed: ${err.message}`);
|
|
328
|
+
process.exit(1);
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
program.parse();
|
|
332
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ClawClick } from './sdk';
|
|
2
|
+
export type { ClawClickConfig, LaunchParams, LaunchResult, TokenInfo, PoolProgress, PoolState, TokenApiData, } from './sdk';
|
|
3
|
+
export { FACTORY_ABI, HOOK_ABI, SWAP_EXECUTOR_ABI, ERC20_ABI } from './abi';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,YAAY,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,SAAS,EACT,YAAY,GACb,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ERC20_ABI = exports.SWAP_EXECUTOR_ABI = exports.HOOK_ABI = exports.FACTORY_ABI = exports.ClawClick = void 0;
|
|
4
|
+
// @clawclick/sdk ā CLI & SDK for Claw.Click agents
|
|
5
|
+
var sdk_1 = require("./sdk");
|
|
6
|
+
Object.defineProperty(exports, "ClawClick", { enumerable: true, get: function () { return sdk_1.ClawClick; } });
|
|
7
|
+
var abi_1 = require("./abi");
|
|
8
|
+
Object.defineProperty(exports, "FACTORY_ABI", { enumerable: true, get: function () { return abi_1.FACTORY_ABI; } });
|
|
9
|
+
Object.defineProperty(exports, "HOOK_ABI", { enumerable: true, get: function () { return abi_1.HOOK_ABI; } });
|
|
10
|
+
Object.defineProperty(exports, "SWAP_EXECUTOR_ABI", { enumerable: true, get: function () { return abi_1.SWAP_EXECUTOR_ABI; } });
|
|
11
|
+
Object.defineProperty(exports, "ERC20_ABI", { enumerable: true, get: function () { return abi_1.ERC20_ABI; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AACnD,6BAAiC;AAAxB,gGAAA,SAAS,OAAA;AAUlB,6BAA2E;AAAlE,kGAAA,WAAW,OAAA;AAAE,+FAAA,QAAQ,OAAA;AAAE,wGAAA,iBAAiB,OAAA;AAAE,gGAAA,SAAS,OAAA"}
|
package/dist/sdk.d.ts
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { type PublicClient, type WalletClient, type Chain, type Transport, type Account, type Address, type Hash, type Hex } from 'viem';
|
|
2
|
+
export interface ClawClickConfig {
|
|
3
|
+
/** Hex private key (with or without 0x prefix) */
|
|
4
|
+
privateKey: string;
|
|
5
|
+
/** RPC URL */
|
|
6
|
+
rpcUrl: string;
|
|
7
|
+
/** Backend API URL */
|
|
8
|
+
apiUrl: string;
|
|
9
|
+
/** Factory contract address */
|
|
10
|
+
factoryAddress: Address;
|
|
11
|
+
/** Hook contract address */
|
|
12
|
+
hookAddress: Address;
|
|
13
|
+
/** SwapExecutor contract address */
|
|
14
|
+
swapExecutorAddress: Address;
|
|
15
|
+
/** Chain ID (default: 11155111 for Sepolia) */
|
|
16
|
+
chainId?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface LaunchParams {
|
|
19
|
+
name: string;
|
|
20
|
+
symbol: string;
|
|
21
|
+
beneficiary: Address;
|
|
22
|
+
agentWallet?: Address;
|
|
23
|
+
targetMcapETH: string;
|
|
24
|
+
feeSplit?: {
|
|
25
|
+
wallets: Address[];
|
|
26
|
+
percentages: number[];
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface LaunchResult {
|
|
30
|
+
tokenAddress: Address;
|
|
31
|
+
poolId: Hex;
|
|
32
|
+
txHash: Hash;
|
|
33
|
+
}
|
|
34
|
+
export interface TokenInfo {
|
|
35
|
+
token: Address;
|
|
36
|
+
beneficiary: Address;
|
|
37
|
+
agentWallet: Address;
|
|
38
|
+
creator: Address;
|
|
39
|
+
poolId: Hex;
|
|
40
|
+
targetMcapETH: bigint;
|
|
41
|
+
name: string;
|
|
42
|
+
symbol: string;
|
|
43
|
+
poolKey: {
|
|
44
|
+
currency0: Address;
|
|
45
|
+
currency1: Address;
|
|
46
|
+
fee: number;
|
|
47
|
+
tickSpacing: number;
|
|
48
|
+
hooks: Address;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export interface PoolProgress {
|
|
52
|
+
currentPosition: bigint;
|
|
53
|
+
currentEpoch: bigint;
|
|
54
|
+
lastEpochMCAP: bigint;
|
|
55
|
+
graduated: boolean;
|
|
56
|
+
}
|
|
57
|
+
export interface PoolState {
|
|
58
|
+
token: Address;
|
|
59
|
+
beneficiary: Address;
|
|
60
|
+
startingMCAP: bigint;
|
|
61
|
+
graduationMCAP: bigint;
|
|
62
|
+
totalSupply: bigint;
|
|
63
|
+
activated: boolean;
|
|
64
|
+
graduated: boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface TokenApiData {
|
|
67
|
+
address: string;
|
|
68
|
+
name: string;
|
|
69
|
+
symbol: string;
|
|
70
|
+
creator: string;
|
|
71
|
+
beneficiary: string;
|
|
72
|
+
current_price: string | null;
|
|
73
|
+
current_mcap: string | null;
|
|
74
|
+
target_mcap: string;
|
|
75
|
+
volume_24h: string;
|
|
76
|
+
volume_total: string;
|
|
77
|
+
graduated: boolean;
|
|
78
|
+
launched_at: string;
|
|
79
|
+
logo_url: string | null;
|
|
80
|
+
banner_url: string | null;
|
|
81
|
+
}
|
|
82
|
+
export declare class ClawClick {
|
|
83
|
+
readonly publicClient: PublicClient;
|
|
84
|
+
readonly walletClient: WalletClient<Transport, Chain, Account>;
|
|
85
|
+
readonly account: Account;
|
|
86
|
+
readonly factoryAddress: Address;
|
|
87
|
+
readonly hookAddress: Address;
|
|
88
|
+
readonly swapExecutorAddress: Address;
|
|
89
|
+
readonly apiUrl: string;
|
|
90
|
+
readonly chain: Chain;
|
|
91
|
+
constructor(config: ClawClickConfig);
|
|
92
|
+
/** Get the agent's wallet address */
|
|
93
|
+
get address(): Address;
|
|
94
|
+
/**
|
|
95
|
+
* Launch a new token through the factory.
|
|
96
|
+
*/
|
|
97
|
+
launch(params: LaunchParams): Promise<LaunchResult>;
|
|
98
|
+
/**
|
|
99
|
+
* Buy tokens with ETH.
|
|
100
|
+
* @param tokenAddress - The token to buy
|
|
101
|
+
* @param amountETH - Amount of ETH to spend (e.g. "0.1")
|
|
102
|
+
* @param slippageBps - Slippage tolerance in bps (default 500 = 5%)
|
|
103
|
+
*/
|
|
104
|
+
buy(tokenAddress: Address, amountETH: string, slippageBps?: number): Promise<Hash>;
|
|
105
|
+
/**
|
|
106
|
+
* Sell tokens for ETH.
|
|
107
|
+
* @param tokenAddress - The token to sell
|
|
108
|
+
* @param amount - Amount of tokens to sell (e.g. "1000000") or "all" to sell entire balance
|
|
109
|
+
* @param slippageBps - Slippage tolerance in bps (default 500 = 5%)
|
|
110
|
+
*/
|
|
111
|
+
sell(tokenAddress: Address, amount: string, slippageBps?: number): Promise<Hash>;
|
|
112
|
+
/**
|
|
113
|
+
* Upload logo and/or banner images for a token you own.
|
|
114
|
+
* Signs a message to prove ownership.
|
|
115
|
+
*/
|
|
116
|
+
uploadImages(tokenAddress: Address, options: {
|
|
117
|
+
logoPath?: string;
|
|
118
|
+
bannerPath?: string;
|
|
119
|
+
}): Promise<{
|
|
120
|
+
logo_url: string | null;
|
|
121
|
+
banner_url: string | null;
|
|
122
|
+
}>;
|
|
123
|
+
/**
|
|
124
|
+
* Claim accumulated ETH fees for a beneficiary address.
|
|
125
|
+
*/
|
|
126
|
+
claimFeesETH(beneficiary?: Address): Promise<Hash>;
|
|
127
|
+
/**
|
|
128
|
+
* Claim accumulated token fees for a beneficiary.
|
|
129
|
+
*/
|
|
130
|
+
claimFeesToken(tokenAddress: Address, beneficiary?: Address): Promise<Hash>;
|
|
131
|
+
/** Get token launch info from the factory */
|
|
132
|
+
getTokenInfo(tokenAddress: Address): Promise<TokenInfo>;
|
|
133
|
+
/** Get pool progress from the hook */
|
|
134
|
+
getPoolProgress(tokenAddress: Address): Promise<PoolProgress>;
|
|
135
|
+
/** Get current tax rate for a token's pool */
|
|
136
|
+
getCurrentTax(tokenAddress: Address): Promise<bigint>;
|
|
137
|
+
/** Get current trading limits for a token's pool */
|
|
138
|
+
getCurrentLimits(tokenAddress: Address): Promise<{
|
|
139
|
+
maxTx: bigint;
|
|
140
|
+
maxWallet: bigint;
|
|
141
|
+
}>;
|
|
142
|
+
/** Check if a token has graduated */
|
|
143
|
+
isGraduated(tokenAddress: Address): Promise<boolean>;
|
|
144
|
+
/** Get the pool state from the factory */
|
|
145
|
+
getPoolState(tokenAddress: Address): Promise<PoolState>;
|
|
146
|
+
/** Get token balance for the agent's wallet */
|
|
147
|
+
getTokenBalance(tokenAddress: Address): Promise<bigint>;
|
|
148
|
+
/** Get ETH balance for the agent's wallet */
|
|
149
|
+
getETHBalance(): Promise<bigint>;
|
|
150
|
+
/** Get token data from the backend API */
|
|
151
|
+
getTokenFromAPI(tokenAddress: string): Promise<TokenApiData & {
|
|
152
|
+
recentSwaps: any[];
|
|
153
|
+
}>;
|
|
154
|
+
/** List tokens from the backend API */
|
|
155
|
+
listTokens(opts?: {
|
|
156
|
+
sort?: 'new' | 'hot' | 'mcap' | 'volume';
|
|
157
|
+
limit?: number;
|
|
158
|
+
offset?: number;
|
|
159
|
+
search?: string;
|
|
160
|
+
}): Promise<{
|
|
161
|
+
tokens: TokenApiData[];
|
|
162
|
+
total: number;
|
|
163
|
+
}>;
|
|
164
|
+
/** Get trending tokens from the backend API */
|
|
165
|
+
getTrending(): Promise<TokenApiData[]>;
|
|
166
|
+
/** Get platform stats from the backend API */
|
|
167
|
+
getStats(): Promise<any>;
|
|
168
|
+
/** Get the pool ID for a token from the hook */
|
|
169
|
+
private getPoolId;
|
|
170
|
+
/** Get the PoolKey for a token (needed for swaps) */
|
|
171
|
+
private getPoolKey;
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
|