@bithumb-official/bithumb-cli 0.1.16 → 0.1.17

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 (52) hide show
  1. package/dist/{chunk-AUQ7MB6O.js → chunk-3VWN4HON.js} +35 -8
  2. package/dist/chunk-3VWN4HON.js.map +1 -0
  3. package/dist/{chunk-YXIFBNEQ.js → chunk-HT2P7KTV.js} +67 -994
  4. package/dist/chunk-HT2P7KTV.js.map +1 -0
  5. package/dist/{deposit-HNUSMKX5.js → deposit-KAUQEY7H.js} +6 -6
  6. package/dist/deposit-KAUQEY7H.js.map +1 -0
  7. package/dist/{deposit-TCMLJ7MI.js → deposit-L3BBLG4X.js} +21 -13
  8. package/dist/deposit-L3BBLG4X.js.map +1 -0
  9. package/dist/index.d.ts +2 -1
  10. package/dist/index.js +99 -60
  11. package/dist/index.js.map +1 -1
  12. package/dist/{market-GLU62BWO.js → market-4IEKEJ4N.js} +8 -7
  13. package/dist/market-4IEKEJ4N.js.map +1 -0
  14. package/dist/{market-EEF3KI4T.js → market-C5ESTU3F.js} +6 -6
  15. package/dist/market-C5ESTU3F.js.map +1 -0
  16. package/dist/{setup-LAAVO63H.js → setup-NC3QC63P.js} +2 -3
  17. package/dist/setup-NC3QC63P.js.map +1 -0
  18. package/dist/{system-XRZ2KHXL.js → system-RVBNM3IX.js} +2 -2
  19. package/dist/{system-BRZY7PTZ.js → system-XK2EF5SQ.js} +3 -7
  20. package/dist/system-XK2EF5SQ.js.map +1 -0
  21. package/dist/{trade-H4G5P2W2.js → trade-RKL7RNME.js} +18 -8
  22. package/dist/trade-RKL7RNME.js.map +1 -0
  23. package/dist/{trade-FERR47DJ.js → trade-X5VBEQJE.js} +21 -10
  24. package/dist/trade-X5VBEQJE.js.map +1 -0
  25. package/dist/{twap-44UCVSIR.js → twap-FQJVPUWH.js} +12 -4
  26. package/dist/twap-FQJVPUWH.js.map +1 -0
  27. package/dist/{twap-4LRBUMTG.js → twap-MZ7ALPBC.js} +3 -3
  28. package/dist/twap-MZ7ALPBC.js.map +1 -0
  29. package/dist/{withdraw-TLGVRUBS.js → withdraw-65X3DXR5.js} +17 -9
  30. package/dist/withdraw-65X3DXR5.js.map +1 -0
  31. package/dist/{withdraw-IRMICBD2.js → withdraw-LDERU7T7.js} +6 -6
  32. package/dist/withdraw-LDERU7T7.js.map +1 -0
  33. package/package.json +1 -1
  34. package/dist/chunk-AUQ7MB6O.js.map +0 -1
  35. package/dist/chunk-YXIFBNEQ.js.map +0 -1
  36. package/dist/config-2P3Y3TQH.js +0 -182
  37. package/dist/config-2P3Y3TQH.js.map +0 -1
  38. package/dist/config-6BIS2PLC.js +0 -154
  39. package/dist/config-6BIS2PLC.js.map +0 -1
  40. package/dist/deposit-HNUSMKX5.js.map +0 -1
  41. package/dist/deposit-TCMLJ7MI.js.map +0 -1
  42. package/dist/market-EEF3KI4T.js.map +0 -1
  43. package/dist/market-GLU62BWO.js.map +0 -1
  44. package/dist/setup-LAAVO63H.js.map +0 -1
  45. package/dist/system-BRZY7PTZ.js.map +0 -1
  46. package/dist/trade-FERR47DJ.js.map +0 -1
  47. package/dist/trade-H4G5P2W2.js.map +0 -1
  48. package/dist/twap-44UCVSIR.js.map +0 -1
  49. package/dist/twap-4LRBUMTG.js.map +0 -1
  50. package/dist/withdraw-IRMICBD2.js.map +0 -1
  51. package/dist/withdraw-TLGVRUBS.js.map +0 -1
  52. /package/dist/{system-XRZ2KHXL.js.map → system-RVBNM3IX.js.map} +0 -0
