httpcat-cli 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/.claude/settings.local.json +11 -0
  2. package/README.md +796 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +149 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/commands/buy.d.ts.map +1 -0
  7. package/dist/commands/buy.js +37 -0
  8. package/dist/commands/buy.js.map +1 -0
  9. package/dist/commands/create.d.ts.map +1 -0
  10. package/dist/commands/create.js +28 -0
  11. package/dist/commands/create.js.map +1 -0
  12. package/dist/commands/health.d.ts.map +1 -0
  13. package/dist/commands/health.js +33 -0
  14. package/dist/commands/health.js.map +1 -0
  15. package/dist/commands/info.d.ts.map +1 -0
  16. package/dist/commands/info.js +43 -0
  17. package/dist/commands/info.js.map +1 -0
  18. package/dist/commands/list.d.ts.map +1 -0
  19. package/dist/commands/list.js +49 -0
  20. package/dist/commands/list.js.map +1 -0
  21. package/dist/commands/sell.d.ts.map +1 -0
  22. package/dist/commands/sell.js +64 -0
  23. package/dist/commands/sell.js.map +1 -0
  24. package/dist/config.d.ts.map +1 -0
  25. package/dist/config.js +194 -0
  26. package/dist/config.js.map +1 -0
  27. package/dist/headless/json-output.d.ts.map +1 -0
  28. package/dist/headless/json-output.js +73 -0
  29. package/dist/headless/json-output.js.map +1 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +478 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/interactive/art.d.ts.map +1 -0
  34. package/dist/interactive/art.js +136 -0
  35. package/dist/interactive/art.js.map +1 -0
  36. package/dist/interactive/shell.d.ts.map +1 -0
  37. package/dist/interactive/shell.js +223 -0
  38. package/dist/interactive/shell.js.map +1 -0
  39. package/dist/utils/errors.d.ts.map +1 -0
  40. package/dist/utils/errors.js +119 -0
  41. package/dist/utils/errors.js.map +1 -0
  42. package/dist/utils/formatting.d.ts.map +1 -0
  43. package/dist/utils/formatting.js +77 -0
  44. package/dist/utils/formatting.js.map +1 -0
  45. package/dist/utils/token-resolver.d.ts.map +1 -0
  46. package/dist/utils/token-resolver.js +41 -0
  47. package/dist/utils/token-resolver.js.map +1 -0
  48. package/dist/utils/validation.d.ts.map +1 -0
  49. package/dist/utils/validation.js +31 -0
  50. package/dist/utils/validation.js.map +1 -0
  51. package/package.json +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAGhC,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;WAUM,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;IA2BvD,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,EACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC;IAiF9C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAsCrC,WAAW,IAAI,MAAM;IAIrB,UAAU,IAAI,MAAM;CAGrB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACD,MAAM,EAAE,MAAM;IAAS,OAAO,CAAC,EAAE,GAAG;gBAA5D,OAAO,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM,EAAS,OAAO,CAAC,EAAE,GAAG,YAAA;CAIzE"}
