@nuno1026/bithumb-cli 0.1.4 → 0.1.6
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/dist/{account-QQC3UZDP.js → account-PM4UQZGC.js} +3 -3
- package/dist/account-PM4UQZGC.js.map +1 -0
- package/dist/{chunk-6NIRYFQU.js → chunk-DXX5FHRF.js} +11 -11
- package/dist/chunk-DXX5FHRF.js.map +1 -0
- package/dist/{config-5T2Z7X5D.js → config-VZKZANVL.js} +8 -8
- package/dist/config-VZKZANVL.js.map +1 -0
- package/dist/{deposit-PBP2KDXP.js → deposit-JGPZ7YIP.js} +9 -9
- package/dist/deposit-JGPZ7YIP.js.map +1 -0
- package/dist/index.js +53 -53
- package/dist/index.js.map +1 -1
- package/dist/{market-B32IKWHH.js → market-V7L36QN3.js} +6 -6
- package/dist/market-V7L36QN3.js.map +1 -0
- package/dist/{trade-ZZU6PXJL.js → trade-MDOYZ5BW.js} +7 -7
- package/dist/trade-MDOYZ5BW.js.map +1 -0
- package/dist/{twap-U3LDHACU.js → twap-QGTXCV3U.js} +3 -3
- package/dist/twap-QGTXCV3U.js.map +1 -0
- package/dist/{withdraw-7C657PEC.js → withdraw-PLP3ZC4Q.js} +5 -5
- package/dist/withdraw-PLP3ZC4Q.js.map +1 -0
- package/package.json +1 -1
- package/dist/account-QQC3UZDP.js.map +0 -1
- package/dist/chunk-6NIRYFQU.js.map +0 -1
- package/dist/config-5T2Z7X5D.js.map +0 -1
- package/dist/deposit-PBP2KDXP.js.map +0 -1
- package/dist/market-B32IKWHH.js.map +0 -1
- package/dist/trade-ZZU6PXJL.js.map +0 -1
- package/dist/twap-U3LDHACU.js.map +0 -1
- package/dist/withdraw-7C657PEC.js.map +0 -1
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
configFilePath,
|
|
4
4
|
readFullConfig,
|
|
5
5
|
writeFullConfig
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DXX5FHRF.js";
|
|
7
7
|
import {
|
|
8
8
|
errorLine,
|
|
9
9
|
outputLine,
|
|
@@ -51,7 +51,7 @@ function cmdConfigShow(json) {
|
|
|
51
51
|
outputLine("");
|
|
52
52
|
const profileNames = Object.keys(config.profiles);
|
|
53
53
|
if (profileNames.length === 0) {
|
|
54
|
-
outputLine("No profiles configured. Run 'bithumb
|
|
54
|
+
outputLine("No profiles configured. Run 'bithumb config init' to create one.");
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
57
|
for (const name of profileNames) {
|
|
@@ -70,7 +70,7 @@ function cmdConfigInit() {
|
|
|
70
70
|
const path = configFilePath();
|
|
71
71
|
if (existsSync(path)) {
|
|
72
72
|
outputLine(`Config file already exists: ${path}`);
|
|
73
|
-
outputLine("Use 'bithumb
|
|
73
|
+
outputLine("Use 'bithumb config add-profile' to add a new profile.");
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
76
|
const dir = dirname(path);
|
|
@@ -92,7 +92,7 @@ function cmdConfigInit() {
|
|
|
92
92
|
}
|
|
93
93
|
function cmdConfigSet(key, value, profileName) {
|
|
94
94
|
if (!key || value === void 0) {
|
|
95
|
-
errorLine("Usage: bithumb
|
|
95
|
+
errorLine("Usage: bithumb config set <key> <value> [--profile <name>]");
|
|
96
96
|
errorLine("Keys: access_key, secret_key, base_url, timeout_ms");
|
|
97
97
|
process.exitCode = 1;
|
|
98
98
|
return;
|
|
@@ -119,7 +119,7 @@ function cmdConfigSet(key, value, profileName) {
|
|
|
119
119
|
function cmdConfigAddProfile(rest, _v) {
|
|
120
120
|
const name = rest[0];
|
|
121
121
|
if (!name) {
|
|
122
|
-
errorLine("Usage: bithumb
|
|
122
|
+
errorLine("Usage: bithumb config add-profile <name>");
|
|
123
123
|
process.exitCode = 1;
|
|
124
124
|
return;
|
|
125
125
|
}
|
|
@@ -152,13 +152,13 @@ function cmdConfigListProfiles(json) {
|
|
|
152
152
|
}
|
|
153
153
|
function cmdConfigUse(profileName) {
|
|
154
154
|
if (!profileName) {
|
|
155
|
-
errorLine("Usage: bithumb
|
|
155
|
+
errorLine("Usage: bithumb config use <profile-name>");
|
|
156
156
|
process.exitCode = 1;
|
|
157
157
|
return;
|
|
158
158
|
}
|
|
159
159
|
const config = readFullConfig();
|
|
160
160
|
if (!config.profiles[profileName]) {
|
|
161
|
-
errorLine(`Profile '${profileName}' not found. Run 'bithumb
|
|
161
|
+
errorLine(`Profile '${profileName}' not found. Run 'bithumb config list-profiles' to see available profiles.`);
|
|
162
162
|
process.exitCode = 1;
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
@@ -169,4 +169,4 @@ function cmdConfigUse(profileName) {
|
|
|
169
169
|
export {
|
|
170
170
|
handleConfigCommand
|
|
171
171
|
};
|
|
172
|
-
//# sourceMappingURL=config-
|
|
172
|
+
//# sourceMappingURL=config-VZKZANVL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/config.ts"],"sourcesContent":["import {\n configFilePath,\n readFullConfig,\n writeFullConfig,\n} from \"@bithumb-tradekit/core\";\nimport type { BithumbTomlConfig } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printKv, printTable } from \"../formatter.js\";\nimport { existsSync, mkdirSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\n\nexport function handleConfigCommand(\n action: string,\n rest: string[],\n v: CliValues,\n): void {\n const json = v.json ?? false;\n switch (action) {\n case \"show\":\n return cmdConfigShow(json);\n case \"init\":\n return cmdConfigInit();\n case \"set\":\n return cmdConfigSet(rest[0], rest[1], v.profile);\n case \"add-profile\":\n return cmdConfigAddProfile(rest, v);\n case \"list-profiles\":\n return cmdConfigListProfiles(json);\n case \"use\":\n return cmdConfigUse(rest[0]);\n case \"path\":\n outputLine(configFilePath());\n return;\n default:\n if (!action) {\n return cmdConfigShow(json);\n }\n errorLine(`Unknown config command: ${action}. Available: show, init, set, add-profile, list-profiles, use, path`);\n process.exitCode = 1;\n }\n}\n\nfunction cmdConfigShow(json: boolean): void {\n const config = readFullConfig();\n if (json) return printJson(config);\n outputLine(`Config file: ${configFilePath()}`);\n if (config.default_profile) {\n outputLine(`Default profile: ${config.default_profile}`);\n }\n outputLine(\"\");\n const profileNames = Object.keys(config.profiles);\n if (profileNames.length === 0) {\n outputLine(\"No profiles configured. Run 'bithumb config init' to create one.\");\n return;\n }\n for (const name of profileNames) {\n const p = config.profiles[name];\n outputLine(`[${name}]`);\n printKv({\n access_key: p.access_key ? `${p.access_key.slice(0, 8)}...` : \"(not set)\",\n secret_key: p.secret_key ? \"***\" : \"(not set)\",\n ...(p.base_url ? { base_url: p.base_url } : {}),\n ...(p.timeout_ms ? { timeout_ms: p.timeout_ms } : {}),\n });\n outputLine(\"\");\n }\n}\n\nfunction cmdConfigInit(): void {\n const path = configFilePath();\n if (existsSync(path)) {\n outputLine(`Config file already exists: ${path}`);\n outputLine(\"Use 'bithumb config add-profile' to add a new profile.\");\n return;\n }\n const dir = dirname(path);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n const config: BithumbTomlConfig = {\n default_profile: \"default\",\n profiles: {\n default: {\n access_key: \"\",\n secret_key: \"\",\n },\n },\n };\n writeFullConfig(config);\n outputLine(`Config file created: ${path}`);\n outputLine(\"Edit it to add your API credentials.\");\n}\n\nfunction cmdConfigSet(key: string | undefined, value: string | undefined, profileName?: string): void {\n if (!key || value === undefined) {\n errorLine(\"Usage: bithumb config set <key> <value> [--profile <name>]\");\n errorLine(\"Keys: access_key, secret_key, base_url, timeout_ms\");\n process.exitCode = 1;\n return;\n }\n const validKeys = new Set([\"access_key\", \"secret_key\", \"base_url\", \"timeout_ms\"]);\n if (!validKeys.has(key)) {\n errorLine(`Invalid key: ${key}. Valid keys: ${[...validKeys].join(\", \")}`);\n process.exitCode = 1;\n return;\n }\n const config = readFullConfig();\n const name = profileName ?? config.default_profile ?? \"default\";\n if (!config.profiles[name]) {\n config.profiles[name] = {};\n }\n if (key === \"timeout_ms\") {\n (config.profiles[name] as Record<string, unknown>)[key] = Number(value);\n } else {\n (config.profiles[name] as Record<string, unknown>)[key] = value;\n }\n writeFullConfig(config);\n outputLine(`Set ${name}.${key}`);\n}\n\nfunction cmdConfigAddProfile(rest: string[], _v: CliValues): void {\n const name = rest[0];\n if (!name) {\n errorLine(\"Usage: bithumb config add-profile <name>\");\n process.exitCode = 1;\n return;\n }\n const config = readFullConfig();\n if (config.profiles[name]) {\n errorLine(`Profile '${name}' already exists.`);\n process.exitCode = 1;\n return;\n }\n config.profiles[name] = {\n access_key: \"\",\n secret_key: \"\",\n };\n writeFullConfig(config);\n outputLine(`Profile '${name}' added. Edit ${configFilePath()} to set credentials.`);\n}\n\nfunction cmdConfigListProfiles(json: boolean): void {\n const config = readFullConfig();\n const profiles = Object.entries(config.profiles).map(([name, p]) => ({\n name,\n default: name === (config.default_profile ?? \"default\") ? \"*\" : \"\",\n has_credentials: p.access_key && p.secret_key ? \"yes\" : \"no\",\n }));\n if (json) return printJson(profiles);\n if (profiles.length === 0) {\n outputLine(\"No profiles configured.\");\n return;\n }\n printTable(profiles);\n}\n\nfunction cmdConfigUse(profileName: string | undefined): void {\n if (!profileName) {\n errorLine(\"Usage: bithumb config use <profile-name>\");\n process.exitCode = 1;\n return;\n }\n const config = readFullConfig();\n if (!config.profiles[profileName]) {\n errorLine(`Profile '${profileName}' not found. Run 'bithumb config list-profiles' to see available profiles.`);\n process.exitCode = 1;\n return;\n }\n config.default_profile = profileName;\n writeFullConfig(config);\n outputLine(`Default profile set to '${profileName}'`);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
BithumbApiError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DXX5FHRF.js";
|
|
5
5
|
import {
|
|
6
6
|
toArray,
|
|
7
7
|
toNumber
|
|
@@ -32,25 +32,25 @@ async function handleDepositCommand(run, action, v, json) {
|
|
|
32
32
|
case "address":
|
|
33
33
|
return cmdAddress(run, v, json);
|
|
34
34
|
default:
|
|
35
|
-
errorLine(`Unknown deposit command: ${action}. Run 'bithumb
|
|
35
|
+
errorLine(`Unknown deposit command: ${action}. Run 'bithumb deposit --help' for usage.`);
|
|
36
36
|
process.exitCode = 1;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
async function cmdGet(run, v, json) {
|
|
40
40
|
if (v.txids) {
|
|
41
41
|
errorLine("Error: 'deposit get' supports --uuid only. For txid lookup use:");
|
|
42
|
-
errorLine(" bithumb
|
|
42
|
+
errorLine(" bithumb deposit list --txids <txid1,txid2>");
|
|
43
43
|
process.exitCode = 1;
|
|
44
44
|
return;
|
|
45
45
|
}
|
|
46
46
|
if (!v.currency) {
|
|
47
|
-
errorLine("Error: --currency required. Example: bithumb
|
|
47
|
+
errorLine("Error: --currency required. Example: bithumb deposit get --currency BTC --uuid abc-123");
|
|
48
48
|
process.exitCode = 1;
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
51
|
if (!v.uuid) {
|
|
52
|
-
errorLine("Error: --uuid required for 'deposit get'. Example: bithumb
|
|
53
|
-
errorLine("Tip: To search by txid, use 'bithumb
|
|
52
|
+
errorLine("Error: --uuid required for 'deposit get'. Example: bithumb deposit get --currency BTC --uuid abc-123");
|
|
53
|
+
errorLine("Tip: To search by txid, use 'bithumb deposit list --txids <txid>'.");
|
|
54
54
|
process.exitCode = 1;
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
@@ -133,7 +133,7 @@ async function cmdKrw(run, v, json) {
|
|
|
133
133
|
}
|
|
134
134
|
async function cmdGenerateAddress(run, v, json) {
|
|
135
135
|
if (!v.currency || !v.netType) {
|
|
136
|
-
errorLine("Error: --currency and --net-type required. Example: bithumb
|
|
136
|
+
errorLine("Error: --currency and --net-type required. Example: bithumb deposit generate-address --currency BTC --net-type BTC");
|
|
137
137
|
process.exitCode = 1;
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
@@ -154,7 +154,7 @@ async function cmdAddresses(run, json) {
|
|
|
154
154
|
}
|
|
155
155
|
async function cmdAddress(run, v, json) {
|
|
156
156
|
if (!v.currency || !v.netType) {
|
|
157
|
-
errorLine("Error: --currency and --net-type required. Example: bithumb
|
|
157
|
+
errorLine("Error: --currency and --net-type required. Example: bithumb deposit address --currency BTC --net-type BTC");
|
|
158
158
|
process.exitCode = 1;
|
|
159
159
|
return;
|
|
160
160
|
}
|
|
@@ -166,4 +166,4 @@ async function cmdAddress(run, v, json) {
|
|
|
166
166
|
export {
|
|
167
167
|
handleDepositCommand
|
|
168
168
|
};
|
|
169
|
-
//# sourceMappingURL=deposit-
|
|
169
|
+
//# sourceMappingURL=deposit-JGPZ7YIP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/deposit.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport { BithumbApiError } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber, toArray } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleDepositCommand(\n run: ToolRunner,\n action: string,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"get\":\n return cmdGet(run, v, json);\n case \"list\":\n return cmdList(run, v, json);\n case \"list-krw\":\n return cmdListKrw(run, v, json);\n case \"krw\":\n return cmdKrw(run, v, json);\n case \"generate-address\":\n return cmdGenerateAddress(run, v, json);\n case \"addresses\":\n return cmdAddresses(run, json);\n case \"address\":\n return cmdAddress(run, v, json);\n default:\n errorLine(`Unknown deposit command: ${action}. Run 'bithumb deposit --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdGet(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (v.txids) {\n errorLine(\"Error: 'deposit get' supports --uuid only. For txid lookup use:\");\n errorLine(\" bithumb deposit list --txids <txid1,txid2>\");\n process.exitCode = 1;\n return;\n }\n if (!v.currency) {\n errorLine(\"Error: --currency required. Example: bithumb deposit get --currency BTC --uuid abc-123\");\n process.exitCode = 1;\n return;\n }\n if (!v.uuid) {\n errorLine(\"Error: --uuid required for 'deposit get'. Example: bithumb deposit get --currency BTC --uuid abc-123\");\n errorLine(\"Tip: To search by txid, use 'bithumb deposit list --txids <txid>'.\");\n process.exitCode = 1;\n return;\n }\n const args: Record<string, unknown> = { currency: v.currency, uuid: v.uuid };\n try {\n const result = await run(\"deposit_get\", args);\n const data = result.data as Record<string, unknown> | undefined;\n if (!data || (typeof data === \"object\" && Object.keys(data).length === 0)) {\n outputLine(\"No deposit found.\");\n return;\n }\n if (json) return printJson(data);\n printKv(data);\n } catch (err) {\n // Bithumb API may return 4xx for unknown UUID; render gracefully without the `Fatal:` prefix.\n if (err instanceof BithumbApiError) {\n const codeNum = Number(err.code);\n const codeStr = err.code ?? \"\";\n const errNamePattern = /not.?found|invalid|forbidden|unauthorized|bad.?request/i;\n const messagePattern = /not.?found|invalid/i;\n const isClientError =\n (Number.isFinite(codeNum) && codeNum >= 400 && codeNum < 500) ||\n errNamePattern.test(codeStr) ||\n messagePattern.test(err.message);\n if (isClientError) {\n errorLine(`Error: deposit not found or invalid request (${err.code}). ${err.message}`);\n process.exitCode = 1;\n return;\n }\n // Other Bithumb API errors (5xx, unknown code): still graceful, not Fatal.\n errorLine(`Error: ${err.message}`);\n process.exitCode = 1;\n return;\n }\n throw err;\n }\n}\n\nasync function cmdList(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n const args: Record<string, unknown> = {};\n if (v.currency) args.currency = v.currency;\n if (v.state) args.state = v.state;\n if (v.uuids) args.uuids = toArray(v.uuids);\n if (v.txids) args.txids = toArray(v.txids);\n if (v.limit) args.limit = toNumber(v.limit);\n if (v.page) args.page = toNumber(v.page);\n if (v.orderBy) args.order_by = v.orderBy;\n const result = await run(\"deposit_get_list\", args);\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No deposits found\"); return; }\n printTable(items);\n}\n\nasync function cmdListKrw(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n const args: Record<string, unknown> = {};\n if (v.state) args.state = v.state;\n if (v.uuids) args.uuids = toArray(v.uuids);\n if (v.txids) args.txids = toArray(v.txids);\n if (v.limit) args.limit = toNumber(v.limit);\n if (v.page) args.page = toNumber(v.page);\n if (v.orderBy) args.order_by = v.orderBy;\n const result = await run(\"deposit_get_list_krw\", args);\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No KRW deposits found\"); return; }\n printTable(items);\n}\n\nasync function cmdKrw(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.amount || !v.twoFactorType) {\n errorLine(\"Error: --amount and --two-factor-type required.\");\n errorLine(\"CAUTION: This will initiate a real KRW deposit request!\");\n process.exitCode = 1;\n return;\n }\n outputLine(\"WARNING: Initiating KRW deposit request.\");\n const result = await run(\"deposit_krw\", { amount: v.amount, two_factor_type: v.twoFactorType });\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\n}\n\nasync function cmdGenerateAddress(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.currency || !v.netType) {\n errorLine(\"Error: --currency and --net-type required. Example: bithumb deposit generate-address --currency BTC --net-type BTC\");\n process.exitCode = 1;\n return;\n }\n const result = await run(\"deposit_generate_address\", { currency: v.currency, net_type: v.netType });\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\n}\n\nasync function cmdAddresses(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"deposit_get_addresses\", {});\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No deposit addresses found\"); return; }\n printTable(items);\n}\n\nasync function cmdAddress(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.currency || !v.netType) {\n errorLine(\"Error: --currency and --net-type required. Example: bithumb deposit address --currency BTC --net-type BTC\");\n process.exitCode = 1;\n return;\n }\n const result = await run(\"deposit_get_address\", { currency: v.currency, net_type: v.netType });\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
loadConfig,
|
|
9
9
|
printSetupUsage,
|
|
10
10
|
runSetup
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-DXX5FHRF.js";
|
|
12
12
|
import {
|
|
13
13
|
parseCli
|
|
14
14
|
} from "./chunk-XOKGESZ3.js";
|
|
@@ -20,13 +20,13 @@ import {
|
|
|
20
20
|
} from "./chunk-FYO6WLZI.js";
|
|
21
21
|
|
|
22
22
|
// src/constants.ts
|
|
23
|
-
var CLI_VERSION = "0.1.
|
|
23
|
+
var CLI_VERSION = "0.1.6";
|
|
24
24
|
|
|
25
25
|
// src/help.ts
|
|
26
26
|
var GLOBAL_HELP = `
|
|
27
|
-
bithumb
|
|
27
|
+
bithumb v${CLI_VERSION} \u2014 Bithumb Trade CLI
|
|
28
28
|
|
|
29
|
-
Usage: bithumb
|
|
29
|
+
Usage: bithumb <module> <command> [options]
|
|
30
30
|
|
|
31
31
|
Modules:
|
|
32
32
|
market Market data (ticker, orderbook, candles, trades)
|
|
@@ -50,10 +50,10 @@ Global Options:
|
|
|
50
50
|
-h, --help Show help
|
|
51
51
|
-v, --version Show version
|
|
52
52
|
|
|
53
|
-
Run 'bithumb
|
|
53
|
+
Run 'bithumb <module> --help' for module-specific commands.
|
|
54
54
|
`;
|
|
55
55
|
var MARKET_HELP = `
|
|
56
|
-
Usage: bithumb
|
|
56
|
+
Usage: bithumb market <command> [options]
|
|
57
57
|
|
|
58
58
|
Commands:
|
|
59
59
|
markets List all available markets
|
|
@@ -78,13 +78,13 @@ Market Options:
|
|
|
78
78
|
--converting-price-unit <unit> Price unit: KRW (candles-days only)
|
|
79
79
|
|
|
80
80
|
Examples:
|
|
81
|
-
bithumb
|
|
82
|
-
bithumb
|
|
83
|
-
bithumb
|
|
84
|
-
bithumb
|
|
81
|
+
bithumb market markets
|
|
82
|
+
bithumb market ticker KRW-BTC
|
|
83
|
+
bithumb market orderbook KRW-BTC --json
|
|
84
|
+
bithumb market candles-minutes KRW-BTC --unit 5 --count 10
|
|
85
85
|
`;
|
|
86
86
|
var ACCOUNT_HELP = `
|
|
87
|
-
Usage: bithumb
|
|
87
|
+
Usage: bithumb account <command> [options]
|
|
88
88
|
|
|
89
89
|
Commands:
|
|
90
90
|
balance Get account balances
|
|
@@ -104,12 +104,12 @@ Audit Options:
|
|
|
104
104
|
--level <level> Filter by log level (INFO, WARN, ERROR, DEBUG)
|
|
105
105
|
|
|
106
106
|
Examples:
|
|
107
|
-
bithumb
|
|
108
|
-
bithumb
|
|
109
|
-
bithumb
|
|
107
|
+
bithumb account balance
|
|
108
|
+
bithumb account order-chance --market KRW-BTC
|
|
109
|
+
bithumb account audit --limit 10
|
|
110
110
|
`;
|
|
111
111
|
var TRADE_HELP = `
|
|
112
|
-
Usage: bithumb
|
|
112
|
+
Usage: bithumb trade <command> [options]
|
|
113
113
|
|
|
114
114
|
Commands:
|
|
115
115
|
orders List orders
|
|
@@ -138,14 +138,14 @@ Trade Options:
|
|
|
138
138
|
--file <path> JSON file path (batch-place only)
|
|
139
139
|
|
|
140
140
|
Examples:
|
|
141
|
-
bithumb
|
|
142
|
-
bithumb
|
|
143
|
-
bithumb
|
|
144
|
-
bithumb
|
|
145
|
-
bithumb
|
|
141
|
+
bithumb trade orders --market KRW-BTC --state wait
|
|
142
|
+
bithumb trade get --uuid abc-123
|
|
143
|
+
bithumb trade place --market KRW-BTC --side bid --order-type limit --price 50000000 --volume 0.01
|
|
144
|
+
bithumb trade cancel --uuid abc-123
|
|
145
|
+
bithumb trade batch-place --file orders.json
|
|
146
146
|
`;
|
|
147
147
|
var SETUP_HELP = `
|
|
148
|
-
Usage: bithumb
|
|
148
|
+
Usage: bithumb setup --client <client> [--profile <name>] [--modules <list>]
|
|
149
149
|
|
|
150
150
|
Configure MCP client integration for supported AI coding tools.
|
|
151
151
|
|
|
@@ -155,11 +155,11 @@ Options:
|
|
|
155
155
|
--modules <list> Comma-separated modules to enable
|
|
156
156
|
|
|
157
157
|
Examples:
|
|
158
|
-
bithumb
|
|
159
|
-
bithumb
|
|
158
|
+
bithumb setup --client claude-desktop
|
|
159
|
+
bithumb setup --client cursor --modules market,account
|
|
160
160
|
`;
|
|
161
161
|
var TWAP_HELP = `
|
|
162
|
-
Usage: bithumb
|
|
162
|
+
Usage: bithumb twap <command> [options]
|
|
163
163
|
|
|
164
164
|
Commands:
|
|
165
165
|
place Place a TWAP order
|
|
@@ -181,12 +181,12 @@ TWAP Options:
|
|
|
181
181
|
--order-by <order> Sort order: asc / desc
|
|
182
182
|
|
|
183
183
|
Examples:
|
|
184
|
-
bithumb
|
|
185
|
-
bithumb
|
|
186
|
-
bithumb
|
|
184
|
+
bithumb twap place --market KRW-BTC --side bid --duration 3600 --frequency 60 --price 50000000
|
|
185
|
+
bithumb twap orders --market KRW-BTC
|
|
186
|
+
bithumb twap cancel --algo-order-id abc-123
|
|
187
187
|
`;
|
|
188
188
|
var WITHDRAW_HELP = `
|
|
189
|
-
Usage: bithumb
|
|
189
|
+
Usage: bithumb withdraw <command> [options]
|
|
190
190
|
|
|
191
191
|
Commands:
|
|
192
192
|
chance Get withdrawal availability info
|
|
@@ -221,12 +221,12 @@ Withdraw Options:
|
|
|
221
221
|
--order-by <order> Sort order: asc / desc
|
|
222
222
|
|
|
223
223
|
Examples:
|
|
224
|
-
bithumb
|
|
225
|
-
bithumb
|
|
226
|
-
bithumb
|
|
224
|
+
bithumb withdraw chance --currency BTC --net-type BTC
|
|
225
|
+
bithumb withdraw list --currency BTC
|
|
226
|
+
bithumb withdraw addresses
|
|
227
227
|
`;
|
|
228
228
|
var DEPOSIT_HELP = `
|
|
229
|
-
Usage: bithumb
|
|
229
|
+
Usage: bithumb deposit <command> [options]
|
|
230
230
|
|
|
231
231
|
Commands:
|
|
232
232
|
get Get specific deposit
|
|
@@ -251,12 +251,12 @@ Deposit Options:
|
|
|
251
251
|
--order-by <order> Sort order: asc / desc
|
|
252
252
|
|
|
253
253
|
Examples:
|
|
254
|
-
bithumb
|
|
255
|
-
bithumb
|
|
256
|
-
bithumb
|
|
254
|
+
bithumb deposit list --currency BTC
|
|
255
|
+
bithumb deposit address --currency BTC --net-type BTC
|
|
256
|
+
bithumb deposit addresses
|
|
257
257
|
`;
|
|
258
258
|
var SYSTEM_HELP = `
|
|
259
|
-
Usage: bithumb
|
|
259
|
+
Usage: bithumb system <command> [options]
|
|
260
260
|
|
|
261
261
|
Commands:
|
|
262
262
|
capabilities Server capabilities and module availability for agent planning
|
|
@@ -265,15 +265,15 @@ System Options:
|
|
|
265
265
|
--json Output as JSON
|
|
266
266
|
|
|
267
267
|
Examples:
|
|
268
|
-
bithumb
|
|
269
|
-
bithumb
|
|
268
|
+
bithumb system capabilities
|
|
269
|
+
bithumb system capabilities --json
|
|
270
270
|
|
|
271
271
|
Notes:
|
|
272
|
-
- 'bithumb
|
|
272
|
+
- 'bithumb account capabilities' is an alias for 'bithumb system capabilities'.
|
|
273
273
|
- Use this command to discover which modules are enabled and which require auth.
|
|
274
274
|
`;
|
|
275
275
|
var CONFIG_HELP = `
|
|
276
|
-
Usage: bithumb
|
|
276
|
+
Usage: bithumb config <command> [options]
|
|
277
277
|
|
|
278
278
|
Commands:
|
|
279
279
|
show Show current configuration
|
|
@@ -288,10 +288,10 @@ Options:
|
|
|
288
288
|
--profile <name> Target profile (default: current default)
|
|
289
289
|
|
|
290
290
|
Examples:
|
|
291
|
-
bithumb
|
|
292
|
-
bithumb
|
|
293
|
-
bithumb
|
|
294
|
-
bithumb
|
|
291
|
+
bithumb config init
|
|
292
|
+
bithumb config set access_key your_key --profile trading
|
|
293
|
+
bithumb config use trading
|
|
294
|
+
bithumb config list-profiles
|
|
295
295
|
`;
|
|
296
296
|
function printHelp(positionals) {
|
|
297
297
|
const module = positionals[0];
|
|
@@ -386,7 +386,7 @@ async function main() {
|
|
|
386
386
|
const [module, action, ...rest] = positionals;
|
|
387
387
|
const json = v.json ?? false;
|
|
388
388
|
if (module === "config") {
|
|
389
|
-
const { handleConfigCommand } = await import("./config-
|
|
389
|
+
const { handleConfigCommand } = await import("./config-VZKZANVL.js");
|
|
390
390
|
return handleConfigCommand(action, rest, v);
|
|
391
391
|
}
|
|
392
392
|
const config = loadConfig({
|
|
@@ -416,36 +416,36 @@ async function main() {
|
|
|
416
416
|
const privateModules = /* @__PURE__ */ new Set(["account", "trade", "twap", "withdraw", "deposit"]);
|
|
417
417
|
if (privateModules.has(module) && !config.hasAuth) {
|
|
418
418
|
errorLine(
|
|
419
|
-
"Error: API credentials required. Run 'bithumb
|
|
419
|
+
"Error: API credentials required. Run 'bithumb setup' or configure ~/.bithumb/config.toml"
|
|
420
420
|
);
|
|
421
421
|
process.exitCode = 1;
|
|
422
422
|
return;
|
|
423
423
|
}
|
|
424
424
|
if (module === "market") {
|
|
425
|
-
const { handleMarketCommand } = await import("./market-
|
|
425
|
+
const { handleMarketCommand } = await import("./market-V7L36QN3.js");
|
|
426
426
|
return handleMarketCommand(run, action, rest, v, json);
|
|
427
427
|
}
|
|
428
428
|
if (module === "account") {
|
|
429
|
-
const { handleAccountCommand } = await import("./account-
|
|
429
|
+
const { handleAccountCommand } = await import("./account-PM4UQZGC.js");
|
|
430
430
|
return handleAccountCommand(run, action, v, json);
|
|
431
431
|
}
|
|
432
432
|
if (module === "trade") {
|
|
433
|
-
const { handleTradeCommand } = await import("./trade-
|
|
433
|
+
const { handleTradeCommand } = await import("./trade-MDOYZ5BW.js");
|
|
434
434
|
return handleTradeCommand(run, action, v, json);
|
|
435
435
|
}
|
|
436
436
|
if (module === "twap") {
|
|
437
|
-
const { handleTwapCommand } = await import("./twap-
|
|
437
|
+
const { handleTwapCommand } = await import("./twap-QGTXCV3U.js");
|
|
438
438
|
return handleTwapCommand(run, action, v, json);
|
|
439
439
|
}
|
|
440
440
|
if (module === "withdraw") {
|
|
441
|
-
const { handleWithdrawCommand } = await import("./withdraw-
|
|
441
|
+
const { handleWithdrawCommand } = await import("./withdraw-PLP3ZC4Q.js");
|
|
442
442
|
return handleWithdrawCommand(run, action, v, json);
|
|
443
443
|
}
|
|
444
444
|
if (module === "deposit") {
|
|
445
|
-
const { handleDepositCommand } = await import("./deposit-
|
|
445
|
+
const { handleDepositCommand } = await import("./deposit-JGPZ7YIP.js");
|
|
446
446
|
return handleDepositCommand(run, action, v, json);
|
|
447
447
|
}
|
|
448
|
-
errorLine(`Unknown command: ${module}. Run 'bithumb
|
|
448
|
+
errorLine(`Unknown command: ${module}. Run 'bithumb --help' for usage.`);
|
|
449
449
|
process.exitCode = 1;
|
|
450
450
|
}
|
|
451
451
|
main().catch((err) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/help.ts","../src/index.ts"],"sourcesContent":["export const CLI_VERSION = \"0.1.4\";\n","import { outputLine } from \"./formatter.js\";\nimport { CLI_VERSION } from \"./constants.js\";\n\nconst GLOBAL_HELP = `\nbithumb-trade v${CLI_VERSION} — Bithumb Trade CLI\n\nUsage: bithumb-trade <module> <command> [options]\n\nModules:\n market Market data (ticker, orderbook, candles, trades)\n account Account balance, wallet status, API keys\n trade Order management (list, place, cancel, batch)\n twap TWAP (Time-Weighted Average Price) orders\n withdraw Cryptocurrency and KRW withdrawals\n deposit Cryptocurrency and KRW deposits\n system Server capabilities and module availability for agent planning\n\nUtility:\n setup Configure MCP client integration\n config Manage CLI configuration profiles\n diagnose Run connectivity diagnostics\n\nGlobal Options:\n --profile <name> Config profile (default: \"default\")\n --json Output as JSON\n --verbose Enable verbose logging\n --read-only Read-only mode (setup only, disables write operations)\n -h, --help Show help\n -v, --version Show version\n\nRun 'bithumb-trade <module> --help' for module-specific commands.\n`;\n\nconst MARKET_HELP = `\nUsage: bithumb-trade market <command> [options]\n\nCommands:\n markets List all available markets\n ticker <market> Get ticker for market(s) (comma-separated)\n orderbook <market> Get orderbook for market(s) (comma-separated)\n trades <market> Get recent trades\n candles-minutes <market> Get minute candles\n candles-days <market> Get daily candles\n candles-weeks <market> Get weekly candles\n candles-months <market> Get monthly candles\n warnings Get virtual asset warning markets\n notices Get notice list\n fee-inout <currency> Get deposit/withdrawal fees\n\nMarket Options:\n --is-details Include detailed market info (markets only)\n --count <n> Number of results to return\n --to <timestamp> Return results before this timestamp\n --unit <n> Minute unit: 1,3,5,10,15,30,60,240 (candles-minutes only)\n --cursor <cursor> Pagination cursor (trades only)\n --days-ago <n> Filter trades by days ago (trades only)\n --converting-price-unit <unit> Price unit: KRW (candles-days only)\n\nExamples:\n bithumb-trade market markets\n bithumb-trade market ticker KRW-BTC\n bithumb-trade market orderbook KRW-BTC --json\n bithumb-trade market candles-minutes KRW-BTC --unit 5 --count 10\n`;\n\nconst ACCOUNT_HELP = `\nUsage: bithumb-trade account <command> [options]\n\nCommands:\n balance Get account balances\n order-chance --market <market> Get order chance for a market\n audit View trade audit log\n wallet-status Get wallet deposit/withdrawal status\n api-keys Get API key list\n capabilities (alias) Server capabilities for agent planning (same as 'system capabilities')\n\nAccount Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n\nAudit Options:\n --limit <n> Number of log entries (default: 20)\n --tool <name> Filter by tool name\n --since <date> Show entries since date (ISO format)\n --level <level> Filter by log level (INFO, WARN, ERROR, DEBUG)\n\nExamples:\n bithumb-trade account balance\n bithumb-trade account order-chance --market KRW-BTC\n bithumb-trade account audit --limit 10\n`;\n\nconst TRADE_HELP = `\nUsage: bithumb-trade trade <command> [options]\n\nCommands:\n orders List orders\n get Get order details\n place Place a new order\n cancel Cancel an order\n batch-place --file <path> Place multiple orders from JSON file (max 20)\n batch-cancel Cancel multiple orders (max 30)\n\nTrade Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n --uuid <uuid> Order UUID\n --client-order-id <id> Client-assigned order ID\n --side <side> Order side: bid (buy) / ask (sell)\n --order-type <type> Order type: limit / price / market (canonical)\n --ord-type <type> (deprecated alias of --order-type)\n --price <price> Order price\n --volume <volume> Order volume\n --state <state> Filter by state: wait / watch / done / cancel\n --states <states> Filter by multiple states (comma-separated)\n --uuids <uuids> Filter by multiple UUIDs (comma-separated)\n --client-order-ids <ids> Filter by multiple client order IDs (comma-separated)\n --order-by <order> Sort order: asc / desc\n --page <n> Page number\n --limit <n> Results per page\n --file <path> JSON file path (batch-place only)\n\nExamples:\n bithumb-trade trade orders --market KRW-BTC --state wait\n bithumb-trade trade get --uuid abc-123\n bithumb-trade trade place --market KRW-BTC --side bid --order-type limit --price 50000000 --volume 0.01\n bithumb-trade trade cancel --uuid abc-123\n bithumb-trade trade batch-place --file orders.json\n`;\n\nconst SETUP_HELP = `\nUsage: bithumb-trade setup --client <client> [--profile <name>] [--modules <list>]\n\nConfigure MCP client integration for supported AI coding tools.\n\nOptions:\n --client <client> Target client: claude-desktop, cursor, windsurf, vscode, claude-code\n --profile <name> Config profile to use (default: \"default\")\n --modules <list> Comma-separated modules to enable\n\nExamples:\n bithumb-trade setup --client claude-desktop\n bithumb-trade setup --client cursor --modules market,account\n`;\n\nconst TWAP_HELP = `\nUsage: bithumb-trade twap <command> [options]\n\nCommands:\n place Place a TWAP order\n orders List TWAP orders\n cancel Cancel a TWAP order\n\nTWAP Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n --side <side> Order side: bid / ask\n --duration <seconds> Duration in seconds (300-43200)\n --frequency <seconds> Frequency: 5,15,20,30,60,120\n --price <price> Order price (required for bid)\n --volume <volume> Order volume (required for ask)\n --algo-order-id <id> TWAP order ID (for cancel)\n --state <state> Order state filter\n --next-key <key> Pagination cursor\n --limit <n> Results per page\n --uuids <uuids> Filter by TWAP order IDs (comma-separated)\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb-trade twap place --market KRW-BTC --side bid --duration 3600 --frequency 60 --price 50000000\n bithumb-trade twap orders --market KRW-BTC\n bithumb-trade twap cancel --algo-order-id abc-123\n`;\n\nconst WITHDRAW_HELP = `\nUsage: bithumb-trade withdraw <command> [options]\n\nCommands:\n chance Get withdrawal availability info\n get Get specific withdrawal\n list List coin withdrawals\n list-krw List KRW withdrawals\n coin Withdraw cryptocurrency (CAUTION)\n krw Withdraw KRW (CAUTION)\n cancel Cancel coin withdrawal\n addresses List allowed withdrawal addresses\n\nWithdraw Options:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n --amount <amount> Withdrawal amount\n --address <addr> Withdrawal address\n --secondary-address <addr> Secondary address (tag/memo)\n --exchange-name <name> Exchange name\n --receiver-type <type> Receiver type: personal / corporation\n --receiver-ko-name <name> Receiver Korean name\n --receiver-en-name <name> Receiver English name\n --receiver-corp-ko-name <name> Corporation Korean name\n --receiver-corp-en-name <name> Corporation English name\n --two-factor-type <type> 2FA type (kakao)\n --uuid <uuid> Withdrawal UUID\n --txids <txids> Transaction ID(s) (comma-separated for list)\n --uuids <uuids> Filter by UUIDs (comma-separated, for list)\n --withdrawal-id <id> Withdrawal ID (for cancel)\n --state <state> State filter (for list)\n --limit <n> Results per page (max 100)\n --page <n> Page number\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb-trade withdraw chance --currency BTC --net-type BTC\n bithumb-trade withdraw list --currency BTC\n bithumb-trade withdraw addresses\n`;\n\nconst DEPOSIT_HELP = `\nUsage: bithumb-trade deposit <command> [options]\n\nCommands:\n get Get specific deposit\n list List coin deposits\n list-krw List KRW deposits\n krw Request KRW deposit (CAUTION)\n generate-address Generate deposit address\n addresses List all deposit addresses\n address Get specific deposit address\n\nDeposit Options:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n --amount <amount> Deposit amount\n --two-factor-type <type> 2FA type (kakao)\n --uuid <uuid> Deposit UUID\n --txids <txids> Transaction ID(s) (comma-separated for list)\n --uuids <uuids> Filter by UUIDs (comma-separated, for list)\n --state <state> State filter (for list)\n --limit <n> Results per page (max 100)\n --page <n> Page number\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb-trade deposit list --currency BTC\n bithumb-trade deposit address --currency BTC --net-type BTC\n bithumb-trade deposit addresses\n`;\n\nconst SYSTEM_HELP = `\nUsage: bithumb-trade system <command> [options]\n\nCommands:\n capabilities Server capabilities and module availability for agent planning\n\nSystem Options:\n --json Output as JSON\n\nExamples:\n bithumb-trade system capabilities\n bithumb-trade system capabilities --json\n\nNotes:\n - 'bithumb-trade account capabilities' is an alias for 'bithumb-trade system capabilities'.\n - Use this command to discover which modules are enabled and which require auth.\n`;\n\nconst CONFIG_HELP = `\nUsage: bithumb-trade config <command> [options]\n\nCommands:\n show Show current configuration\n init Create config file\n set <key> <value> Set a config value (access_key, secret_key, base_url, timeout_ms)\n add-profile <name> Add a new profile\n list-profiles List all profiles\n use <name> Set default profile\n path Show config file path\n\nOptions:\n --profile <name> Target profile (default: current default)\n\nExamples:\n bithumb-trade config init\n bithumb-trade config set access_key your_key --profile trading\n bithumb-trade config use trading\n bithumb-trade config list-profiles\n`;\n\nexport function printHelp(positionals: string[]): void {\n const module = positionals[0];\n switch (module) {\n case \"market\":\n outputLine(MARKET_HELP.trim());\n break;\n case \"account\":\n outputLine(ACCOUNT_HELP.trim());\n break;\n case \"trade\":\n outputLine(TRADE_HELP.trim());\n break;\n case \"twap\":\n outputLine(TWAP_HELP.trim());\n break;\n case \"withdraw\":\n outputLine(WITHDRAW_HELP.trim());\n break;\n case \"deposit\":\n outputLine(DEPOSIT_HELP.trim());\n break;\n case \"system\":\n outputLine(SYSTEM_HELP.trim());\n break;\n case \"setup\":\n outputLine(SETUP_HELP.trim());\n break;\n case \"config\":\n outputLine(CONFIG_HELP.trim());\n break;\n default:\n outputLine(GLOBAL_HELP.trim());\n break;\n }\n}\n","import {\n loadConfig,\n BithumbRestClient,\n createToolRunner,\n TradeLogger,\n checkForUpdates,\n runSetup,\n printSetupUsage,\n SUPPORTED_CLIENTS,\n} from \"@bithumb-tradekit/core\";\nimport type { ToolRunner, ClientId } from \"@bithumb-tradekit/core\";\nimport { parseCli } from \"./parser.js\";\nimport type { CliValues } from \"./parser.js\";\nimport { outputLine, errorLine, printJson, printKv } from \"./formatter.js\";\nimport { printHelp } from \"./help.js\";\nimport { CLI_VERSION } from \"./constants.js\";\n\nfunction wrapRunnerWithLogger(\n baseRunner: ToolRunner,\n logger: TradeLogger,\n): ToolRunner {\n return async (toolName, args) => {\n const start = Date.now();\n try {\n const result = await baseRunner(toolName, args);\n logger.logTool(\"info\", toolName, args, { status: \"ok\" }, Date.now() - start);\n return result;\n } catch (error) {\n logger.logTool(\"error\", toolName, args, error, Date.now() - start);\n throw error;\n }\n };\n}\n\nfunction handleSetup(argv: string[]): void {\n const idx = argv.indexOf(\"setup\");\n const rest = argv.slice(idx + 1);\n\n let client: string | undefined;\n let profile: string | undefined;\n let modules: string | undefined;\n\n for (let i = 0; i < rest.length; i++) {\n if (rest[i] === \"--client\" && rest[i + 1]) {\n client = rest[++i];\n } else if (rest[i] === \"--profile\" && rest[i + 1]) {\n profile = rest[++i];\n } else if (rest[i] === \"--modules\" && rest[i + 1]) {\n modules = rest[++i];\n } else if (rest[i] === \"--help\" || rest[i] === \"-h\") {\n printSetupUsage();\n return;\n }\n }\n\n if (!client || !SUPPORTED_CLIENTS.includes(client as ClientId)) {\n errorLine(`Error: --client is required. Supported: ${SUPPORTED_CLIENTS.join(\", \")}`);\n process.exitCode = 1;\n return;\n }\n\n runSetup({ client: client as ClientId, profile, modules });\n}\n\nasync function main(): Promise<void> {\n checkForUpdates(\"@bithumb-tradekit/cli\", CLI_VERSION);\n\n // 1. Setup subcommand (before parseCli)\n if (process.argv[2] === \"setup\") {\n handleSetup(process.argv);\n return;\n }\n\n // 2. Parse arguments\n const { values: v, positionals } = parseCli(process.argv.slice(2));\n\n if (v.version) {\n outputLine(CLI_VERSION);\n return;\n }\n\n if (v.help || positionals.length === 0) {\n printHelp(positionals);\n return;\n }\n\n const [module, action, ...rest] = positionals;\n const json = v.json ?? false;\n\n // 3. Config command (no auth needed, no runner needed)\n if (module === \"config\") {\n const { handleConfigCommand } = await import(\"./commands/config.js\");\n return handleConfigCommand(action, rest, v);\n }\n\n // 4. Load config + create runner\n const config = loadConfig({\n modules: v.modules,\n readOnly: v.readOnly,\n verbose: v.verbose,\n profile: v.profile,\n });\n const client = new BithumbRestClient(config);\n const baseRunner = createToolRunner(client, config);\n const logger = new TradeLogger(v.verbose ? \"debug\" : \"info\");\n const run = wrapRunnerWithLogger(baseRunner, logger);\n\n // 5. Diagnose (needs config but no auth)\n if (module === \"diagnose\") {\n const result = await run(\"system_diagnose\", {});\n const data = result.data ?? result;\n if (json) return printJson(data);\n printKv(data as Record<string, unknown>);\n return;\n }\n\n // 5b. System capabilities (no auth needed)\n // Accept both `system capabilities` (canonical) and `account capabilities` (alias)\n if (\n (module === \"system\" && action === \"capabilities\") ||\n (module === \"account\" && action === \"capabilities\")\n ) {\n const result = await run(\"system_get_capabilities\", {});\n const data = result.data ?? result;\n if (json) return printJson(data);\n printKv(data as Record<string, unknown>);\n return;\n }\n\n // 6. Private API auth guard\n const privateModules = new Set([\"account\", \"trade\", \"twap\", \"withdraw\", \"deposit\"]);\n if (privateModules.has(module) && !config.hasAuth) {\n errorLine(\n \"Error: API credentials required. Run 'bithumb-trade setup' or configure ~/.bithumb/config.toml\",\n );\n process.exitCode = 1;\n return;\n }\n\n // 7. Module routing\n if (module === \"market\") {\n const { handleMarketCommand } = await import(\"./commands/market.js\");\n return handleMarketCommand(run, action, rest, v, json);\n }\n if (module === \"account\") {\n const { handleAccountCommand } = await import(\"./commands/account.js\");\n return handleAccountCommand(run, action, v, json);\n }\n if (module === \"trade\") {\n const { handleTradeCommand } = await import(\"./commands/trade.js\");\n return handleTradeCommand(run, action, v, json);\n }\n if (module === \"twap\") {\n const { handleTwapCommand } = await import(\"./commands/twap.js\");\n return handleTwapCommand(run, action, v, json);\n }\n if (module === \"withdraw\") {\n const { handleWithdrawCommand } = await import(\"./commands/withdraw.js\");\n return handleWithdrawCommand(run, action, v, json);\n }\n if (module === \"deposit\") {\n const { handleDepositCommand } = await import(\"./commands/deposit.js\");\n return handleDepositCommand(run, action, v, json);\n }\n\n errorLine(`Unknown command: ${module}. Run 'bithumb-trade --help' for usage.`);\n process.exitCode = 1;\n}\n\nmain().catch((err) => {\n errorLine(`Fatal: ${err instanceof Error ? err.message : String(err)}`);\n process.exitCode = 1;\n});\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/help.ts","../src/index.ts"],"sourcesContent":["export const CLI_VERSION = \"0.1.6\";\n","import { outputLine } from \"./formatter.js\";\nimport { CLI_VERSION } from \"./constants.js\";\n\nconst GLOBAL_HELP = `\nbithumb v${CLI_VERSION} — Bithumb Trade CLI\n\nUsage: bithumb <module> <command> [options]\n\nModules:\n market Market data (ticker, orderbook, candles, trades)\n account Account balance, wallet status, API keys\n trade Order management (list, place, cancel, batch)\n twap TWAP (Time-Weighted Average Price) orders\n withdraw Cryptocurrency and KRW withdrawals\n deposit Cryptocurrency and KRW deposits\n system Server capabilities and module availability for agent planning\n\nUtility:\n setup Configure MCP client integration\n config Manage CLI configuration profiles\n diagnose Run connectivity diagnostics\n\nGlobal Options:\n --profile <name> Config profile (default: \"default\")\n --json Output as JSON\n --verbose Enable verbose logging\n --read-only Read-only mode (setup only, disables write operations)\n -h, --help Show help\n -v, --version Show version\n\nRun 'bithumb <module> --help' for module-specific commands.\n`;\n\nconst MARKET_HELP = `\nUsage: bithumb market <command> [options]\n\nCommands:\n markets List all available markets\n ticker <market> Get ticker for market(s) (comma-separated)\n orderbook <market> Get orderbook for market(s) (comma-separated)\n trades <market> Get recent trades\n candles-minutes <market> Get minute candles\n candles-days <market> Get daily candles\n candles-weeks <market> Get weekly candles\n candles-months <market> Get monthly candles\n warnings Get virtual asset warning markets\n notices Get notice list\n fee-inout <currency> Get deposit/withdrawal fees\n\nMarket Options:\n --is-details Include detailed market info (markets only)\n --count <n> Number of results to return\n --to <timestamp> Return results before this timestamp\n --unit <n> Minute unit: 1,3,5,10,15,30,60,240 (candles-minutes only)\n --cursor <cursor> Pagination cursor (trades only)\n --days-ago <n> Filter trades by days ago (trades only)\n --converting-price-unit <unit> Price unit: KRW (candles-days only)\n\nExamples:\n bithumb market markets\n bithumb market ticker KRW-BTC\n bithumb market orderbook KRW-BTC --json\n bithumb market candles-minutes KRW-BTC --unit 5 --count 10\n`;\n\nconst ACCOUNT_HELP = `\nUsage: bithumb account <command> [options]\n\nCommands:\n balance Get account balances\n order-chance --market <market> Get order chance for a market\n audit View trade audit log\n wallet-status Get wallet deposit/withdrawal status\n api-keys Get API key list\n capabilities (alias) Server capabilities for agent planning (same as 'system capabilities')\n\nAccount Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n\nAudit Options:\n --limit <n> Number of log entries (default: 20)\n --tool <name> Filter by tool name\n --since <date> Show entries since date (ISO format)\n --level <level> Filter by log level (INFO, WARN, ERROR, DEBUG)\n\nExamples:\n bithumb account balance\n bithumb account order-chance --market KRW-BTC\n bithumb account audit --limit 10\n`;\n\nconst TRADE_HELP = `\nUsage: bithumb trade <command> [options]\n\nCommands:\n orders List orders\n get Get order details\n place Place a new order\n cancel Cancel an order\n batch-place --file <path> Place multiple orders from JSON file (max 20)\n batch-cancel Cancel multiple orders (max 30)\n\nTrade Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n --uuid <uuid> Order UUID\n --client-order-id <id> Client-assigned order ID\n --side <side> Order side: bid (buy) / ask (sell)\n --order-type <type> Order type: limit / price / market (canonical)\n --ord-type <type> (deprecated alias of --order-type)\n --price <price> Order price\n --volume <volume> Order volume\n --state <state> Filter by state: wait / watch / done / cancel\n --states <states> Filter by multiple states (comma-separated)\n --uuids <uuids> Filter by multiple UUIDs (comma-separated)\n --client-order-ids <ids> Filter by multiple client order IDs (comma-separated)\n --order-by <order> Sort order: asc / desc\n --page <n> Page number\n --limit <n> Results per page\n --file <path> JSON file path (batch-place only)\n\nExamples:\n bithumb trade orders --market KRW-BTC --state wait\n bithumb trade get --uuid abc-123\n bithumb trade place --market KRW-BTC --side bid --order-type limit --price 50000000 --volume 0.01\n bithumb trade cancel --uuid abc-123\n bithumb trade batch-place --file orders.json\n`;\n\nconst SETUP_HELP = `\nUsage: bithumb setup --client <client> [--profile <name>] [--modules <list>]\n\nConfigure MCP client integration for supported AI coding tools.\n\nOptions:\n --client <client> Target client: claude-desktop, cursor, windsurf, vscode, claude-code\n --profile <name> Config profile to use (default: \"default\")\n --modules <list> Comma-separated modules to enable\n\nExamples:\n bithumb setup --client claude-desktop\n bithumb setup --client cursor --modules market,account\n`;\n\nconst TWAP_HELP = `\nUsage: bithumb twap <command> [options]\n\nCommands:\n place Place a TWAP order\n orders List TWAP orders\n cancel Cancel a TWAP order\n\nTWAP Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n --side <side> Order side: bid / ask\n --duration <seconds> Duration in seconds (300-43200)\n --frequency <seconds> Frequency: 5,15,20,30,60,120\n --price <price> Order price (required for bid)\n --volume <volume> Order volume (required for ask)\n --algo-order-id <id> TWAP order ID (for cancel)\n --state <state> Order state filter\n --next-key <key> Pagination cursor\n --limit <n> Results per page\n --uuids <uuids> Filter by TWAP order IDs (comma-separated)\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb twap place --market KRW-BTC --side bid --duration 3600 --frequency 60 --price 50000000\n bithumb twap orders --market KRW-BTC\n bithumb twap cancel --algo-order-id abc-123\n`;\n\nconst WITHDRAW_HELP = `\nUsage: bithumb withdraw <command> [options]\n\nCommands:\n chance Get withdrawal availability info\n get Get specific withdrawal\n list List coin withdrawals\n list-krw List KRW withdrawals\n coin Withdraw cryptocurrency (CAUTION)\n krw Withdraw KRW (CAUTION)\n cancel Cancel coin withdrawal\n addresses List allowed withdrawal addresses\n\nWithdraw Options:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n --amount <amount> Withdrawal amount\n --address <addr> Withdrawal address\n --secondary-address <addr> Secondary address (tag/memo)\n --exchange-name <name> Exchange name\n --receiver-type <type> Receiver type: personal / corporation\n --receiver-ko-name <name> Receiver Korean name\n --receiver-en-name <name> Receiver English name\n --receiver-corp-ko-name <name> Corporation Korean name\n --receiver-corp-en-name <name> Corporation English name\n --two-factor-type <type> 2FA type (kakao)\n --uuid <uuid> Withdrawal UUID\n --txids <txids> Transaction ID(s) (comma-separated for list)\n --uuids <uuids> Filter by UUIDs (comma-separated, for list)\n --withdrawal-id <id> Withdrawal ID (for cancel)\n --state <state> State filter (for list)\n --limit <n> Results per page (max 100)\n --page <n> Page number\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb withdraw chance --currency BTC --net-type BTC\n bithumb withdraw list --currency BTC\n bithumb withdraw addresses\n`;\n\nconst DEPOSIT_HELP = `\nUsage: bithumb deposit <command> [options]\n\nCommands:\n get Get specific deposit\n list List coin deposits\n list-krw List KRW deposits\n krw Request KRW deposit (CAUTION)\n generate-address Generate deposit address\n addresses List all deposit addresses\n address Get specific deposit address\n\nDeposit Options:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n --amount <amount> Deposit amount\n --two-factor-type <type> 2FA type (kakao)\n --uuid <uuid> Deposit UUID\n --txids <txids> Transaction ID(s) (comma-separated for list)\n --uuids <uuids> Filter by UUIDs (comma-separated, for list)\n --state <state> State filter (for list)\n --limit <n> Results per page (max 100)\n --page <n> Page number\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb deposit list --currency BTC\n bithumb deposit address --currency BTC --net-type BTC\n bithumb deposit addresses\n`;\n\nconst SYSTEM_HELP = `\nUsage: bithumb system <command> [options]\n\nCommands:\n capabilities Server capabilities and module availability for agent planning\n\nSystem Options:\n --json Output as JSON\n\nExamples:\n bithumb system capabilities\n bithumb system capabilities --json\n\nNotes:\n - 'bithumb account capabilities' is an alias for 'bithumb system capabilities'.\n - Use this command to discover which modules are enabled and which require auth.\n`;\n\nconst CONFIG_HELP = `\nUsage: bithumb config <command> [options]\n\nCommands:\n show Show current configuration\n init Create config file\n set <key> <value> Set a config value (access_key, secret_key, base_url, timeout_ms)\n add-profile <name> Add a new profile\n list-profiles List all profiles\n use <name> Set default profile\n path Show config file path\n\nOptions:\n --profile <name> Target profile (default: current default)\n\nExamples:\n bithumb config init\n bithumb config set access_key your_key --profile trading\n bithumb config use trading\n bithumb config list-profiles\n`;\n\nexport function printHelp(positionals: string[]): void {\n const module = positionals[0];\n switch (module) {\n case \"market\":\n outputLine(MARKET_HELP.trim());\n break;\n case \"account\":\n outputLine(ACCOUNT_HELP.trim());\n break;\n case \"trade\":\n outputLine(TRADE_HELP.trim());\n break;\n case \"twap\":\n outputLine(TWAP_HELP.trim());\n break;\n case \"withdraw\":\n outputLine(WITHDRAW_HELP.trim());\n break;\n case \"deposit\":\n outputLine(DEPOSIT_HELP.trim());\n break;\n case \"system\":\n outputLine(SYSTEM_HELP.trim());\n break;\n case \"setup\":\n outputLine(SETUP_HELP.trim());\n break;\n case \"config\":\n outputLine(CONFIG_HELP.trim());\n break;\n default:\n outputLine(GLOBAL_HELP.trim());\n break;\n }\n}\n","import {\n loadConfig,\n BithumbRestClient,\n createToolRunner,\n TradeLogger,\n checkForUpdates,\n runSetup,\n printSetupUsage,\n SUPPORTED_CLIENTS,\n} from \"@bithumb-tradekit/core\";\nimport type { ToolRunner, ClientId } from \"@bithumb-tradekit/core\";\nimport { parseCli } from \"./parser.js\";\nimport type { CliValues } from \"./parser.js\";\nimport { outputLine, errorLine, printJson, printKv } from \"./formatter.js\";\nimport { printHelp } from \"./help.js\";\nimport { CLI_VERSION } from \"./constants.js\";\n\nfunction wrapRunnerWithLogger(\n baseRunner: ToolRunner,\n logger: TradeLogger,\n): ToolRunner {\n return async (toolName, args) => {\n const start = Date.now();\n try {\n const result = await baseRunner(toolName, args);\n logger.logTool(\"info\", toolName, args, { status: \"ok\" }, Date.now() - start);\n return result;\n } catch (error) {\n logger.logTool(\"error\", toolName, args, error, Date.now() - start);\n throw error;\n }\n };\n}\n\nfunction handleSetup(argv: string[]): void {\n const idx = argv.indexOf(\"setup\");\n const rest = argv.slice(idx + 1);\n\n let client: string | undefined;\n let profile: string | undefined;\n let modules: string | undefined;\n\n for (let i = 0; i < rest.length; i++) {\n if (rest[i] === \"--client\" && rest[i + 1]) {\n client = rest[++i];\n } else if (rest[i] === \"--profile\" && rest[i + 1]) {\n profile = rest[++i];\n } else if (rest[i] === \"--modules\" && rest[i + 1]) {\n modules = rest[++i];\n } else if (rest[i] === \"--help\" || rest[i] === \"-h\") {\n printSetupUsage();\n return;\n }\n }\n\n if (!client || !SUPPORTED_CLIENTS.includes(client as ClientId)) {\n errorLine(`Error: --client is required. Supported: ${SUPPORTED_CLIENTS.join(\", \")}`);\n process.exitCode = 1;\n return;\n }\n\n runSetup({ client: client as ClientId, profile, modules });\n}\n\nasync function main(): Promise<void> {\n checkForUpdates(\"@bithumb-tradekit/cli\", CLI_VERSION);\n\n // 1. Setup subcommand (before parseCli)\n if (process.argv[2] === \"setup\") {\n handleSetup(process.argv);\n return;\n }\n\n // 2. Parse arguments\n const { values: v, positionals } = parseCli(process.argv.slice(2));\n\n if (v.version) {\n outputLine(CLI_VERSION);\n return;\n }\n\n if (v.help || positionals.length === 0) {\n printHelp(positionals);\n return;\n }\n\n const [module, action, ...rest] = positionals;\n const json = v.json ?? false;\n\n // 3. Config command (no auth needed, no runner needed)\n if (module === \"config\") {\n const { handleConfigCommand } = await import(\"./commands/config.js\");\n return handleConfigCommand(action, rest, v);\n }\n\n // 4. Load config + create runner\n const config = loadConfig({\n modules: v.modules,\n readOnly: v.readOnly,\n verbose: v.verbose,\n profile: v.profile,\n });\n const client = new BithumbRestClient(config);\n const baseRunner = createToolRunner(client, config);\n const logger = new TradeLogger(v.verbose ? \"debug\" : \"info\");\n const run = wrapRunnerWithLogger(baseRunner, logger);\n\n // 5. Diagnose (needs config but no auth)\n if (module === \"diagnose\") {\n const result = await run(\"system_diagnose\", {});\n const data = result.data ?? result;\n if (json) return printJson(data);\n printKv(data as Record<string, unknown>);\n return;\n }\n\n // 5b. System capabilities (no auth needed)\n // Accept both `system capabilities` (canonical) and `account capabilities` (alias)\n if (\n (module === \"system\" && action === \"capabilities\") ||\n (module === \"account\" && action === \"capabilities\")\n ) {\n const result = await run(\"system_get_capabilities\", {});\n const data = result.data ?? result;\n if (json) return printJson(data);\n printKv(data as Record<string, unknown>);\n return;\n }\n\n // 6. Private API auth guard\n const privateModules = new Set([\"account\", \"trade\", \"twap\", \"withdraw\", \"deposit\"]);\n if (privateModules.has(module) && !config.hasAuth) {\n errorLine(\n \"Error: API credentials required. Run 'bithumb setup' or configure ~/.bithumb/config.toml\",\n );\n process.exitCode = 1;\n return;\n }\n\n // 7. Module routing\n if (module === \"market\") {\n const { handleMarketCommand } = await import(\"./commands/market.js\");\n return handleMarketCommand(run, action, rest, v, json);\n }\n if (module === \"account\") {\n const { handleAccountCommand } = await import(\"./commands/account.js\");\n return handleAccountCommand(run, action, v, json);\n }\n if (module === \"trade\") {\n const { handleTradeCommand } = await import(\"./commands/trade.js\");\n return handleTradeCommand(run, action, v, json);\n }\n if (module === \"twap\") {\n const { handleTwapCommand } = await import(\"./commands/twap.js\");\n return handleTwapCommand(run, action, v, json);\n }\n if (module === \"withdraw\") {\n const { handleWithdrawCommand } = await import(\"./commands/withdraw.js\");\n return handleWithdrawCommand(run, action, v, json);\n }\n if (module === \"deposit\") {\n const { handleDepositCommand } = await import(\"./commands/deposit.js\");\n return handleDepositCommand(run, action, v, json);\n }\n\n errorLine(`Unknown command: ${module}. Run 'bithumb --help' for usage.`);\n process.exitCode = 1;\n}\n\nmain().catch((err) => {\n errorLine(`Fatal: ${err instanceof Error ? err.message : String(err)}`);\n process.exitCode = 1;\n});\n"],"mappings":"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","names":[]}
|
|
@@ -59,7 +59,7 @@ async function handleMarketCommand(run, action, rest, v, json) {
|
|
|
59
59
|
case "fee-inout":
|
|
60
60
|
return cmdFeeInout(run, rest[0] ?? v.currency, json);
|
|
61
61
|
default:
|
|
62
|
-
errorLine(`Unknown market command: ${action}. Run 'bithumb
|
|
62
|
+
errorLine(`Unknown market command: ${action}. Run 'bithumb market --help' for usage.`);
|
|
63
63
|
process.exitCode = 1;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -82,7 +82,7 @@ async function cmdMarkets(run, opts) {
|
|
|
82
82
|
}
|
|
83
83
|
async function cmdTicker(run, markets, json) {
|
|
84
84
|
if (!markets) {
|
|
85
|
-
errorLine("Error: market argument required. Example: bithumb
|
|
85
|
+
errorLine("Error: market argument required. Example: bithumb market ticker KRW-BTC");
|
|
86
86
|
process.exitCode = 1;
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
@@ -104,7 +104,7 @@ async function cmdTicker(run, markets, json) {
|
|
|
104
104
|
}
|
|
105
105
|
async function cmdOrderbook(run, markets, json) {
|
|
106
106
|
if (!markets) {
|
|
107
|
-
errorLine("Error: market argument required. Example: bithumb
|
|
107
|
+
errorLine("Error: market argument required. Example: bithumb market orderbook KRW-BTC");
|
|
108
108
|
process.exitCode = 1;
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
@@ -133,7 +133,7 @@ async function cmdOrderbook(run, markets, json) {
|
|
|
133
133
|
}
|
|
134
134
|
async function cmdTrades(run, market, opts) {
|
|
135
135
|
if (!market) {
|
|
136
|
-
errorLine("Error: market argument required. Example: bithumb
|
|
136
|
+
errorLine("Error: market argument required. Example: bithumb market trades KRW-BTC");
|
|
137
137
|
process.exitCode = 1;
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
@@ -284,7 +284,7 @@ async function cmdNotices(run, opts) {
|
|
|
284
284
|
}
|
|
285
285
|
async function cmdFeeInout(run, currency, json) {
|
|
286
286
|
if (!currency) {
|
|
287
|
-
errorLine("Error: currency argument required. Example: bithumb
|
|
287
|
+
errorLine("Error: currency argument required. Example: bithumb market fee-inout BTC");
|
|
288
288
|
process.exitCode = 1;
|
|
289
289
|
return;
|
|
290
290
|
}
|
|
@@ -301,4 +301,4 @@ async function cmdFeeInout(run, currency, json) {
|
|
|
301
301
|
export {
|
|
302
302
|
handleMarketCommand
|
|
303
303
|
};
|
|
304
|
-
//# sourceMappingURL=market-
|
|
304
|
+
//# sourceMappingURL=market-V7L36QN3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/market.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleMarketCommand(\n run: ToolRunner,\n action: string,\n rest: string[],\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"markets\":\n return cmdMarkets(run, { isDetails: v.isDetails, json });\n case \"ticker\":\n return cmdTicker(run, rest[0] ?? v.market, json);\n case \"orderbook\":\n return cmdOrderbook(run, rest[0] ?? v.market, json);\n case \"trades\":\n return cmdTrades(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n cursor: v.cursor,\n daysAgo: toNumber(v.daysAgo),\n json,\n });\n case \"candles-minutes\":\n return cmdCandlesMinutes(run, rest[0] ?? v.market, {\n unit: toNumber(v.unit) ?? 1,\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"candles-days\":\n return cmdCandlesDays(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n convertingPriceUnit: v.convertingPriceUnit,\n json,\n });\n case \"candles-weeks\":\n return cmdCandlesWeeks(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"candles-months\":\n return cmdCandlesMonths(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"warnings\":\n return cmdWarnings(run, json);\n case \"notices\":\n return cmdNotices(run, { count: toNumber(v.count), json });\n case \"fee-inout\":\n return cmdFeeInout(run, rest[0] ?? v.currency, json);\n default:\n errorLine(`Unknown market command: ${action}. Run 'bithumb market --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdMarkets(\n run: ToolRunner,\n opts: { isDetails?: boolean; json: boolean },\n): Promise<void> {\n const result = await run(\"market_get_markets\", {\n ...(opts.isDetails !== undefined && { isDetails: opts.isDetails }),\n });\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No markets found\"); return; }\n printTable(items.map((m) => ({\n market: m[\"market\"],\n korean_name: m[\"korean_name\"],\n english_name: m[\"english_name\"],\n ...(opts.isDetails ? { market_warning: m[\"market_warning\"] ?? \"\" } : {}),\n })));\n}\n\nasync function cmdTicker(run: ToolRunner, markets: string | undefined, json: boolean): Promise<void> {\n if (!markets) { errorLine(\"Error: market argument required. Example: bithumb market ticker KRW-BTC\"); process.exitCode = 1; return; }\n const result = await run(\"market_get_ticker\", { markets });\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No ticker data\"); return; }\n printTable(items.map((t) => ({\n market: t[\"market\"],\n trade_price: t[\"trade_price\"],\n signed_change_rate: t[\"signed_change_rate\"],\n acc_trade_volume_24h: t[\"acc_trade_volume_24h\"],\n high_price: t[\"high_price\"],\n low_price: t[\"low_price\"],\n })));\n}\n\nasync function cmdOrderbook(run: ToolRunner, markets: string | undefined, json: boolean): Promise<void> {\n if (!markets) { errorLine(\"Error: market argument required. Example: bithumb market orderbook KRW-BTC\"); process.exitCode = 1; return; }\n const result = await run(\"market_get_orderbook\", { markets });\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No orderbook data\"); return; }\n for (const book of items) {\n outputLine(`\\n--- ${book[\"market\"]} ---`);\n outputLine(`Total Ask Size: ${book[\"total_ask_size\"]}`);\n outputLine(`Total Bid Size: ${book[\"total_bid_size\"]}`);\n const units = book[\"orderbook_units\"] as Record<string, unknown>[];\n if (units?.length) {\n printTable(units.slice(0, 10).map((u) => ({\n ask_price: u[\"ask_price\"],\n ask_size: u[\"ask_size\"],\n bid_price: u[\"bid_price\"],\n bid_size: u[\"bid_size\"],\n })));\n }\n }\n}\n\nasync function cmdTrades(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; cursor?: string; daysAgo?: number; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required. Example: bithumb market trades KRW-BTC\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n if (opts.cursor !== undefined) args.cursor = opts.cursor;\n if (opts.daysAgo !== undefined) args.daysAgo = opts.daysAgo;\n const result = await run(\"market_get_trades\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No trades found\"); return; }\n printTable(items.map((t) => ({\n trade_date_utc: t[\"trade_date_utc\"],\n trade_time_utc: t[\"trade_time_utc\"],\n trade_price: t[\"trade_price\"],\n trade_volume: t[\"trade_volume\"],\n ask_bid: t[\"ask_bid\"],\n })));\n}\n\nasync function cmdCandlesMinutes(\n run: ToolRunner,\n market: string | undefined,\n opts: { unit: number; count?: number; to?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market, unit: opts.unit };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n const result = await run(\"market_get_candles_minutes\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdCandlesDays(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; convertingPriceUnit?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n if (opts.convertingPriceUnit !== undefined) args.convertingPriceUnit = opts.convertingPriceUnit;\n const result = await run(\"market_get_candles_days\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdCandlesWeeks(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n const result = await run(\"market_get_candles_weeks\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdCandlesMonths(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n const result = await run(\"market_get_candles_months\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdWarnings(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"market_get_warnings\", {});\n const data = result.data;\n if (json) return printJson(data);\n const items = data as Record<string, unknown>[];\n if (!items?.length) { outputLine(\"No warnings found\"); return; }\n printTable(items);\n}\n\nasync function cmdNotices(run: ToolRunner, opts: { count?: number; json: boolean }): Promise<void> {\n const args: Record<string, unknown> = {};\n if (opts.count !== undefined) args.count = opts.count;\n const result = await run(\"market_get_notices\", args);\n const data = result.data;\n if (opts.json) return printJson(data);\n const items = data as Record<string, unknown>[];\n if (!items?.length) { outputLine(\"No notices found\"); return; }\n printTable(items);\n}\n\nasync function cmdFeeInout(run: ToolRunner, currency: string | undefined, json: boolean): Promise<void> {\n if (!currency) { errorLine(\"Error: currency argument required. Example: bithumb market fee-inout BTC\"); process.exitCode = 1; return; }\n const result = await run(\"market_get_fee_inout\", { currency });\n const data = result.data;\n if (json) return printJson(data);\n const items = data as Record<string, unknown>[];\n if (Array.isArray(items) && items.length) { printTable(items); return; }\n printJson(data);\n}\n"],"mappings":"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","names":[]}
|