@@ -1,182 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- configFilePath,
4
- readFullConfig,
5
- writeFullConfig
6
- } from "./chunk-YXIFBNEQ.js";
7
- import {
8
- errorLine,
9
- outputLine,
10
- printJson,
11
- printKv,
12
- printTable
13
- } from "./chunk-FYO6WLZI.js";
14
-
15
- // src/commands/config.ts
16
- import { existsSync, mkdirSync } from "fs";
17
- import { dirname } from "path";
18
- import { createInterface } from "readline";
19
- function handleConfigCommand(action, rest, v) {
20
- const json = v.json ?? false;
21
- switch (action) {
22
- case "show":
23
- return cmdConfigShow(json);
24
- case "init":
25
- return cmdConfigInit();
26
- case "set":
27
- return cmdConfigSet(rest[0], rest[1], v.profile);
28
- case "add-profile":
29
- return cmdConfigAddProfile(rest, v);
30
- case "list-profiles":
31
- return cmdConfigListProfiles(json);
32
- case "use":
33
- return cmdConfigUse(rest[0]);
34
- case "path":
35
- outputLine(configFilePath());
36
- return;
37
- default:
38
- if (!action) {
39
- return cmdConfigShow(json);
40
- }
41
- errorLine(`Unknown config command: ${action}. Available: show, init, set, add-profile, list-profiles, use, path`);
42
- process.exitCode = 1;
43
- }
44
- }
45
- function cmdConfigShow(json) {
46
- const config = readFullConfig();
47
- if (json) return printJson(config);
48
- outputLine(`Config file: ${configFilePath()}`);
49
- if (config.default_profile) {
50
- outputLine(`Default profile: ${config.default_profile}`);
51
- }
52
- outputLine("");
53
- const profileNames = Object.keys(config.profiles);
54
- if (profileNames.length === 0) {
55
- outputLine("No profiles configured. Run 'bithumb config init' to create one.");
56
- return;
57
- }
58
- for (const name of profileNames) {
59
- const p = config.profiles[name];
60
- outputLine(`[${name}]`);
61
- printKv({
62
- access_key: p.access_key ? `${p.access_key.slice(0, 8)}...` : "(not set)",
63
- secret_key: p.secret_key ? "***" : "(not set)",
64
- ...p.base_url ? { base_url: p.base_url } : {},
65
- ...p.timeout_ms ? { timeout_ms: p.timeout_ms } : {}
66
- });
67
- outputLine("");
68
- }
69
- }
70
- function ask(rl, prompt) {
71
- return new Promise((resolve) => rl.question(prompt, (ans) => resolve(ans.trim())));
72
- }
73
- async function cmdConfigInit() {
74
- const path = configFilePath();
75
- if (existsSync(path)) {
76
- outputLine(`Config file already exists: ${path}`);
77
- outputLine("Use 'bithumb config add-profile' to add a new profile.");
78
- return;
79
- }
80
- const rl = createInterface({ input: process.stdin, output: process.stdout });
81
- try {
82
- const profileInput = await ask(rl, "Profile name (default): ");
83
- const profileName = profileInput || "default";
84
- const accessKey = await ask(rl, "Access key: ");
85
- const secretKey = await ask(rl, "Secret key: ");
86
- rl.close();
87
- const dir = dirname(path);
88
- if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
89
- const config = {
90
- default_profile: profileName,
91
- profiles: {
92
- [profileName]: { access_key: accessKey, secret_key: secretKey }
93
- }
94
- };
95
- writeFullConfig(config);
96
- outputLine(`
97
- \u2713 Config file created: ${path}`);
98
- } catch (e) {
99
- rl.close();
100
- throw e;
101
- }
102
- }
103
- function cmdConfigSet(key, value, profileName) {
104
- if (!key || value === void 0) {
105
- errorLine("Usage: bithumb config set <key> <value> [--profile <name>]");
106
- errorLine("Keys: access_key, secret_key, base_url, timeout_ms");
107
- process.exitCode = 1;
108
- return;
109
- }
110
- const validKeys = /* @__PURE__ */ new Set(["access_key", "secret_key", "base_url", "timeout_ms"]);
111
- if (!validKeys.has(key)) {
112
- errorLine(`Invalid key: ${key}. Valid keys: ${[...validKeys].join(", ")}`);
113
- process.exitCode = 1;
114
- return;
115
- }
116
- const config = readFullConfig();
117
- const name = profileName ?? config.default_profile ?? "default";
118
- if (!config.profiles[name]) {
119
- config.profiles[name] = {};
120
- }
121
- if (key === "timeout_ms") {
122
- config.profiles[name][key] = Number(value);
123
- } else {
124
- config.profiles[name][key] = value;
125
- }
126
- writeFullConfig(config);
127
- outputLine(`Set ${name}.${key}`);
128
- }
129
- function cmdConfigAddProfile(rest, _v) {
130
- const name = rest[0];
131
- if (!name) {
132
- errorLine("Usage: bithumb config add-profile <name>");
133
- process.exitCode = 1;
134
- return;
135
- }
136
- const config = readFullConfig();
137
- if (config.profiles[name]) {
138
- errorLine(`Profile '${name}' already exists.`);
139
- process.exitCode = 1;
140
- return;
141
- }
142
- config.profiles[name] = {
143
- access_key: "",
144
- secret_key: ""
145
- };
146
- writeFullConfig(config);
147
- outputLine(`Profile '${name}' added. Edit ${configFilePath()} to set credentials.`);
148
- }
149
- function cmdConfigListProfiles(json) {
150
- const config = readFullConfig();
151
- const profiles = Object.entries(config.profiles).map(([name, p]) => ({
152
- name,
153
- default: name === (config.default_profile ?? "default") ? "*" : "",
154
- has_credentials: p.access_key && p.secret_key ? "yes" : "no"
155
- }));
156
- if (json) return printJson(profiles);
157
- if (profiles.length === 0) {
158
- outputLine("No profiles configured.");
159
- return;
160
- }
161
- printTable(profiles);
162
- }
163
- function cmdConfigUse(profileName) {
164
- if (!profileName) {
165
- errorLine("Usage: bithumb config use <profile-name>");
166
- process.exitCode = 1;
167
- return;
168
- }
169
- const config = readFullConfig();
170
- if (!config.profiles[profileName]) {
171
- errorLine(`Profile '${profileName}' not found. Run 'bithumb config list-profiles' to see available profiles.`);
172
- process.exitCode = 1;
173
- return;
174
- }
175
- config.default_profile = profileName;
176
- writeFullConfig(config);
177
- outputLine(`Default profile set to '${profileName}'`);
178
- }
179
- export {
180
- handleConfigCommand
181
- };
182
- //# sourceMappingURL=config-2P3Y3TQH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/config.ts"],"sourcesContent":["import {\n configFilePath,\n readFullConfig,\n writeFullConfig,\n} from \"@bithumb-official/bithumb-core\";\nimport type { BithumbTomlConfig } from \"@bithumb-official/bithumb-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\";\nimport { createInterface } from \"node:readline\";\n\nexport function handleConfigCommand(\n action: string,\n rest: string[],\n v: CliValues,\n): void | Promise<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 ask(rl: ReturnType<typeof createInterface>, prompt: string): Promise<string> {\n return new Promise((resolve) => rl.question(prompt, (ans) => resolve(ans.trim())));\n}\n\nasync function cmdConfigInit(): Promise<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\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n try {\n const profileInput = await ask(rl, \"Profile name (default): \");\n const profileName = profileInput || \"default\";\n const accessKey = await ask(rl, \"Access key: \");\n const secretKey = await ask(rl, \"Secret key: \");\n rl.close();\n\n const dir = dirname(path);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\n const config: BithumbTomlConfig = {\n default_profile: profileName,\n profiles: {\n [profileName]: { access_key: accessKey, secret_key: secretKey },\n },\n };\n writeFullConfig(config);\n outputLine(`\\n✓ Config file created: ${path}`);\n } catch (e) {\n rl.close();\n throw e;\n }\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,154 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- // src/help/config.ts
4
- var MODULE_HELP = `
5
- Usage: bithumb config <command> [options]
6
-
7
- Commands:
8
- show Show current configuration
9
- init Create config file
10
- set Set a config value
11
- add-profile Add a new profile
12
- list-profiles List all profiles
13
- use Set default profile
14
- path Show config file path
15
-
16
- Options:
17
- --profile <name> Target profile (default: current default)
18
-
19
- Examples:
20
- bithumb config init
21
- bithumb config set access_key your_key --profile trading
22
- bithumb config use trading
23
- bithumb config list-profiles
24
- `;
25
- var SHOW_HELP = `
26
- Usage: bithumb config show [options]
27
-
28
- Show the current configuration (active profile and resolved values).
29
-
30
- Required:
31
- (none)
32
-
33
- Options:
34
- --profile <name> Show configuration for a specific profile
35
-
36
- Examples:
37
- bithumb config show
38
- bithumb config show --profile trading
39
- `;
40
- var INIT_HELP = `
41
- Usage: bithumb config init
42
-
43
- Create a new config file interactively.
44
-
45
- You will be prompted for:
46
- - Profile name (default: "default")
47
- - Access key
48
- - Secret key
49
-
50
- The config file is written to the standard config path. If a config file
51
- already exists, init exits without overwriting; use 'config add-profile'
52
- instead to add additional profiles.
53
-
54
- Required:
55
- (none \u2014 prompts run interactively on stdin)
56
-
57
- Options:
58
- (none)
59
-
60
- Examples:
61
- bithumb config init
62
- `;
63
- var SET_HELP = `
64
- Usage: bithumb config set <key> <value> [options]
65
-
66
- Set a configuration value for a profile.
67
-
68
- Required arguments (in order):
69
- <key> Config key (allowed: access_key, secret_key, base_url, timeout_ms)
70
- <value> Value to assign
71
-
72
- Options:
73
- --profile <name> Target profile (default: current default profile)
74
-
75
- Examples:
76
- bithumb config set access_key your_key
77
- bithumb config set secret_key your_secret --profile trading
78
- bithumb config set base_url https://api.bithumb.com
79
- bithumb config set timeout_ms 5000
80
- `;
81
- var ADD_PROFILE_HELP = `
82
- Usage: bithumb config add-profile <name>
83
-
84
- Add a new (empty) profile to the config file. Use 'config set' afterwards
85
- to populate access_key / secret_key for the new profile.
86
-
87
- Required arguments:
88
- <name> Profile name to create
89
-
90
- Options:
91
- (none)
92
-
93
- Examples:
94
- bithumb config add-profile trading
95
- bithumb config add-profile staging
96
- `;
97
- var LIST_PROFILES_HELP = `
98
- Usage: bithumb config list-profiles
99
-
100
- List all configured profiles.
101
-
102
- Required:
103
- (none)
104
-
105
- Options:
106
- (none)
107
-
108
- Examples:
109
- bithumb config list-profiles
110
- bithumb config list-profiles --json
111
- `;
112
- var USE_HELP = `
113
- Usage: bithumb config use <name>
114
-
115
- Set the default profile used when --profile is not specified.
116
-
117
- Required arguments:
118
- <name> Profile name to mark as default
119
-
120
- Options:
121
- (none)
122
-
123
- Examples:
124
- bithumb config use trading
125
- bithumb config use default
126
- `;
127
- var PATH_HELP = `
128
- Usage: bithumb config path
129
-
130
- Show the absolute path of the config file used by the CLI.
131
-
132
- Required:
133
- (none)
134
-
135
- Options:
136
- (none)
137
-
138
- Examples:
139
- bithumb config path
140
- `;
141
- var ACTION_HELP = {
142
- show: SHOW_HELP,
143
- init: INIT_HELP,
144
- set: SET_HELP,
145
- "add-profile": ADD_PROFILE_HELP,
146
- "list-profiles": LIST_PROFILES_HELP,
147
- use: USE_HELP,
148
- path: PATH_HELP
149
- };
150
- export {
151
- ACTION_HELP,
152
- MODULE_HELP
153
- };
154
- //# sourceMappingURL=config-6BIS2PLC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/help/config.ts"],"sourcesContent":["export const MODULE_HELP = `\nUsage: bithumb config <command> [options]\n\nCommands:\n show Show current configuration\n init Create config file\n set Set a config value\n add-profile Add a new profile\n list-profiles List all profiles\n use 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\nconst SHOW_HELP = `\nUsage: bithumb config show [options]\n\nShow the current configuration (active profile and resolved values).\n\nRequired:\n (none)\n\nOptions:\n --profile <name> Show configuration for a specific profile\n\nExamples:\n bithumb config show\n bithumb config show --profile trading\n`;\n\nconst INIT_HELP = `\nUsage: bithumb config init\n\nCreate a new config file interactively.\n\nYou will be prompted for:\n - Profile name (default: \"default\")\n - Access key\n - Secret key\n\nThe config file is written to the standard config path. If a config file\nalready exists, init exits without overwriting; use 'config add-profile'\ninstead to add additional profiles.\n\nRequired:\n (none — prompts run interactively on stdin)\n\nOptions:\n (none)\n\nExamples:\n bithumb config init\n`;\n\nconst SET_HELP = `\nUsage: bithumb config set <key> <value> [options]\n\nSet a configuration value for a profile.\n\nRequired arguments (in order):\n <key> Config key (allowed: access_key, secret_key, base_url, timeout_ms)\n <value> Value to assign\n\nOptions:\n --profile <name> Target profile (default: current default profile)\n\nExamples:\n bithumb config set access_key your_key\n bithumb config set secret_key your_secret --profile trading\n bithumb config set base_url https://api.bithumb.com\n bithumb config set timeout_ms 5000\n`;\n\nconst ADD_PROFILE_HELP = `\nUsage: bithumb config add-profile <name>\n\nAdd a new (empty) profile to the config file. Use 'config set' afterwards\nto populate access_key / secret_key for the new profile.\n\nRequired arguments:\n <name> Profile name to create\n\nOptions:\n (none)\n\nExamples:\n bithumb config add-profile trading\n bithumb config add-profile staging\n`;\n\nconst LIST_PROFILES_HELP = `\nUsage: bithumb config list-profiles\n\nList all configured profiles.\n\nRequired:\n (none)\n\nOptions:\n (none)\n\nExamples:\n bithumb config list-profiles\n bithumb config list-profiles --json\n`;\n\nconst USE_HELP = `\nUsage: bithumb config use <name>\n\nSet the default profile used when --profile is not specified.\n\nRequired arguments:\n <name> Profile name to mark as default\n\nOptions:\n (none)\n\nExamples:\n bithumb config use trading\n bithumb config use default\n`;\n\nconst PATH_HELP = `\nUsage: bithumb config path\n\nShow the absolute path of the config file used by the CLI.\n\nRequired:\n (none)\n\nOptions:\n (none)\n\nExamples:\n bithumb config path\n`;\n\nexport const ACTION_HELP: Record<string, string> = {\n show: SHOW_HELP,\n init: INIT_HELP,\n set: SET_HELP,\n \"add-profile\": ADD_PROFILE_HELP,\n \"list-profiles\": LIST_PROFILES_HELP,\n use: USE_HELP,\n path: PATH_HELP,\n};\n"],"mappings":";;;AAAO,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsB3B,IAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBlB,IAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBlB,IAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBjB,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBzB,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgB3B,IAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBjB,IAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeX,IAAM,cAAsC;AAAA,EACjD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,MAAM;AACR;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/help/deposit.ts"],"sourcesContent":["export const MODULE_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\nRun bithumb deposit <command> --help for command-specific options.\n\nExamples:\n bithumb deposit list --currency BTC\n bithumb deposit address --currency BTC --net-type BTC\n bithumb deposit addresses\n`;\n\nconst GET_HELP = `\nUsage: bithumb deposit get [options]\n\nGet details of a single deposit by UUID for a specific currency.\n\nRequired:\n --currency <code> Currency code (e.g., BTC)\n --uuid <uuid> Deposit UUID\n\nOptions:\n (none — for txid lookup, use 'bithumb deposit list --txids <txid>')\n\nExamples:\n bithumb deposit get --currency BTC --uuid abc-123\n`;\n\nconst LIST_HELP = `\nUsage: bithumb deposit list [options]\n\nList coin deposits, optionally filtered by currency, state, or identifiers.\n\nRequired:\n (none — all filters are optional)\n\nOptions:\n --currency <code> Currency code (e.g., BTC)\n --state <state> State filter (e.g., done / processing)\n --uuids <uuids> Filter by UUIDs (comma-separated)\n --txids <txids> Filter by transaction IDs (comma-separated)\n --limit <n> Results per page (max 100) (default: 100)\n --page <n> Page number (default: 1)\n --order-by <order> Sort order: asc / desc (default: desc)\n\nExamples:\n bithumb deposit list --currency BTC\n bithumb deposit list --state done --limit 50 --order-by desc\n`;\n\nconst LIST_KRW_HELP = `\nUsage: bithumb deposit list-krw [options]\n\nList KRW deposits, optionally filtered by state or identifiers.\n\nRequired:\n (none — all filters are optional)\n\nOptions:\n --state <state> State filter (e.g., done / processing)\n --uuids <uuids> Filter by UUIDs (comma-separated)\n --txids <txids> Filter by transaction IDs (comma-separated)\n --limit <n> Results per page (max 100) (default: 100)\n --page <n> Page number (default: 1)\n --order-by <order> Sort order: asc / desc (default: desc)\n\nExamples:\n bithumb deposit list-krw\n bithumb deposit list-krw --state done --limit 50\n`;\n\nconst KRW_HELP = `\nUsage: bithumb deposit krw [options]\n\nRequest a KRW deposit. Triggers a real KRW deposit procedure tied to your\nregistered bank/identity — invoke carefully.\n\nRequired:\n --amount <amount> Deposit amount (KRW)\n --two-factor-type <type> 2FA type (e.g., kakao)\n\nOptions:\n (none)\n\nExamples:\n bithumb deposit krw --amount 1000000 --two-factor-type kakao\n\nCaution:\n - This command initiates the official KRW deposit procedure with Bithumb;\n it is not a sandbox call. Confirm the amount and the registered bank\n account on the Bithumb site BEFORE invoking.\n - 2FA (--two-factor-type) is mandatory; the request fails without it.\n - Once submitted, the deposit follows Bithumb's settlement rules and cannot\n be retracted via CLI — handle support requests through official channels.\n`;\n\nconst GENERATE_ADDRESS_HELP = `\nUsage: bithumb deposit generate-address [options]\n\nUse this only when no deposit address yet exists for the (currency, net-type) pair.\n\nRequired:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n\nOptions:\n (none)\n\nExamples:\n bithumb deposit generate-address --currency BTC --net-type BTC\n`;\n\nconst ADDRESSES_HELP = `\nUsage: bithumb deposit addresses [options]\n\nReturn every registered deposit address across all currencies/networks on the account, in one call.\n\nRequired:\n (none)\n\nOptions:\n (none)\n\nExamples:\n bithumb deposit addresses\n`;\n\nconst ADDRESS_HELP = `\nUsage: bithumb deposit address [options]\n\nLook up a single existing deposit address for the given (currency, net-type). Errors if no address has been generated yet;\nuse 'bithumb deposit generate-address' first.\n\nRequired:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n\nOptions:\n (none)\n\nExamples:\n bithumb deposit address --currency BTC --net-type BTC\n`;\n\nexport const ACTION_HELP: Record<string, string> = {\n get: GET_HELP,\n list: LIST_HELP,\n \"list-krw\": LIST_KRW_HELP,\n krw: KRW_HELP,\n \"generate-address\": GENERATE_ADDRESS_HELP,\n addresses: ADDRESSES_HELP,\n address: ADDRESS_HELP,\n};\n"],"mappings":";;;AAAO,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoB3B,IAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBjB,IAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBlB,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBtB,IAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBjB,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgB9B,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAevB,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBd,IAAM,cAAsC;AAAA,EACjD,KAAK;AAAA,EACL,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX,SAAS;AACX;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/deposit.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-official/bithumb-core\";\nimport { BithumbApiError } from \"@bithumb-official/bithumb-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":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/help/market.ts"],"sourcesContent":["export const MODULE_HELP = `\nUsage: bithumb market <command> [options]\n\nCommands:\n markets List all available markets\n ticker Get ticker for market(s) (comma-separated)\n orderbook Get orderbook for market(s) (comma-separated)\n trades Get recent trades\n candles-minutes Get minute candles\n candles-days Get daily candles\n candles-weeks Get weekly candles\n candles-months Get monthly candles\n warnings Get virtual asset warning markets\n notices Get notice list\n fee-inout Get deposit/withdrawal fees\n\nRun bithumb market <command> --help for command-specific options.\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 MARKETS_HELP = `\nUsage: bithumb market markets [options]\n\nList all available markets on Bithumb.\n\nRequired:\n (none)\n\nOptions:\n --is-details Include detailed market info (default: false)\n\nExamples:\n bithumb market markets\n bithumb market markets --is-details --json\n`;\n\nconst TICKER_HELP = `\nUsage: bithumb market ticker <market> [options]\n\nGet ticker (current price snapshot) for one or more markets.\n\nRequired:\n <market> Market identifier(s), comma-separated (e.g., KRW-BTC or KRW-BTC,KRW-ETH)\n\nOptions:\n (none)\n\nExamples:\n bithumb market ticker KRW-BTC\n bithumb market ticker KRW-BTC,KRW-ETH --json\n`;\n\nconst ORDERBOOK_HELP = `\nUsage: bithumb market orderbook <market> [options]\n\nGet orderbook (bid/ask depth) for one or more markets.\n\nRequired:\n <market> Market identifier(s), comma-separated (e.g., KRW-BTC or KRW-BTC,KRW-ETH)\n\nOptions:\n (none)\n\nExamples:\n bithumb market orderbook KRW-BTC\n bithumb market orderbook KRW-BTC,KRW-ETH --json\n`;\n\nconst TRADES_HELP = `\nUsage: bithumb market trades <market> [options]\n\nGet recent trades (tick history) for a market.\n\nRequired:\n <market> Market identifier (e.g., KRW-BTC)\n\nOptions:\n --count <n> Number of results to return (default: 1)\n --to <datetime> Fetch trades before this time (KST), exclusive (e.g. 2026-01-01T00:00:00)\n --cursor <cursor> Pagination cursor\n --days-ago <n> Filter trades by days ago\n\nExamples:\n bithumb market trades KRW-BTC --count 50\n bithumb market trades KRW-BTC --days-ago 1\n`;\n\nconst CANDLES_MINUTES_HELP = `\nUsage: bithumb market candles-minutes <market> [options]\n\nGet minute-level candles for a market.\n\nRequired:\n <market> Market identifier (e.g., KRW-BTC)\n\nOptions:\n --unit <n> Minute unit (allowed values: 1, 3, 5, 10, 15, 30, 60, 240) (default: 1)\n --count <n> Number of candles to return (default: 1)\n --to <datetime> Fetch candles before this time (KST), exclusive (e.g. 2026-01-01T00:00:00)\n\nExamples:\n bithumb market candles-minutes KRW-BTC --unit 5 --count 10\n bithumb market candles-minutes KRW-BTC --unit 60 --count 24\n`;\n\nconst CANDLES_DAYS_HELP = `\nUsage: bithumb market candles-days <market> [options]\n\nGet daily candles for a market.\n\nRequired:\n <market> Market identifier (e.g., KRW-BTC)\n\nOptions:\n --count <n> Number of candles to return (default: 1)\n --to <datetime> Fetch candles before this time (KST), exclusive (e.g. 2026-01-01T00:00:00)\n --converting-price-unit <unit> Converting price unit (e.g., KRW)\n\nExamples:\n bithumb market candles-days KRW-BTC --count 30\n bithumb market candles-days KRW-BTC --converting-price-unit KRW\n`;\n\nconst CANDLES_WEEKS_HELP = `\nUsage: bithumb market candles-weeks <market> [options]\n\nGet weekly candles for a market.\n\nRequired:\n <market> Market identifier (e.g., KRW-BTC)\n\nOptions:\n --count <n> Number of candles to return (default: 1)\n --to <datetime> Fetch candles before this time (KST), exclusive (e.g. 2026-01-01T00:00:00)\n\nExamples:\n bithumb market candles-weeks KRW-BTC --count 12\n bithumb market candles-weeks KRW-BTC --to 2026-01-01T00:00:00\n`;\n\nconst CANDLES_MONTHS_HELP = `\nUsage: bithumb market candles-months <market> [options]\n\nGet monthly candles for a market.\n\nRequired:\n <market> Market identifier (e.g., KRW-BTC)\n\nOptions:\n --count <n> Number of candles to return (default: 1)\n --to <datetime> Fetch candles before this time (KST), exclusive (e.g. 2026-01-01T00:00:00)\n\nExamples:\n bithumb market candles-months KRW-BTC --count 12\n bithumb market candles-months KRW-BTC --to 2026-01-01T00:00:00\n`;\n\nconst WARNINGS_HELP = `\nUsage: bithumb market warnings [options]\n\nGet the list of virtual asset warning markets (caution-flagged).\n\nRequired:\n (none)\n\nOptions:\n (none)\n\nExamples:\n bithumb market warnings\n bithumb market warnings --json\n`;\n\nconst NOTICES_HELP = `\nUsage: bithumb market notices [options]\n\nGet the list of exchange notices.\n\nRequired:\n (none)\n\nOptions:\n --count <n> Number of notices to return (default: 5)\n\nExamples:\n bithumb market notices\n bithumb market notices --count 20\n`;\n\nconst FEE_INOUT_HELP = `\nUsage: bithumb market fee-inout <currency> [options]\n\nGet deposit/withdrawal fee information for a currency.\n\nRequired:\n <currency> Currency code (e.g., BTC, ETH)\n\nOptions:\n (none)\n\nExamples:\n bithumb market fee-inout BTC\n bithumb market fee-inout ETH --json\n`;\n\nexport const ACTION_HELP: Record<string, string> = {\n markets: MARKETS_HELP,\n ticker: TICKER_HELP,\n orderbook: ORDERBOOK_HELP,\n trades: TRADES_HELP,\n \"candles-minutes\": CANDLES_MINUTES_HELP,\n \"candles-days\": CANDLES_DAYS_HELP,\n \"candles-weeks\": CANDLES_WEEKS_HELP,\n \"candles-months\": CANDLES_MONTHS_HELP,\n warnings: WARNINGS_HELP,\n notices: NOTICES_HELP,\n \"fee-inout\": FEE_INOUT_HELP,\n};\n"],"mappings":";;;AAAO,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyB3B,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBrB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBpB,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBvB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBpB,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB7B,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB1B,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB3B,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB5B,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBtB,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBrB,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBhB,IAAM,cAAsC;AAAA,EACjD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,aAAa;AACf;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/market.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-official/bithumb-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":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/help/setup.ts"],"sourcesContent":["export const MODULE_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"],"mappings":";;;AAAO,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/help/system.ts"],"sourcesContent":["export const MODULE_HELP = `\nUsage: bithumb system <command> [options]\n\nCommands:\n capabilities Server capabilities and module availability for agent planning\n diagnose Run connectivity, authentication, config, and module diagnostics\n audit View local trade audit log\n\nOptions:\n --json Output as JSON\n --profile <name> Config profile to use (default: \"default\")\n --verbose Enable verbose logging\n\nExamples:\n bithumb system capabilities\n bithumb system capabilities --json\n bithumb system diagnose\n bithumb system diagnose --profile trading\n bithumb system audit --limit 10\n\nNotes:\n - Use 'capabilities' to discover which modules are enabled and which require auth.\n - Use 'diagnose' to verify API reachability, auth status, TOML config, and module status.\n - Use 'audit' to view local CLI/MCP trade audit log entries (reads ~/.bithumb/logs/).\n - All three commands run without API credentials (auth is reported but not required).\n`;\n\nconst CAPABILITIES_HELP = `\nUsage: bithumb system capabilities [options]\n\nShow server capabilities and module availability for agent planning.\nReports which modules are enabled, which require authentication, and which\nare read-only in the current configuration.\n\nRequired:\n (none)\n\nOptions:\n --json Output as JSON\n\nExamples:\n bithumb system capabilities\n bithumb system capabilities --json\n`;\n\nconst DIAGNOSE_HELP = `\nUsage: bithumb system diagnose [options]\n\nRun connectivity, authentication, config, and module diagnostics against the\nBithumb API. Useful as a first step when authenticated commands fail or when\nverifying a fresh \\`bithumb setup\\`.\n\nOptions:\n --json Output as JSON\n --profile <name> Config profile to use (default: \"default\")\n --verbose Enable verbose logging\n\nExamples:\n bithumb system diagnose\n bithumb system diagnose --json\n bithumb system diagnose --profile trading\n\nNotes:\n - Does not require API credentials to run, but reports auth status.\n - Output includes API reachability, auth validity, config OK, module status.\n`;\n\nconst AUDIT_HELP = `\nUsage: bithumb system audit [options]\n\nView the local trade audit log (records of CLI/MCP-issued tool calls).\nReads from \\`~/.bithumb/logs/trade-YYYY-MM-DD.log\\` over the last 7 days.\nDoes not require API credentials — purely local file access.\n\nRequired:\n (none)\n\nOptions:\n --limit <n> Number of log entries to return (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 system audit --limit 10\n bithumb system audit --since 2026-05-01 --level ERROR\n bithumb system audit --tool account_get_balance --json\n`;\n\nexport const ACTION_HELP: Record<string, string> = {\n capabilities: CAPABILITIES_HELP,\n diagnose: DIAGNOSE_HELP,\n audit: AUDIT_HELP,\n};\n"],"mappings":";;;AAAO,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2B3B,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB1B,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBtB,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBZ,IAAM,cAAsC;AAAA,EACjD,cAAc;AAAA,EACd,UAAU;AAAA,EACV,OAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/trade.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport type { ToolRunner } from \"@bithumb-official/bithumb-core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toArray, toNumber } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleTradeCommand(\n run: ToolRunner,\n action: string,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"orders\":\n return cmdOrders(run, {\n market: v.market,\n state: v.state,\n states: toArray(v.states),\n uuids: toArray(v.uuids),\n clientOrderIds: toArray(v.clientOrderIds),\n orderBy: v.orderBy,\n page: toNumber(v.page),\n limit: toNumber(v.limit),\n json,\n });\n case \"get\":\n return cmdGet(run, { uuid: v.uuid, clientOrderId: v.clientOrderId, json });\n case \"place\":\n if (v.ordTypeConflict) {\n errorLine(\n \"Error: Both --order-type and --ord-type were provided. Use only --order-type (--ord-type is a deprecated alias).\",\n );\n process.exitCode = 1;\n return;\n }\n if (v.ordTypeFromDeprecatedAlias) {\n errorLine(\"[deprecated] --ord-type is deprecated; use --order-type (same values).\");\n }\n return cmdPlace(run, {\n market: v.market,\n side: v.side,\n ordType: v.ordType,\n price: v.price,\n volume: v.volume,\n clientOrderId: v.clientOrderId,\n json,\n });\n case \"cancel\":\n return cmdCancel(run, { orderId: v.orderId, clientOrderId: v.clientOrderId, json });\n case \"batch-place\":\n return cmdBatchPlace(run, v, json);\n case \"batch-cancel\":\n return cmdBatchCancel(run, v, json);\n default:\n errorLine(`Unknown trade command: ${action}. Run 'bithumb trade --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdOrders(\n run: ToolRunner,\n opts: {\n market?: string;\n state?: string;\n states?: string[];\n uuids?: string[];\n clientOrderIds?: string[];\n orderBy?: string;\n page?: number;\n limit?: number;\n json: boolean;\n },\n): Promise<void> {\n const args: Record<string, unknown> = {};\n if (opts.market) args.market = opts.market;\n if (opts.state) args.state = opts.state;\n if (opts.states) args.states = opts.states;\n if (opts.uuids) args.uuids = opts.uuids;\n if (opts.clientOrderIds) args.client_order_ids = opts.clientOrderIds;\n if (opts.orderBy) args.order_by = opts.orderBy;\n if (opts.page !== undefined) args.page = opts.page;\n if (opts.limit !== undefined) args.limit = opts.limit;\n const result = await run(\"trade_get_orders\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No orders found\"); return; }\n printTable(items.map((o) => ({\n uuid: o[\"uuid\"],\n market: o[\"market\"],\n side: o[\"side\"],\n ord_type: o[\"ord_type\"],\n price: o[\"price\"],\n volume: o[\"volume\"],\n state: o[\"state\"],\n created_at: o[\"created_at\"],\n })));\n}\n\nasync function cmdGet(\n run: ToolRunner,\n opts: { uuid?: string; clientOrderId?: string; json: boolean },\n): Promise<void> {\n if (!opts.uuid && !opts.clientOrderId) {\n errorLine(\"Error: --uuid or --client-order-id is required. Example: bithumb trade get --uuid abc-123\");\n process.exitCode = 1;\n return;\n }\n const args: Record<string, unknown> = {};\n if (opts.uuid) args.uuid = opts.uuid;\n if (opts.clientOrderId) args.client_order_id = opts.clientOrderId;\n const result = await run(\"trade_get_order\", args);\n const data = result.data as Record<string, unknown>;\n if (opts.json) return printJson(data);\n printKv(data);\n}\n\nasync function cmdPlace(\n run: ToolRunner,\n opts: {\n market?: string;\n side?: string;\n ordType?: string;\n price?: string;\n volume?: string;\n clientOrderId?: string;\n json: boolean;\n },\n): Promise<void> {\n if (!opts.market || !opts.side || !opts.ordType) {\n errorLine(\"Error: --market, --side, and --order-type are required.\");\n errorLine(\"Example: bithumb trade place --market KRW-BTC --side bid --order-type limit --price 50000000 --volume 0.01\");\n errorLine(\"Note: --ord-type is accepted as a deprecated alias of --order-type.\");\n process.exitCode = 1;\n return;\n }\n const args: Record<string, unknown> = {\n market: opts.market,\n side: opts.side,\n order_type: opts.ordType,\n };\n if (opts.price) args.price = opts.price;\n if (opts.volume) args.volume = opts.volume;\n if (opts.clientOrderId) args.client_order_id = opts.clientOrderId;\n const result = await run(\"trade_place_order\", args);\n const data = result.data as Record<string, unknown>;\n if (opts.json) return printJson(data);\n outputLine(`Order placed: ${data[\"order_id\"]}`);\n printKv(data);\n}\n\nasync function cmdCancel(\n run: ToolRunner,\n opts: { orderId?: string; clientOrderId?: string; json: boolean },\n): Promise<void> {\n if (!opts.orderId && !opts.clientOrderId) {\n errorLine(\"Error: --order-id or --client-order-id is required. Example: bithumb trade cancel --order-id abc-123\");\n process.exitCode = 1;\n return;\n }\n const args: Record<string, unknown> = {};\n if (opts.orderId) args.order_id = opts.orderId;\n if (opts.clientOrderId) args.client_order_id = opts.clientOrderId;\n const result = await run(\"trade_cancel_order\", args);\n const data = result.data as Record<string, unknown>;\n if (opts.json) return printJson(data);\n outputLine(`Order cancelled: ${data[\"order_id\"] ?? opts.orderId ?? opts.clientOrderId}`);\n printKv(data);\n}\n\nasync function cmdBatchPlace(\n run: ToolRunner,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n if (!v.file) {\n errorLine(\"Error: --file is required. Provide a JSON file with batch orders.\");\n errorLine(\"Example: bithumb trade batch-place --file orders.json\");\n errorLine('File format: [{\"market\":\"KRW-BTC\",\"side\":\"bid\",\"order_type\":\"limit\",\"price\":\"50000000\",\"volume\":\"0.01\"}]');\n process.exitCode = 1;\n return;\n }\n\n let raw: string;\n try {\n raw = readFileSync(v.file, \"utf-8\");\n } catch {\n errorLine(`Error: File not found: ${v.file}`);\n process.exitCode = 1;\n return;\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n errorLine(`Error: Invalid JSON in file: ${v.file}`);\n process.exitCode = 1;\n return;\n }\n\n const rawBatch = Array.isArray(parsed)\n ? parsed\n : (parsed as Record<string, unknown>)?.batch_orders;\n\n if (!Array.isArray(rawBatch)) {\n errorLine(\n \"Error: batch file must be a JSON array, or an object with 'batch_orders' that is an array.\",\n );\n errorLine(\n 'Example: [{\"market\":\"KRW-BTC\",\"side\":\"bid\",\"order_type\":\"limit\",\"price\":\"50000000\",\"volume\":\"0.01\"}]',\n );\n process.exitCode = 1;\n return;\n }\n\n // Normalize legacy `ord_type` field → canonical `order_type`.\n // Bithumb API expects `order_type`; some agents send `ord_type` (response-field name).\n // If both are present we refuse to guess which the user meant — silently dropping\n // one would risk an unintended order.\n let normalizedAny = false;\n const batchOrders: unknown[] = [];\n for (let i = 0; i < rawBatch.length; i++) {\n const o = rawBatch[i];\n if (o && typeof o === \"object\" && !Array.isArray(o)) {\n const obj = o as Record<string, unknown>;\n const hasCanonical = \"order_type\" in obj;\n const hasDeprecated = \"ord_type\" in obj;\n if (hasCanonical && hasDeprecated) {\n errorLine(\n `Error: batch order at index ${i} has both 'order_type' and 'ord_type'. Use only 'order_type' ('ord_type' is a deprecated alias).`,\n );\n process.exitCode = 1;\n return;\n }\n if (!hasCanonical && hasDeprecated) {\n normalizedAny = true;\n const { ord_type, ...rest } = obj;\n batchOrders.push({ ...rest, order_type: ord_type });\n continue;\n }\n }\n batchOrders.push(o);\n }\n\n if (normalizedAny) {\n errorLine(\n \"[notice] batch JSON used 'ord_type'; normalized to canonical 'order_type'. Update your file to use 'order_type'.\",\n );\n }\n\n const result = await run(\"trade_batch_place\", { batch_orders: batchOrders });\n const data = result.data;\n if (json) return printJson(data);\n const items = data as Record<string, unknown>[];\n if (Array.isArray(items)) {\n printTable(items);\n } else {\n printKv(data as Record<string, unknown>);\n }\n}\n\nasync function cmdBatchCancel(\n run: ToolRunner,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n const args: Record<string, unknown> = {};\n if (v.orderIds) args.order_ids = toArray(v.orderIds);\n if (v.clientOrderIds) args.client_order_ids = toArray(v.clientOrderIds);\n if (!args.order_ids && !args.client_order_ids) {\n errorLine(\"Error: --order-ids or --client-order-ids required. Example: bithumb trade batch-cancel --order-ids id1,id2\");\n process.exitCode = 1;\n return;\n }\n const result = await run(\"trade_batch_cancel\", args);\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":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/help/trade.ts"],"sourcesContent":["export const MODULE_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 Place multiple orders from JSON file (max 20)\n batch-cancel Cancel multiple orders (max 30)\n\nRun bithumb trade <command> --help for command-specific options.\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 --order-id abc-123\n bithumb trade batch-place --file orders.json\n`;\n\nconst ORDERS_HELP = `\nUsage: bithumb trade orders [options]\n\nList orders, optionally filtered by market, state, or identifiers.\n\nRequired:\n (none — all filters are optional)\n\nOptions:\n --market <market> Market identifier (e.g., KRW-BTC)\n --state <state> Filter by state: wait / watch / done / cancel (default: wait)\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 (default: desc)\n --page <n> Page number (default: 1)\n --limit <n> Results per page (default: 100)\n\nExamples:\n bithumb trade orders --market KRW-BTC --state wait\n bithumb trade orders --state wait --order-by desc --limit 50\n`;\n\nconst GET_HELP = `\nUsage: bithumb trade get [options]\n\nGet details of a single order by UUID or client order ID.\n\nRequired (provide one of):\n --uuid <uuid> Order UUID\n --client-order-id <id> Client-assigned order ID\n\nOptions:\n (none)\n\nExamples:\n bithumb trade get --uuid abc-123\n bithumb trade get --client-order-id my-order-001\n`;\n\nconst PLACE_HELP = `\nUsage: bithumb trade place [options]\n\nPlace a new order on the specified market.\n\nRequired:\n --market <market> Market identifier (e.g., KRW-BTC)\n --side <side> Order side: bid (buy) / ask (sell)\n --order-type <type> Order type: limit / price / market\n --price <price> Order price (required for limit / price orders)\n --volume <volume> Order volume (required for limit / market orders)\n\nOptions:\n --client-order-id <id> Client-assigned order ID for idempotency\n --ord-type <type> (deprecated alias of --order-type)\n\nExamples:\n bithumb trade place --market KRW-BTC --side bid --order-type limit --price 50000000 --volume 0.01\n bithumb trade place --market KRW-BTC --side ask --order-type market --volume 0.01\n`;\n\nconst CANCEL_HELP = `\nUsage: bithumb trade cancel [options]\n\nCancel an existing order by order ID or client order ID.\n\nRequired (provide one of):\n --order-id <id> Order ID\n --client-order-id <id> Client-assigned order ID\n\nOptions:\n (none)\n\nExamples:\n bithumb trade cancel --order-id abc-123\n bithumb trade cancel --client-order-id my-order-001\n`;\n\nconst BATCH_PLACE_HELP = `\nUsage: bithumb trade batch-place --file <path>\n\nPlace multiple orders in a single batch from a JSON file (max 20 per call).\n\nRequired:\n --file <path> Path to a JSON file containing the orders array\n\nOptions:\n (none)\n\nJSON file format:\n {\n \"orders\": [\n { \"market\": \"KRW-BTC\", \"side\": \"bid\", \"order_type\": \"limit\", \"price\": \"50000000\", \"volume\": \"0.01\" },\n ...\n ]\n }\n Each element: market, side (bid/ask), order_type (limit/price/market), price, volume.\n\nExamples:\n bithumb trade batch-place --file orders.json\n\nCaution:\n - Maximum 20 orders per batch — requests exceeding this will be rejected.\n - All orders are submitted; partial failures are reported per-order in the response.\n - Validate the JSON file locally before submitting to avoid wasted requests.\n`;\n\nconst BATCH_CANCEL_HELP = `\nUsage: bithumb trade batch-cancel [options]\n\nCancel multiple orders in a single batch (max 30 per call).\n\nRequired (provide one of):\n --order-ids <ids> Comma-separated list of order IDs\n --client-order-ids <ids> Comma-separated list of client order IDs\n\nOptions:\n (none)\n\nExamples:\n bithumb trade batch-cancel --order-ids abc-123,def-456,ghi-789\n bithumb trade batch-cancel --client-order-ids ord-1,ord-2\n\nCaution:\n - Maximum 30 orders per batch — requests exceeding this will be rejected.\n - Cancellation is best-effort; per-order results are reported in the response.\n - Already-filled or already-cancelled orders are skipped without error.\n`;\n\nexport const ACTION_HELP: Record<string, string> = {\n orders: ORDERS_HELP,\n get: GET_HELP,\n place: PLACE_HELP,\n cancel: CANCEL_HELP,\n \"batch-place\": BATCH_PLACE_HELP,\n \"batch-cancel\": BATCH_CANCEL_HELP,\n};\n"],"mappings":";;;AAAO,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqB3B,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBpB,IAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBjB,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBnB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBpB,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BzB,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBnB,IAAM,cAAsC;AAAA,EACjD,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,gBAAgB;AAClB;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/twap.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-official/bithumb-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 handleTwapCommand(\n run: ToolRunner,\n action: string,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"place\":\n return cmdPlace(run, v, json);\n case \"orders\":\n return cmdOrders(run, v, json);\n case \"cancel\":\n return cmdCancel(run, v, json);\n default:\n errorLine(`Unknown twap command: ${action}. Run 'bithumb twap --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdPlace(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.market || !v.side || !v.duration || !v.frequency) {\n errorLine(\"Error: --market, --side, --duration, --frequency required.\");\n process.exitCode = 1;\n return;\n }\n if (v.side === \"bid\" && !v.price) {\n errorLine(\"Error: --price is required for bid.\");\n errorLine(\"Example: bithumb twap place --market KRW-BTC --side bid --duration 3600 --frequency 60 --price 50000000\");\n process.exitCode = 1;\n return;\n }\n if (v.side === \"ask\" && !v.volume) {\n errorLine(\"Error: --volume is required for ask.\");\n errorLine(\"Example: bithumb twap place --market KRW-BTC --side ask --duration 1800 --frequency 30 --volume 0.5\");\n process.exitCode = 1;\n return;\n }\n const args: Record<string, unknown> = {\n market: v.market,\n side: v.side,\n duration: v.duration,\n frequency: v.frequency,\n };\n if (v.price) args.price = v.price;\n if (v.volume) args.volume = v.volume;\n const result = await run(\"twap_place_order\", args);\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\n}\n\nasync function cmdOrders(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n const args: Record<string, unknown> = {};\n if (v.market) args.market = v.market;\n if (v.state) args.state = v.state;\n if (v.uuids) args.uuids = toArray(v.uuids);\n if (v.nextKey) args.next_key = v.nextKey;\n if (v.limit) args.limit = toNumber(v.limit);\n if (v.orderBy) args.order_by = v.orderBy;\n const result = await run(\"twap_get_orders\", args);\n // /v1/twap 응답은 envelope: { orders: [...], has_next, next_key }\n const envelope = result.data as { orders?: Record<string, unknown>[] } | undefined;\n const items = envelope?.orders ?? [];\n if (json) return printJson(envelope);\n if (!items.length) { outputLine(\"No TWAP orders found\"); return; }\n printTable(items);\n}\n\nasync function cmdCancel(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.algoOrderId) {\n errorLine(\"Error: --algo-order-id required. Example: bithumb twap cancel --algo-order-id abc-123\");\n process.exitCode = 1;\n return;\n }\n const result = await run(\"twap_cancel_order\", { algo_order_id: v.algoOrderId });\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\n}\n"],"mappings":";;;;;;;;;;;;;;AAKA,eAAsB,kBACpB,KACA,QACA,GACA,MACe;AACf,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,SAAS,KAAK,GAAG,IAAI;AAAA,IAC9B,KAAK;AACH,aAAO,UAAU,KAAK,GAAG,IAAI;AAAA,IAC/B,KAAK;AACH,aAAO,UAAU,KAAK,GAAG,IAAI;AAAA,IAC/B;AACE,gBAAU,yBAAyB,MAAM,wCAAwC;AACjF,cAAQ,WAAW;AAAA,EACvB;AACF;AAEA,eAAe,SAAS,KAAiB,GAAc,MAA8B;AACnF,MAAI,CAAC,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW;AACvD,cAAU,4DAA4D;AACtE,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,MAAI,EAAE,SAAS,SAAS,CAAC,EAAE,OAAO;AAChC,cAAU,qCAAqC;AAC/C,cAAU,yGAAyG;AACnH,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,MAAI,EAAE,SAAS,SAAS,CAAC,EAAE,QAAQ;AACjC,cAAU,sCAAsC;AAChD,cAAU,qGAAqG;AAC/G,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,QAAM,OAAgC;AAAA,IACpC,QAAQ,EAAE;AAAA,IACV,MAAM,EAAE;AAAA,IACR,UAAU,EAAE;AAAA,IACZ,WAAW,EAAE;AAAA,EACf;AACA,MAAI,EAAE,MAAO,MAAK,QAAQ,EAAE;AAC5B,MAAI,EAAE,OAAQ,MAAK,SAAS,EAAE;AAC9B,QAAM,SAAS,MAAM,IAAI,oBAAoB,IAAI;AACjD,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAAI;AACd;AAEA,eAAe,UAAU,KAAiB,GAAc,MAA8B;AACpF,QAAM,OAAgC,CAAC;AACvC,MAAI,EAAE,OAAQ,MAAK,SAAS,EAAE;AAC9B,MAAI,EAAE,MAAO,MAAK,QAAQ,EAAE;AAC5B,MAAI,EAAE,MAAO,MAAK,QAAQ,QAAQ,EAAE,KAAK;AACzC,MAAI,EAAE,QAAS,MAAK,WAAW,EAAE;AACjC,MAAI,EAAE,MAAO,MAAK,QAAQ,SAAS,EAAE,KAAK;AAC1C,MAAI,EAAE,QAAS,MAAK,WAAW,EAAE;AACjC,QAAM,SAAS,MAAM,IAAI,mBAAmB,IAAI;AAEhD,QAAM,WAAW,OAAO;AACxB,QAAM,QAAQ,UAAU,UAAU,CAAC;AACnC,MAAI,KAAM,QAAO,UAAU,QAAQ;AACnC,MAAI,CAAC,MAAM,QAAQ;AAAE,eAAW,sBAAsB;AAAG;AAAA,EAAQ;AACjE,aAAW,KAAK;AAClB;AAEA,eAAe,UAAU,KAAiB,GAAc,MAA8B;AACpF,MAAI,CAAC,EAAE,aAAa;AAClB,cAAU,uFAAuF;AACjG,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,QAAM,SAAS,MAAM,IAAI,qBAAqB,EAAE,eAAe,EAAE,YAAY,CAAC;AAC9E,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAAI;AACd;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/help/twap.ts"],"sourcesContent":["export const MODULE_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\nRun bithumb twap <command> --help for command-specific options.\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 PLACE_HELP = `\nUsage: bithumb twap place [options]\n\nPlace a TWAP (Time-Weighted Average Price) order, splitting execution over a\nduration at a fixed frequency.\n\nRequired:\n --market <market> Market identifier (e.g., KRW-BTC)\n --side <side> Order side: bid / ask\n --duration <seconds> Total duration in seconds (300-43200)\n --frequency <seconds> Slice frequency: 5, 15, 20, 30, 60, 120\n\nOptions:\n --price <price> Order price (required for bid)\n --volume <volume> Order volume (required for ask)\n\nExamples:\n bithumb twap place --market KRW-BTC --side bid --duration 3600 --frequency 60 --price 50000000\n bithumb twap place --market KRW-BTC --side ask --duration 1800 --frequency 30 --volume 0.5\n`;\n\nconst ORDERS_HELP = `\nUsage: bithumb twap orders [options]\n\nList TWAP orders, optionally filtered by market or state.\n\nRequired:\n (none)\n\nOptions:\n --market <market> Market identifier (e.g., KRW-BTC)\n --state <state> Order state: progress / done / cancel (default: progress)\n --uuids <uuids> Filter by TWAP order IDs (comma-separated)\n --order-by <order> Sort order: asc / desc (default: desc)\n --next-key <key> Pagination cursor\n --limit <n> Results per page (default: 100)\n\nExamples:\n bithumb twap orders --market KRW-BTC\n bithumb twap orders --state done --order-by desc --limit 20\n`;\n\nconst CANCEL_HELP = `\nUsage: bithumb twap cancel [options]\n\nCancel a TWAP order by its algo-order-id.\n\nRequired:\n --algo-order-id <id> TWAP order ID\n\nOptions:\n (none)\n\nExamples:\n bithumb twap cancel --algo-order-id abc-123\n`;\n\nexport const ACTION_HELP: Record<string, string> = {\n place: PLACE_HELP,\n orders: ORDERS_HELP,\n cancel: CANCEL_HELP,\n};\n"],"mappings":";;;AAAO,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgB3B,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBnB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBpB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeb,IAAM,cAAsC;AAAA,EACjD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AACV;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/help/withdraw.ts"],"sourcesContent":["export const MODULE_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\nRun bithumb withdraw <command> --help for command-specific options.\n\nExamples:\n bithumb withdraw chance --currency BTC --net-type BTC\n bithumb withdraw list --currency BTC\n bithumb withdraw addresses\n`;\n\nconst CHANCE_HELP = `\nUsage: bithumb withdraw chance [options]\n\nGet withdrawal availability info (limits, fee, network status) for a currency.\n\nRequired:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n\nOptions:\n (none)\n\nExamples:\n bithumb withdraw chance --currency BTC --net-type BTC\n bithumb withdraw chance --currency USDT --net-type TRX\n`;\n\nconst GET_HELP = `\nUsage: bithumb withdraw get [options]\n\nGet details of a single withdrawal by UUID or txid for a specific currency.\n\nRequired:\n --currency <code> Currency code (e.g., BTC)\n\nOptions (provide one of):\n --uuid <uuid> Withdrawal UUID\n --txids <txid> Transaction ID\n\nExamples:\n bithumb withdraw get --currency BTC --uuid abc-123\n bithumb withdraw get --currency BTC --txids 0xabcdef\n`;\n\nconst LIST_HELP = `\nUsage: bithumb withdraw list [options]\n\nList coin withdrawals, optionally filtered by currency, state, or identifiers.\n\nRequired:\n (none — all filters are optional)\n\nOptions:\n --currency <code> Currency code (e.g., BTC)\n --state <state> State filter (e.g., done / processing)\n --uuids <uuids> Filter by UUIDs (comma-separated)\n --txids <txids> Filter by transaction IDs (comma-separated)\n --limit <n> Results per page (max 100) (default: 100)\n --page <n> Page number (default: 1)\n --order-by <order> Sort order: asc / desc (default: desc)\n\nExamples:\n bithumb withdraw list --currency BTC\n bithumb withdraw list --state done --limit 50 --order-by desc\n`;\n\nconst LIST_KRW_HELP = `\nUsage: bithumb withdraw list-krw [options]\n\nList KRW withdrawals, optionally filtered by state or identifiers.\n\nRequired:\n (none — all filters are optional)\n\nOptions:\n --state <state> State filter (e.g., done / processing)\n --uuids <uuids> Filter by UUIDs (comma-separated)\n --txids <txids> Filter by transaction IDs (comma-separated)\n --limit <n> Results per page (max 100) (default: 100)\n --page <n> Page number (default: 1)\n --order-by <order> Sort order: asc / desc (default: desc)\n\nExamples:\n bithumb withdraw list-krw\n bithumb withdraw list-krw --state done --limit 50\n`;\n\nconst COIN_HELP = `\nUsage: bithumb withdraw coin [options]\n\nWithdraw cryptocurrency to an external address. Initiates a real, irreversible\nfunds movement.\n\nRequired:\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\nOptions:\n --secondary-address <addr> Secondary address (tag/memo) — required for\n networks that need a destination tag\n --exchange-name <name> Destination exchange name (travel rule)\n --receiver-type <type> Receiver type: personal / corporation\n --receiver-ko-name <name> Receiver Korean name (personal)\n --receiver-en-name <name> Receiver English name (personal)\n --receiver-corp-ko-name <name> Corporation Korean name (corporation)\n --receiver-corp-en-name <name> Corporation English name (corporation)\n\nExamples:\n bithumb withdraw coin --currency BTC --net-type BTC --amount 0.01 \\\\\n --address bc1q...\n bithumb withdraw coin --currency XRP --net-type XRP --amount 10 \\\\\n --address rXXXX --secondary-address 12345\n\nCaution:\n - Cryptocurrency withdrawals are IRREVERSIBLE. Once broadcast on-chain, funds\n cannot be recalled — verify the destination --address (and --secondary-address\n where applicable) character-by-character before submitting.\n - Strongly recommended: pre-register the destination as an allowed address\n (see 'bithumb withdraw addresses') and dry-run with 'bithumb withdraw chance'\n to confirm fees, limits, and network status before initiating.\n - Travel-rule fields (--exchange-name, --receiver-*) may be required by Bithumb\n depending on amount/destination; missing fields will surface as API errors.\n`;\n\nconst KRW_HELP = `\nUsage: bithumb withdraw krw [options]\n\nWithdraw KRW to your registered bank account. Initiates a real, irreversible\nfunds movement.\n\nRequired:\n --amount <amount> Withdrawal amount (KRW)\n --two-factor-type <type> 2FA type (e.g., kakao)\n\nOptions:\n (none)\n\nExamples:\n bithumb withdraw krw --amount 1000000 --two-factor-type kakao\n\nCaution:\n - KRW withdrawal is IRREVERSIBLE once submitted — funds are sent to the bank\n account registered under your Bithumb identity. Confirm the registered\n bank/account information on the Bithumb site BEFORE invoking this command.\n - 2FA (--two-factor-type) is mandatory. The request will fail without it.\n - The destination account cannot be overridden via CLI flags by design — to\n change it, update the registered account through Bithumb's official channels.\n`;\n\nconst CANCEL_HELP = `\nUsage: bithumb withdraw cancel [options]\n\nCancel a pending coin withdrawal by withdrawal ID. Only effective while the\nwithdrawal is still cancellable (not yet broadcast).\n\nRequired:\n --withdrawal-id <id> Withdrawal ID to cancel\n\nOptions:\n (none)\n\nExamples:\n bithumb withdraw cancel --withdrawal-id abc-123\n`;\n\nconst ADDRESSES_HELP = `\nUsage: bithumb withdraw addresses [options]\n\nList the withdrawal addresses pre-registered (allow-listed) on your Bithumb\naccount. Pre-registration is recommended before invoking 'bithumb withdraw coin'.\n\nRequired:\n (none)\n\nOptions:\n (none)\n\nExamples:\n bithumb withdraw addresses\n`;\n\nexport const ACTION_HELP: Record<string, string> = {\n chance: CHANCE_HELP,\n get: GET_HELP,\n list: LIST_HELP,\n \"list-krw\": LIST_KRW_HELP,\n coin: COIN_HELP,\n krw: KRW_HELP,\n cancel: CANCEL_HELP,\n addresses: ADDRESSES_HELP,\n};\n"],"mappings":";;;AAAO,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqB3B,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBpB,IAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBjB,IAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBlB,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBtB,IAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuClB,IAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBjB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBpB,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBhB,IAAM,cAAsC;AAAA,EACjD,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,WAAW;AACb;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/withdraw.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-official/bithumb-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 handleWithdrawCommand(\n run: ToolRunner,\n action: string,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"chance\":\n return cmdChance(run, v, json);\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 \"coin\":\n return cmdCoin(run, v, json);\n case \"krw\":\n return cmdKrw(run, v, json);\n case \"cancel\":\n return cmdCancel(run, v, json);\n case \"addresses\":\n return cmdAddresses(run, json);\n default:\n errorLine(`Unknown withdraw command: ${action}. Run 'bithumb withdraw --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdChance(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.currency || !v.netType) {\n errorLine(\"Error: --currency and --net-type required. Example: bithumb withdraw chance --currency BTC --net-type BTC\");\n process.exitCode = 1;\n return;\n }\n const result = await run(\"withdraw_get_chance\", { 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 cmdGet(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.currency) {\n errorLine(\"Error: --currency required. Example: bithumb withdraw get --currency BTC --uuid abc-123\");\n process.exitCode = 1;\n return;\n }\n const args: Record<string, unknown> = { currency: v.currency };\n if (v.uuid) args.uuid = v.uuid;\n if (v.txids) args.txid = v.txids;\n const result = await run(\"withdraw_get\", args);\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\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(\"withdraw_get_list\", args);\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No withdrawals 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(\"withdraw_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 withdrawals found\"); return; }\n printTable(items);\n}\n\nasync function cmdCoin(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.currency || !v.netType || !v.amount || !v.address) {\n errorLine(\"Error: --currency, --net-type, --amount, --address required.\");\n errorLine(\"CAUTION: This will initiate a real cryptocurrency withdrawal!\");\n process.exitCode = 1;\n return;\n }\n outputLine(\"WARNING: Initiating cryptocurrency withdrawal. This action is irreversible.\");\n const args: Record<string, unknown> = {\n currency: v.currency,\n net_type: v.netType,\n amount: v.amount,\n address: v.address,\n };\n if (v.secondaryAddress) args.secondary_address = v.secondaryAddress;\n if (v.exchangeName) args.exchange_name = v.exchangeName;\n if (v.receiverType) args.receiver_type = v.receiverType;\n if (v.receiverKoName) args.receiver_ko_name = v.receiverKoName;\n if (v.receiverEnName) args.receiver_en_name = v.receiverEnName;\n if (v.receiverCorpKoName) args.receiver_corp_ko_name = v.receiverCorpKoName;\n if (v.receiverCorpEnName) args.receiver_corp_en_name = v.receiverCorpEnName;\n const result = await run(\"withdraw_coin\", args);\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\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 withdrawal!\");\n process.exitCode = 1;\n return;\n }\n outputLine(\"WARNING: Initiating KRW withdrawal. This action is irreversible.\");\n const result = await run(\"withdraw_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 cmdCancel(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.withdrawalId) {\n errorLine(\"Error: --withdrawal-id required. Example: bithumb withdraw cancel --withdrawal-id abc-123\");\n process.exitCode = 1;\n return;\n }\n const result = await run(\"withdraw_cancel_coin\", { withdrawal_id: v.withdrawalId });\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(\"withdraw_get_addresses\", {});\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No withdrawal addresses found\"); return; }\n printTable(items);\n}\n"],"mappings":";;;;;;;;;;;;;;AAKA,eAAsB,sBACpB,KACA,QACA,GACA,MACe;AACf,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,UAAU,KAAK,GAAG,IAAI;AAAA,IAC/B,KAAK;AACH,aAAO,OAAO,KAAK,GAAG,IAAI;AAAA,IAC5B,KAAK;AACH,aAAO,QAAQ,KAAK,GAAG,IAAI;AAAA,IAC7B,KAAK;AACH,aAAO,WAAW,KAAK,GAAG,IAAI;AAAA,IAChC,KAAK;AACH,aAAO,QAAQ,KAAK,GAAG,IAAI;AAAA,IAC7B,KAAK;AACH,aAAO,OAAO,KAAK,GAAG,IAAI;AAAA,IAC5B,KAAK;AACH,aAAO,UAAU,KAAK,GAAG,IAAI;AAAA,IAC/B,KAAK;AACH,aAAO,aAAa,KAAK,IAAI;AAAA,IAC/B;AACE,gBAAU,6BAA6B,MAAM,4CAA4C;AACzF,cAAQ,WAAW;AAAA,EACvB;AACF;AAEA,eAAe,UAAU,KAAiB,GAAc,MAA8B;AACpF,MAAI,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS;AAC7B,cAAU,2GAA2G;AACrH,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,QAAM,SAAS,MAAM,IAAI,uBAAuB,EAAE,UAAU,EAAE,UAAU,UAAU,EAAE,QAAQ,CAAC;AAC7F,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAAI;AACd;AAEA,eAAe,OAAO,KAAiB,GAAc,MAA8B;AACjF,MAAI,CAAC,EAAE,UAAU;AACf,cAAU,yFAAyF;AACnG,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,QAAM,OAAgC,EAAE,UAAU,EAAE,SAAS;AAC7D,MAAI,EAAE,KAAM,MAAK,OAAO,EAAE;AAC1B,MAAI,EAAE,MAAO,MAAK,OAAO,EAAE;AAC3B,QAAM,SAAS,MAAM,IAAI,gBAAgB,IAAI;AAC7C,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAAI;AACd;AAEA,eAAe,QAAQ,KAAiB,GAAc,MAA8B;AAClF,QAAM,OAAgC,CAAC;AACvC,MAAI,EAAE,SAAU,MAAK,WAAW,EAAE;AAClC,MAAI,EAAE,MAAO,MAAK,QAAQ,EAAE;AAC5B,MAAI,EAAE,MAAO,MAAK,QAAQ,QAAQ,EAAE,KAAK;AACzC,MAAI,EAAE,MAAO,MAAK,QAAQ,QAAQ,EAAE,KAAK;AACzC,MAAI,EAAE,MAAO,MAAK,QAAQ,SAAS,EAAE,KAAK;AAC1C,MAAI,EAAE,KAAM,MAAK,OAAO,SAAS,EAAE,IAAI;AACvC,MAAI,EAAE,QAAS,MAAK,WAAW,EAAE;AACjC,QAAM,SAAS,MAAM,IAAI,qBAAqB,IAAI;AAClD,QAAM,QAAQ,OAAO;AACrB,MAAI,KAAM,QAAO,UAAU,KAAK;AAChC,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,sBAAsB;AAAG;AAAA,EAAQ;AAClE,aAAW,KAAK;AAClB;AAEA,eAAe,WAAW,KAAiB,GAAc,MAA8B;AACrF,QAAM,OAAgC,CAAC;AACvC,MAAI,EAAE,MAAO,MAAK,QAAQ,EAAE;AAC5B,MAAI,EAAE,MAAO,MAAK,QAAQ,QAAQ,EAAE,KAAK;AACzC,MAAI,EAAE,MAAO,MAAK,QAAQ,QAAQ,EAAE,KAAK;AACzC,MAAI,EAAE,MAAO,MAAK,QAAQ,SAAS,EAAE,KAAK;AAC1C,MAAI,EAAE,KAAM,MAAK,OAAO,SAAS,EAAE,IAAI;AACvC,MAAI,EAAE,QAAS,MAAK,WAAW,EAAE;AACjC,QAAM,SAAS,MAAM,IAAI,yBAAyB,IAAI;AACtD,QAAM,QAAQ,OAAO;AACrB,MAAI,KAAM,QAAO,UAAU,KAAK;AAChC,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,0BAA0B;AAAG;AAAA,EAAQ;AACtE,aAAW,KAAK;AAClB;AAEA,eAAe,QAAQ,KAAiB,GAAc,MAA8B;AAClF,MAAI,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS;AACxD,cAAU,8DAA8D;AACxE,cAAU,+DAA+D;AACzE,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,aAAW,6EAA6E;AACxF,QAAM,OAAgC;AAAA,IACpC,UAAU,EAAE;AAAA,IACZ,UAAU,EAAE;AAAA,IACZ,QAAQ,EAAE;AAAA,IACV,SAAS,EAAE;AAAA,EACb;AACA,MAAI,EAAE,iBAAkB,MAAK,oBAAoB,EAAE;AACnD,MAAI,EAAE,aAAc,MAAK,gBAAgB,EAAE;AAC3C,MAAI,EAAE,aAAc,MAAK,gBAAgB,EAAE;AAC3C,MAAI,EAAE,eAAgB,MAAK,mBAAmB,EAAE;AAChD,MAAI,EAAE,eAAgB,MAAK,mBAAmB,EAAE;AAChD,MAAI,EAAE,mBAAoB,MAAK,wBAAwB,EAAE;AACzD,MAAI,EAAE,mBAAoB,MAAK,wBAAwB,EAAE;AACzD,QAAM,SAAS,MAAM,IAAI,iBAAiB,IAAI;AAC9C,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAAI;AACd;AAEA,eAAe,OAAO,KAAiB,GAAc,MAA8B;AACjF,MAAI,CAAC,EAAE,UAAU,CAAC,EAAE,eAAe;AACjC,cAAU,iDAAiD;AAC3D,cAAU,oDAAoD;AAC9D,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,aAAW,kEAAkE;AAC7E,QAAM,SAAS,MAAM,IAAI,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,iBAAiB,EAAE,cAAc,CAAC;AAC/F,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAAI;AACd;AAEA,eAAe,UAAU,KAAiB,GAAc,MAA8B;AACpF,MAAI,CAAC,EAAE,cAAc;AACnB,cAAU,2FAA2F;AACrG,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,QAAM,SAAS,MAAM,IAAI,wBAAwB,EAAE,eAAe,EAAE,aAAa,CAAC;AAClF,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAAI;AACd;AAEA,eAAe,aAAa,KAAiB,MAA8B;AACzE,QAAM,SAAS,MAAM,IAAI,0BAA0B,CAAC,CAAC;AACrD,QAAM,QAAQ,OAAO;AACrB,MAAI,KAAM,QAAO,UAAU,KAAK;AAChC,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,+BAA+B;AAAG;AAAA,EAAQ;AAC3E,aAAW,KAAK;AAClB;","names":[]}