package/dist/client.js ADDED
@@ -0,0 +1,149 @@
1
+ import { wrapFetchWithPayment } from "x402-fetch";
2
+ import { evm } from "x402/types";
3
+ import { config } from "./config.js";
4
+ export class HttpcatClient {
5
+ fetchWithPayment;
6
+ agentUrl;
7
+ network;
8
+ constructor(fetchWithPayment, agentUrl, network) {
9
+ this.fetchWithPayment = fetchWithPayment;
10
+ this.agentUrl = agentUrl;
11
+ this.network = network;
12
+ }
13
+ static async create(privateKey) {
14
+ const pk = privateKey || config.getPrivateKey();
15
+ const network = config.get("network");
16
+ const agentUrl = config.getAgentUrl(); // Use getAgentUrl() to respect environment
17
+ const maxPayment = config.get("defaultMaxPayment");
18
+ // Create signer based on network
19
+ let signer;
20
+ if (network === "base-sepolia") {
21
+ signer = evm.createSignerSepolia(pk);
22
+ }
23
+ else if (network === "base") {
24
+ // For base mainnet, we'll need to check if there's a createSignerBase function
25
+ // For now, using sepolia as fallback - this may need to be updated
26
+ signer = evm.createSignerSepolia(pk);
27
+ }
28
+ else {
29
+ throw new Error(`Unsupported network: ${network}. Supported networks: base-sepolia, base`);
30
+ }
31
+ // Wrap fetch with payment handling
32
+ const maxValue = BigInt(parseFloat(maxPayment) * 10 ** 6); // Convert to USDC units (6 decimals)
33
+ const fetchWithPayment = wrapFetchWithPayment(fetch, signer, maxValue);
34
+ return new HttpcatClient(fetchWithPayment, agentUrl, network);
35
+ }
36
+ async invoke(entrypoint, input) {
37
+ const endpoint = `${this.agentUrl}/entrypoints/${entrypoint}/invoke`;
38
+ const response = await this.fetchWithPayment(endpoint, {
39
+ method: "POST",
40
+ headers: {
41
+ "Content-Type": "application/json",
42
+ },
43
+ body: JSON.stringify({ input }),
44
+ });
45
+ // Extract payment info from headers
46
+ const paymentHeader = response.headers.get("x-payment-response");
47
+ const payment = paymentHeader
48
+ ? { txHash: paymentHeader }
49
+ : undefined;
50
+ // Parse response
51
+ const responseText = await response.text();
52
+ // Check if response is OK first
53
+ if (!response.ok) {
54
+ // Try to parse as JSON for structured error, otherwise use plain text
55
+ let errorDetails;
56
+ let errorMessage;
57
+ try {
58
+ errorDetails = JSON.parse(responseText);
59
+ // Extract message from nested error structures
60
+ errorMessage =
61
+ errorDetails.error?.message ||
62
+ errorDetails.error ||
63
+ errorDetails.message ||
64
+ errorDetails.details?.message ||
65
+ `Request failed with status ${response.status}`;
66
+ // For 500 errors, try to extract more context
67
+ if (response.status >= 500 && errorDetails.error) {
68
+ // If error is an object, try to stringify it for more info
69
+ if (typeof errorDetails.error === "object") {
70
+ const errorStr = JSON.stringify(errorDetails.error, null, 2);
71
+ if (errorStr !== "{}" &&
72
+ errorStr !== '{"error":"Internal Server Error"}') {
73
+ errorMessage = errorMessage + "\n" + errorStr;
74
+ }
75
+ }
76
+ }
77
+ }
78
+ catch {
79
+ // If not JSON, use the plain text as the error message
80
+ errorMessage =
81
+ responseText || `Request failed with status ${response.status}`;
82
+ errorDetails = { error: errorMessage, rawResponse: responseText };
83
+ }
84
+ // Add endpoint context to error details
85
+ errorDetails.endpoint = endpoint;
86
+ errorDetails.method = "POST";
87
+ throw new HttpcatError(errorMessage, response.status, errorDetails);
88
+ }
89
+ // Response is OK, parse as JSON
90
+ let result;
91
+ try {
92
+ result = JSON.parse(responseText);
93
+ }
94
+ catch (e) {
95
+ throw new HttpcatError(`Failed to parse response as JSON: ${responseText}`, response.status, responseText);
96
+ }
97
+ return {
98
+ data: result.output,
99
+ payment,
100
+ };
101
+ }
102
+ async get(path) {
103
+ const url = path.startsWith("http") ? path : `${this.agentUrl}${path}`;
104
+ const response = await this.fetchWithPayment(url, {
105
+ method: "GET",
106
+ });
107
+ const text = await response.text();
108
+ if (!response.ok) {
109
+ // Try to parse as JSON for structured error, otherwise use plain text
110
+ let errorDetails;
111
+ try {
112
+ errorDetails = JSON.parse(text);
113
+ }
114
+ catch {
115
+ errorDetails = {
116
+ error: text || `GET ${path} failed with status ${response.status}`,
117
+ };
118
+ }
119
+ throw new HttpcatError(errorDetails.error ||
120
+ errorDetails.message ||
121
+ `GET ${path} failed: ${response.status}`, response.status, errorDetails);
122
+ }
123
+ // Response is OK, try to parse as JSON
124
+ try {
125
+ return JSON.parse(text);
126
+ }
127
+ catch {
128
+ // If not JSON, return plain text
129
+ return text;
130
+ }
131
+ }
132
+ getAgentUrl() {
133
+ return this.agentUrl;
134
+ }
135
+ getNetwork() {
136
+ return this.network;
137
+ }
138
+ }
139
+ export class HttpcatError extends Error {
140
+ status;
141
+ details;
142
+ constructor(message, status, details) {
143
+ super(message);
144
+ this.status = status;
145
+ this.details = details;
146
+ this.name = "HttpcatError";
147
+ }
148
+ }
149
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buy.d.ts","sourceRoot":"","sources":["../../src/commands/buy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM7C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAKD,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAAE,mCAAmC;AACvD,MAAM,EAAE,MAAM,EACd,UAAU,UAAO,EACjB,MAAM,UAAQ,GACb,OAAO,CAAC,cAAc,CAAC,CAkBzB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAkB7D"}
@@ -0,0 +1,37 @@
1
+ import { validateTokenId, validateAmount } from '../utils/validation.js';
2
+ import { printBox, formatTokenAmount, formatCurrency } from '../utils/formatting.js';
3
+ import { printSuccess, printGraduationProgress } from '../interactive/art.js';
4
+ import { resolveTokenId } from '../utils/token-resolver.js';
5
+ const TEST_AMOUNTS = ['1', '2', '5'];
6
+ const PROD_AMOUNTS = ['50', '100', '200'];
7
+ export async function buyToken(client, identifier, // Can be token ID, name, or symbol
8
+ amount, isTestMode = true, silent = false // Suppress resolver output for quiet/JSON mode
9
+ ) {
10
+ // Resolve identifier to token ID
11
+ const tokenId = await resolveTokenId(identifier, client, silent);
12
+ // Validate input
13
+ validateTokenId(tokenId);
14
+ const validAmounts = isTestMode ? TEST_AMOUNTS : PROD_AMOUNTS;
15
+ validateAmount(amount, validAmounts);
16
+ const input = { tokenId, amount };
17
+ // Make request
18
+ const { data } = await client.invoke('token_buy', input);
19
+ return data;
20
+ }
21
+ export function displayBuyResult(result) {
22
+ printSuccess('Tokens purchased successfully!', 'money');
23
+ const graduationStatus = result.graduationReached
24
+ ? '✅ GRADUATED!'
25
+ : `${result.graduationProgress.toFixed(2)}%`;
26
+ printBox('💰 Purchase Summary', {
27
+ 'Tokens Received': formatTokenAmount(result.tokensReceived),
28
+ 'Amount Spent': formatCurrency(result.amountSpent),
29
+ 'Fee (1%)': formatCurrency(result.fee),
30
+ 'New Price': formatCurrency(result.newPrice),
31
+ 'New Market Cap': formatCurrency(result.newMcap),
32
+ 'Graduation': graduationStatus,
33
+ });
34
+ console.log();
35
+ printGraduationProgress(result.graduationProgress);
36
+ }
37
+ //# sourceMappingURL=buy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buy.js","sourceRoot":"","sources":["../../src/commands/buy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAkB5D,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAqB,EACrB,UAAkB,EAAE,mCAAmC;AACvD,MAAc,EACd,UAAU,GAAG,IAAI,EACjB,MAAM,GAAG,KAAK,CAAC,+CAA+C;;IAE9D,iCAAiC;IACjC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjE,iBAAiB;IACjB,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IAC9D,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAErC,MAAM,KAAK,GAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAEjD,eAAe;IACf,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAClC,WAAW,EACX,KAAK,CACN,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,YAAY,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;IAExD,MAAM,gBAAgB,GAAG,MAAM,CAAC,iBAAiB;QAC/C,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAE/C,QAAQ,CAAC,qBAAqB,EAAE;QAC9B,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC;QAC3D,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC;QAClD,UAAU,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC;QACtC,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC5C,gBAAgB,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;QAChD,YAAY,EAAE,gBAAgB;KAC/B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,uBAAuB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAUnE"}
@@ -0,0 +1,28 @@
1
+ import { validateTokenName, validateTokenSymbol, validateUrl } from '../utils/validation.js';
2
+ import { printBox, formatAddress } from '../utils/formatting.js';
3
+ import { printSuccess } from '../interactive/art.js';
4
+ export async function createToken(client, input) {
5
+ // Validate input
6
+ validateTokenName(input.name);
7
+ validateTokenSymbol(input.symbol);
8
+ if (input.photoUrl)
9
+ validateUrl(input.photoUrl);
10
+ if (input.bannerUrl)
11
+ validateUrl(input.bannerUrl);
12
+ if (input.websiteUrl)
13
+ validateUrl(input.websiteUrl);
14
+ // Make request
15
+ const { data, payment } = await client.invoke('create_token', input);
16
+ return data;
17
+ }
18
+ export function displayCreateResult(result) {
19
+ printSuccess(`Token created successfully!`, 'party');
20
+ printBox(`🎉 ${result.name} (${result.symbol})`, {
21
+ 'Token ID': result.tokenId,
22
+ 'Address': formatAddress(result.tokenAddress, 12),
23
+ 'Supply': '1,000,000,000 ' + result.symbol,
24
+ 'Status': result.status,
25
+ 'Created': new Date(result.createdAt).toLocaleString(),
26
+ });
27
+ }
28
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAqBrD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAqB,EACrB,KAAuB;IAEvB,iBAAiB;IACjB,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,KAAK,CAAC,QAAQ;QAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,SAAS;QAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,UAAU;QAAE,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEpD,eAAe;IACf,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAC3C,cAAc,EACd,KAAK,CACN,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAyB;IAC3D,YAAY,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;IAErD,QAAQ,CAAC,MAAM,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,GAAG,EAAE;QAC/C,UAAU,EAAE,MAAM,CAAC,OAAO;QAC1B,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;QACjD,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM;QAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM;QACvB,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;KACvD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/commands/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAU9E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAuB9D"}
@@ -0,0 +1,33 @@
1
+ import chalk from 'chalk';
2
+ import { printBox } from '../utils/formatting.js';
3
+ export async function checkHealth(client) {
4
+ // Try GET /health first (will return 402 or 200)
5
+ try {
6
+ const data = await client.get('/health');
7
+ return data;
8
+ }
9
+ catch (error) {
10
+ // If GET fails, try POST invoke
11
+ const { data } = await client.invoke('health', {});
12
+ return data;
13
+ }
14
+ }
15
+ export function displayHealthStatus(health) {
16
+ console.log();
17
+ const status = health.status || 'unknown';
18
+ const isHealthy = status === 'ok';
19
+ const statusIcon = isHealthy ? '✅' : '❌';
20
+ const statusColor = isHealthy ? chalk.green : chalk.red;
21
+ const boxData = {
22
+ 'Status': statusColor(status.toUpperCase()),
23
+ };
24
+ if (health.message) {
25
+ boxData['Message'] = health.message;
26
+ }
27
+ if (health.timestamp) {
28
+ boxData['Timestamp'] = new Date(health.timestamp).toLocaleString();
29
+ }
30
+ printBox(`${statusIcon} Health Check`, boxData);
31
+ console.log();
32
+ }
33
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/commands/health.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAQlD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAqB;IACrD,iDAAiD;IACjD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gCAAgC;QAChC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAmB,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAoB;IACtD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAExD,MAAM,OAAO,GAA2B;QACtC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;KAC5C,CAAC;IAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;IACrE,CAAC;IAED,QAAQ,CAAC,GAAG,UAAU,eAAe,EAAE,OAAO,CAAC,CAAC;IAEhD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM7C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAAE,mCAAmC;AACvD,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,UAAQ,GACb,OAAO,CAAC,eAAe,CAAC,CAgB1B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CA6B5D"}
@@ -0,0 +1,43 @@
1
+ import { validateTokenId } from '../utils/validation.js';
2
+ import { printBox, formatAddress, formatTokenAmount, formatCurrency } from '../utils/formatting.js';
3
+ import { printGraduationProgress } from '../interactive/art.js';
4
+ import { resolveTokenId } from '../utils/token-resolver.js';
5
+ export async function getTokenInfo(client, identifier, // Can be token ID, name, or symbol
6
+ userAddress, silent = false // Suppress resolver output for quiet/JSON mode
7
+ ) {
8
+ // Resolve identifier to token ID
9
+ const tokenId = await resolveTokenId(identifier, client, silent);
10
+ // Validate input
11
+ validateTokenId(tokenId);
12
+ const input = { tokenId, userAddress };
13
+ // Make request
14
+ const { data } = await client.invoke('token_info', input);
15
+ return data;
16
+ }
17
+ export function displayTokenInfo(info) {
18
+ console.log();
19
+ printBox(`📊 ${info.name} (${info.symbol})`, {
20
+ 'Token ID': info.tokenId,
21
+ 'Address': formatAddress(info.address, 12),
22
+ 'Status': info.status,
23
+ 'Price': formatCurrency(info.price),
24
+ 'Market Cap': formatCurrency(info.mcap),
25
+ 'Total Supply': formatTokenAmount(info.totalSupply),
26
+ 'Created': new Date(info.createdAt).toLocaleString(),
27
+ });
28
+ console.log();
29
+ printGraduationProgress(info.graduationProgress);
30
+ if (info.userPosition) {
31
+ console.log();
32
+ const pnl = parseFloat(info.userPosition.pnl);
33
+ const pnlColor = pnl >= 0 ? '🟢' : '🔴';
34
+ const pnlSign = pnl >= 0 ? '+' : '';
35
+ printBox('💼 Your Position', {
36
+ 'Tokens Owned': formatTokenAmount(info.userPosition.tokensOwned),
37
+ 'Invested': formatCurrency(info.userPosition.usdcInvested),
38
+ 'Current Value': formatCurrency(info.userPosition.currentValue),
39
+ 'P&L': `${pnlColor} ${pnlSign}${formatCurrency(info.userPosition.pnl)}`,
40
+ });
41
+ }
42
+ }
43
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AA4B5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAqB,EACrB,UAAkB,EAAE,mCAAmC;AACvD,WAAoB,EACpB,MAAM,GAAG,KAAK,CAAC,+CAA+C;;IAE9D,iCAAiC;IACjC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjE,iBAAiB;IACjB,eAAe,CAAC,OAAO,CAAC,CAAC;IAEzB,MAAM,KAAK,GAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAEvD,eAAe;IACf,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAClC,YAAY,EACZ,KAAK,CACN,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAqB;IACpD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,GAAG,EAAE;QAC3C,UAAU,EAAE,IAAI,CAAC,OAAO;QACxB,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,cAAc,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;QACnD,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;KACrD,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACxC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpC,QAAQ,CAAC,kBAAkB,EAAE;YAC3B,cAAc,EAAE,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YAChE,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAC1D,eAAe,EAAE,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAC/D,KAAK,EAAE,GAAG,QAAQ,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;SACxE,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,aAAa,EACrB,IAAI,SAAI,EACR,KAAK,SAAK,EACV,MAAM,GAAE,MAAM,GAAG,SAAS,GAAG,MAAe,GAC3C,OAAO,CAAC,gBAAgB,CAAC,CAU3B;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAgD/D"}
@@ -0,0 +1,49 @@
1
+ import { createTable, formatCurrency } from '../utils/formatting.js';
2
+ import chalk from 'chalk';
3
+ export async function listTokens(client, page = 1, limit = 20, sortBy = 'mcap') {
4
+ const input = { page, limit, sortBy };
5
+ // Make request
6
+ const { data } = await client.invoke('list_tokens', input);
7
+ return data;
8
+ }
9
+ export function displayTokenList(result) {
10
+ console.log();
11
+ console.log(chalk.cyan.bold(`📋 Tokens (${result.total} total)`));
12
+ console.log(chalk.dim(`Page ${result.page} of ${result.pages}`));
13
+ console.log();
14
+ if (result.tokens.length === 0) {
15
+ console.log(chalk.yellow('No tokens found.'));
16
+ return;
17
+ }
18
+ const table = createTable([
19
+ 'Name',
20
+ 'Symbol',
21
+ 'Market Cap',
22
+ 'Price',
23
+ 'Graduation',
24
+ 'Status',
25
+ ]);
26
+ for (const token of result.tokens) {
27
+ const graduationIcon = token.status === 'graduated'
28
+ ? '🎓'
29
+ : token.graduationProgress >= 90
30
+ ? '🔥'
31
+ : token.graduationProgress >= 50
32
+ ? '📈'
33
+ : '🌱';
34
+ table.push([
35
+ chalk.bold(token.name),
36
+ token.symbol,
37
+ formatCurrency(token.mcap),
38
+ formatCurrency(token.price),
39
+ `${graduationIcon} ${token.graduationProgress.toFixed(1)}%`,
40
+ token.status === 'graduated' ? chalk.green('✓ Graduated') : chalk.yellow('Active'),
41
+ ]);
42
+ }
43
+ console.log(table.toString());
44
+ console.log();
45
+ if (result.page < result.pages) {
46
+ console.log(chalk.dim(`Use --page ${result.page + 1} to see more tokens`));
47
+ }
48
+ }
49
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAiB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,KAAK,MAAM,OAAO,CAAC;AA6B1B,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAqB,EACrB,IAAI,GAAG,CAAC,EACR,KAAK,GAAG,EAAE,EACV,SAAsC,MAAM;IAE5C,MAAM,KAAK,GAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAEvD,eAAe;IACf,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAClC,aAAa,EACb,KAAK,CACN,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC;QACxB,MAAM;QACN,QAAQ;QACR,YAAY;QACZ,OAAO;QACP,YAAY;QACZ,QAAQ;KACT,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,cAAc,GAClB,KAAK,CAAC,MAAM,KAAK,WAAW;YAC1B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE;gBAChC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE;oBAChC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,CAAC;QAEX,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACtB,KAAK,CAAC,MAAM;YACZ,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;YAC1B,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3B,GAAG,cAAc,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAC3D,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;SACnF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sell.d.ts","sourceRoot":"","sources":["../../src/commands/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM7C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAAE,mCAAmC;AACvD,WAAW,EAAE,MAAM,EACnB,MAAM,UAAQ,GACb,OAAO,CAAC,eAAe,CAAC,CAgB1B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAmB/D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,GACrB,MAAM,CA6BR"}
@@ -0,0 +1,64 @@
1
+ import { validateTokenId } from '../utils/validation.js';
2
+ import { printBox, formatTokenAmount, formatCurrency } from '../utils/formatting.js';
3
+ import { printSuccess, printGraduationProgress } from '../interactive/art.js';
4
+ import { resolveTokenId } from '../utils/token-resolver.js';
5
+ export async function sellToken(client, identifier, // Can be token ID, name, or symbol
6
+ tokenAmount, silent = false // Suppress resolver output for quiet/JSON mode
7
+ ) {
8
+ // Resolve identifier to token ID
9
+ const tokenId = await resolveTokenId(identifier, client, silent);
10
+ // Validate input
11
+ validateTokenId(tokenId);
12
+ const input = { tokenId, tokenAmount };
13
+ // Make request
14
+ const { data } = await client.invoke('token_sell', input);
15
+ return data;
16
+ }
17
+ export function displaySellResult(result) {
18
+ printSuccess('Tokens sold successfully!', 'money');
19
+ printBox('💸 Sale Summary', {
20
+ 'Tokens Sold': formatTokenAmount(result.tokensSold),
21
+ 'USDC Received': formatCurrency(result.usdcReceived),
22
+ 'Fee (1%)': formatCurrency(result.fee),
23
+ 'New Price': formatCurrency(result.newPrice),
24
+ 'New Market Cap': formatCurrency(result.newMcap),
25
+ 'Graduation': `${result.graduationProgress.toFixed(2)}%`,
26
+ });
27
+ if (result.usdcTransferTx) {
28
+ console.log();
29
+ console.log('Transaction:', result.usdcTransferTx);
30
+ }
31
+ console.log();
32
+ printGraduationProgress(result.graduationProgress);
33
+ }
34
+ /**
35
+ * Parse token amount from various formats:
36
+ * - "all" or "100%" - sell all tokens
37
+ * - "50%" - sell 50% of tokens
38
+ * - "1000" - sell 1000 tokens (will be converted to 18 decimals)
39
+ */
40
+ export function parseTokenAmount(input, currentBalance) {
41
+ const balance = BigInt(currentBalance);
42
+ if (input.toLowerCase() === 'all' || input === '100%') {
43
+ return balance.toString();
44
+ }
45
+ if (input.endsWith('%')) {
46
+ const percentage = parseFloat(input.slice(0, -1));
47
+ if (isNaN(percentage) || percentage < 0 || percentage > 100) {
48
+ throw new Error('Invalid percentage. Must be between 0 and 100.');
49
+ }
50
+ return ((balance * BigInt(Math.floor(percentage * 100))) / 10000n).toString();
51
+ }
52
+ // Parse as decimal number and convert to 18 decimals
53
+ const amount = parseFloat(input);
54
+ if (isNaN(amount) || amount <= 0) {
55
+ throw new Error('Invalid token amount');
56
+ }
57
+ // Convert to 18 decimals
58
+ const amountWithDecimals = BigInt(Math.floor(amount * 10 ** 18));
59
+ if (amountWithDecimals > balance) {
60
+ throw new Error(`Insufficient balance. You have ${formatTokenAmount(balance)} tokens.`);
61
+ }
62
+ return amountWithDecimals.toString();
63
+ }
64
+ //# sourceMappingURL=sell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sell.js","sourceRoot":"","sources":["../../src/commands/sell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAkB5D,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAqB,EACrB,UAAkB,EAAE,mCAAmC;AACvD,WAAmB,EACnB,MAAM,GAAG,KAAK,CAAC,+CAA+C;;IAE9D,iCAAiC;IACjC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjE,iBAAiB;IACjB,eAAe,CAAC,OAAO,CAAC,CAAC;IAEzB,MAAM,KAAK,GAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAEvD,eAAe;IACf,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAClC,YAAY,EACZ,KAAK,CACN,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IACvD,YAAY,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;IAEnD,QAAQ,CAAC,iBAAiB,EAAE;QAC1B,aAAa,EAAE,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC;QACnD,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC;QACpD,UAAU,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC;QACtC,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC5C,gBAAgB,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;QAChD,YAAY,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;KACzD,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,uBAAuB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,cAAsB;IAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IAEvC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChF,CAAC;IAED,qDAAqD;IACrD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,yBAAyB;IACzB,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjE,IAAI,kBAAkB,GAAG,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,kCAAkC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC;AACvC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAGhC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClD,WAAW,EAAE;QACX,cAAc,EAAE,OAAO,CAAC;QACxB,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AA6BD,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAsB;;IASnC,GAAG,CAAC,GAAG,EAAE,MAAM,aAAa,GAAG,GAAG;IAIlC,GAAG,CAAC,GAAG,EAAE,MAAM,aAAa,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAI/C,MAAM,IAAI,aAAa;IAIvB,GAAG,CAAC,GAAG,EAAE,MAAM,aAAa,GAAG,OAAO;IAItC,MAAM,CAAC,GAAG,EAAE,MAAM,aAAa,GAAG,IAAI;IAItC,KAAK,IAAI,IAAI;IAIb,aAAa,IAAI,MAAM;IAIvB,YAAY,IAAI,OAAO;IAIjB,cAAc,CAAC,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA0D/E,OAAO,CAAC,MAAM;IAcd,aAAa,IAAI,GAAG;IAsBpB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAUrD,qBAAqB,IAAI,MAAM,GAAG,SAAS;IAI3C,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAKlE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBlC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAuB,GAAG,IAAI;IAgBtF,WAAW,IAAI,MAAM;CAiBtB;AAED,eAAO,MAAM,MAAM,eAAsB,CAAC"}