@nuno1026/bithumb-cli 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{account-QQC3UZDP.js → account-PM4UQZGC.js} +3 -3
- package/dist/account-PM4UQZGC.js.map +1 -0
- package/dist/{config-5T2Z7X5D.js → config-3DKXMP6T.js} +7 -7
- package/dist/config-3DKXMP6T.js.map +1 -0
- package/dist/{deposit-PBP2KDXP.js → deposit-2DPI346C.js} +8 -8
- package/dist/deposit-2DPI346C.js.map +1 -0
- package/dist/index.js +52 -52
- package/dist/index.js.map +1 -1
- package/dist/{market-B32IKWHH.js → market-V7L36QN3.js} +6 -6
- package/dist/market-V7L36QN3.js.map +1 -0
- package/dist/{trade-ZZU6PXJL.js → trade-MDOYZ5BW.js} +7 -7
- package/dist/trade-MDOYZ5BW.js.map +1 -0
- package/dist/{twap-U3LDHACU.js → twap-QGTXCV3U.js} +3 -3
- package/dist/twap-QGTXCV3U.js.map +1 -0
- package/dist/{withdraw-7C657PEC.js → withdraw-PLP3ZC4Q.js} +5 -5
- package/dist/withdraw-PLP3ZC4Q.js.map +1 -0
- package/package.json +1 -1
- package/dist/account-QQC3UZDP.js.map +0 -1
- package/dist/config-5T2Z7X5D.js.map +0 -1
- package/dist/deposit-PBP2KDXP.js.map +0 -1
- package/dist/market-B32IKWHH.js.map +0 -1
- package/dist/trade-ZZU6PXJL.js.map +0 -1
- package/dist/twap-U3LDHACU.js.map +0 -1
- package/dist/withdraw-7C657PEC.js.map +0 -1
|
@@ -30,7 +30,7 @@ async function handleAccountCommand(run, action, v, json) {
|
|
|
30
30
|
case "api-keys":
|
|
31
31
|
return cmdApiKeys(run, json);
|
|
32
32
|
default:
|
|
33
|
-
errorLine(`Unknown account command: ${action}. Run 'bithumb
|
|
33
|
+
errorLine(`Unknown account command: ${action}. Run 'bithumb account --help' for usage.`);
|
|
34
34
|
process.exitCode = 1;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -52,7 +52,7 @@ async function cmdBalance(run, json) {
|
|
|
52
52
|
}
|
|
53
53
|
async function cmdOrderChance(run, market, json) {
|
|
54
54
|
if (!market) {
|
|
55
|
-
errorLine("Error: --market is required. Example: bithumb
|
|
55
|
+
errorLine("Error: --market is required. Example: bithumb account order-chance --market KRW-BTC");
|
|
56
56
|
process.exitCode = 1;
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
@@ -107,4 +107,4 @@ async function cmdApiKeys(run, json) {
|
|
|
107
107
|
export {
|
|
108
108
|
handleAccountCommand
|
|
109
109
|
};
|
|
110
|
-
//# sourceMappingURL=account-
|
|
110
|
+
//# sourceMappingURL=account-PM4UQZGC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/account.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleAccountCommand(\n run: ToolRunner,\n action: string,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"balance\":\n return cmdBalance(run, json);\n case \"order-chance\":\n return cmdOrderChance(run, v.market, json);\n case \"audit\":\n return cmdAudit(run, {\n limit: toNumber(v.limit),\n tool: v.tool,\n since: v.since,\n level: v.level,\n json,\n });\n case \"wallet-status\":\n return cmdWalletStatus(run, json);\n case \"api-keys\":\n return cmdApiKeys(run, json);\n default:\n errorLine(`Unknown account command: ${action}. Run 'bithumb account --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdBalance(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"account_get_balance\", {});\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No balances found\"); return; }\n printTable(items.map((b) => ({\n currency: b[\"currency\"],\n balance: b[\"balance\"],\n locked: b[\"locked\"],\n avg_buy_price: b[\"avg_buy_price\"],\n unit_currency: b[\"unit_currency\"],\n })));\n}\n\nasync function cmdOrderChance(run: ToolRunner, market: string | undefined, json: boolean): Promise<void> {\n if (!market) {\n errorLine(\"Error: --market is required. Example: bithumb account order-chance --market KRW-BTC\");\n process.exitCode = 1;\n return;\n }\n const result = await run(\"account_get_order_chance\", { market });\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\n}\n\nasync function cmdAudit(\n run: ToolRunner,\n opts: { limit?: number; tool?: string; since?: string; level?: string; json: boolean },\n): Promise<void> {\n const args: Record<string, unknown> = {};\n if (opts.limit !== undefined) args.limit = opts.limit;\n if (opts.tool !== undefined) args.tool = opts.tool;\n if (opts.since !== undefined) args.since = opts.since;\n if (opts.level !== undefined) args.level = opts.level;\n const result = await run(\"trade_get_history\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No audit entries found\"); return; }\n printTable(items.map((entry) => ({\n timestamp: entry[\"ts\"],\n level: entry[\"level\"],\n tool: entry[\"tool\"],\n message: entry[\"message\"],\n elapsed_ms: entry[\"elapsed\"],\n })));\n}\n\nasync function cmdWalletStatus(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"account_get_wallet_status\", {});\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 wallet status data\"); return; }\n printTable(items);\n}\n\nasync function cmdApiKeys(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"account_get_api_keys\", {});\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 API keys found\"); return; }\n printTable(items);\n}\n"],"mappings":";;;;;;;;;;;;;AAKA,eAAsB,qBACpB,KACA,QACA,GACA,MACe;AACf,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,WAAW,KAAK,IAAI;AAAA,IAC7B,KAAK;AACH,aAAO,eAAe,KAAK,EAAE,QAAQ,IAAI;AAAA,IAC3C,KAAK;AACH,aAAO,SAAS,KAAK;AAAA,QACnB,OAAO,SAAS,EAAE,KAAK;AAAA,QACvB,MAAM,EAAE;AAAA,QACR,OAAO,EAAE;AAAA,QACT,OAAO,EAAE;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,KAAK;AACH,aAAO,gBAAgB,KAAK,IAAI;AAAA,IAClC,KAAK;AACH,aAAO,WAAW,KAAK,IAAI;AAAA,IAC7B;AACE,gBAAU,4BAA4B,MAAM,2CAA2C;AACvF,cAAQ,WAAW;AAAA,EACvB;AACF;AAEA,eAAe,WAAW,KAAiB,MAA8B;AACvE,QAAM,SAAS,MAAM,IAAI,uBAAuB,CAAC,CAAC;AAClD,QAAM,QAAQ,OAAO;AACrB,MAAI,KAAM,QAAO,UAAU,KAAK;AAChC,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,mBAAmB;AAAG;AAAA,EAAQ;AAC/D,aAAW,MAAM,IAAI,CAAC,OAAO;AAAA,IAC3B,UAAU,EAAE,UAAU;AAAA,IACtB,SAAS,EAAE,SAAS;AAAA,IACpB,QAAQ,EAAE,QAAQ;AAAA,IAClB,eAAe,EAAE,eAAe;AAAA,IAChC,eAAe,EAAE,eAAe;AAAA,EAClC,EAAE,CAAC;AACL;AAEA,eAAe,eAAe,KAAiB,QAA4B,MAA8B;AACvG,MAAI,CAAC,QAAQ;AACX,cAAU,qFAAqF;AAC/F,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,QAAM,SAAS,MAAM,IAAI,4BAA4B,EAAE,OAAO,CAAC;AAC/D,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAAI;AACd;AAEA,eAAe,SACb,KACA,MACe;AACf,QAAM,OAAgC,CAAC;AACvC,MAAI,KAAK,UAAU,OAAW,MAAK,QAAQ,KAAK;AAChD,MAAI,KAAK,SAAS,OAAW,MAAK,OAAO,KAAK;AAC9C,MAAI,KAAK,UAAU,OAAW,MAAK,QAAQ,KAAK;AAChD,MAAI,KAAK,UAAU,OAAW,MAAK,QAAQ,KAAK;AAChD,QAAM,SAAS,MAAM,IAAI,qBAAqB,IAAI;AAClD,QAAM,QAAQ,OAAO;AACrB,MAAI,KAAK,KAAM,QAAO,UAAU,KAAK;AACrC,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,wBAAwB;AAAG;AAAA,EAAQ;AACpE,aAAW,MAAM,IAAI,CAAC,WAAW;AAAA,IAC/B,WAAW,MAAM,IAAI;AAAA,IACrB,OAAO,MAAM,OAAO;AAAA,IACpB,MAAM,MAAM,MAAM;AAAA,IAClB,SAAS,MAAM,SAAS;AAAA,IACxB,YAAY,MAAM,SAAS;AAAA,EAC7B,EAAE,CAAC;AACL;AAEA,eAAe,gBAAgB,KAAiB,MAA8B;AAC5E,QAAM,SAAS,MAAM,IAAI,6BAA6B,CAAC,CAAC;AACxD,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,QAAM,QAAQ;AACd,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,uBAAuB;AAAG;AAAA,EAAQ;AACnE,aAAW,KAAK;AAClB;AAEA,eAAe,WAAW,KAAiB,MAA8B;AACvE,QAAM,SAAS,MAAM,IAAI,wBAAwB,CAAC,CAAC;AACnD,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,QAAM,QAAQ;AACd,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,mBAAmB;AAAG;AAAA,EAAQ;AAC/D,aAAW,KAAK;AAClB;","names":[]}
|
|
@@ -51,7 +51,7 @@ function cmdConfigShow(json) {
|
|
|
51
51
|
outputLine("");
|
|
52
52
|
const profileNames = Object.keys(config.profiles);
|
|
53
53
|
if (profileNames.length === 0) {
|
|
54
|
-
outputLine("No profiles configured. Run 'bithumb
|
|
54
|
+
outputLine("No profiles configured. Run 'bithumb config init' to create one.");
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
57
|
for (const name of profileNames) {
|
|
@@ -70,7 +70,7 @@ function cmdConfigInit() {
|
|
|
70
70
|
const path = configFilePath();
|
|
71
71
|
if (existsSync(path)) {
|
|
72
72
|
outputLine(`Config file already exists: ${path}`);
|
|
73
|
-
outputLine("Use 'bithumb
|
|
73
|
+
outputLine("Use 'bithumb config add-profile' to add a new profile.");
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
76
|
const dir = dirname(path);
|
|
@@ -92,7 +92,7 @@ function cmdConfigInit() {
|
|
|
92
92
|
}
|
|
93
93
|
function cmdConfigSet(key, value, profileName) {
|
|
94
94
|
if (!key || value === void 0) {
|
|
95
|
-
errorLine("Usage: bithumb
|
|
95
|
+
errorLine("Usage: bithumb config set <key> <value> [--profile <name>]");
|
|
96
96
|
errorLine("Keys: access_key, secret_key, base_url, timeout_ms");
|
|
97
97
|
process.exitCode = 1;
|
|
98
98
|
return;
|
|
@@ -119,7 +119,7 @@ function cmdConfigSet(key, value, profileName) {
|
|
|
119
119
|
function cmdConfigAddProfile(rest, _v) {
|
|
120
120
|
const name = rest[0];
|
|
121
121
|
if (!name) {
|
|
122
|
-
errorLine("Usage: bithumb
|
|
122
|
+
errorLine("Usage: bithumb config add-profile <name>");
|
|
123
123
|
process.exitCode = 1;
|
|
124
124
|
return;
|
|
125
125
|
}
|
|
@@ -152,13 +152,13 @@ function cmdConfigListProfiles(json) {
|
|
|
152
152
|
}
|
|
153
153
|
function cmdConfigUse(profileName) {
|
|
154
154
|
if (!profileName) {
|
|
155
|
-
errorLine("Usage: bithumb
|
|
155
|
+
errorLine("Usage: bithumb config use <profile-name>");
|
|
156
156
|
process.exitCode = 1;
|
|
157
157
|
return;
|
|
158
158
|
}
|
|
159
159
|
const config = readFullConfig();
|
|
160
160
|
if (!config.profiles[profileName]) {
|
|
161
|
-
errorLine(`Profile '${profileName}' not found. Run 'bithumb
|
|
161
|
+
errorLine(`Profile '${profileName}' not found. Run 'bithumb config list-profiles' to see available profiles.`);
|
|
162
162
|
process.exitCode = 1;
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
@@ -169,4 +169,4 @@ function cmdConfigUse(profileName) {
|
|
|
169
169
|
export {
|
|
170
170
|
handleConfigCommand
|
|
171
171
|
};
|
|
172
|
-
//# sourceMappingURL=config-
|
|
172
|
+
//# sourceMappingURL=config-3DKXMP6T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/config.ts"],"sourcesContent":["import {\n configFilePath,\n readFullConfig,\n writeFullConfig,\n} from \"@bithumb-tradekit/core\";\nimport type { BithumbTomlConfig } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printKv, printTable } from \"../formatter.js\";\nimport { existsSync, mkdirSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\n\nexport function handleConfigCommand(\n action: string,\n rest: string[],\n v: CliValues,\n): void {\n const json = v.json ?? false;\n switch (action) {\n case \"show\":\n return cmdConfigShow(json);\n case \"init\":\n return cmdConfigInit();\n case \"set\":\n return cmdConfigSet(rest[0], rest[1], v.profile);\n case \"add-profile\":\n return cmdConfigAddProfile(rest, v);\n case \"list-profiles\":\n return cmdConfigListProfiles(json);\n case \"use\":\n return cmdConfigUse(rest[0]);\n case \"path\":\n outputLine(configFilePath());\n return;\n default:\n if (!action) {\n return cmdConfigShow(json);\n }\n errorLine(`Unknown config command: ${action}. Available: show, init, set, add-profile, list-profiles, use, path`);\n process.exitCode = 1;\n }\n}\n\nfunction cmdConfigShow(json: boolean): void {\n const config = readFullConfig();\n if (json) return printJson(config);\n outputLine(`Config file: ${configFilePath()}`);\n if (config.default_profile) {\n outputLine(`Default profile: ${config.default_profile}`);\n }\n outputLine(\"\");\n const profileNames = Object.keys(config.profiles);\n if (profileNames.length === 0) {\n outputLine(\"No profiles configured. Run 'bithumb config init' to create one.\");\n return;\n }\n for (const name of profileNames) {\n const p = config.profiles[name];\n outputLine(`[${name}]`);\n printKv({\n access_key: p.access_key ? `${p.access_key.slice(0, 8)}...` : \"(not set)\",\n secret_key: p.secret_key ? \"***\" : \"(not set)\",\n ...(p.base_url ? { base_url: p.base_url } : {}),\n ...(p.timeout_ms ? { timeout_ms: p.timeout_ms } : {}),\n });\n outputLine(\"\");\n }\n}\n\nfunction cmdConfigInit(): void {\n const path = configFilePath();\n if (existsSync(path)) {\n outputLine(`Config file already exists: ${path}`);\n outputLine(\"Use 'bithumb config add-profile' to add a new profile.\");\n return;\n }\n const dir = dirname(path);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n const config: BithumbTomlConfig = {\n default_profile: \"default\",\n profiles: {\n default: {\n access_key: \"\",\n secret_key: \"\",\n },\n },\n };\n writeFullConfig(config);\n outputLine(`Config file created: ${path}`);\n outputLine(\"Edit it to add your API credentials.\");\n}\n\nfunction cmdConfigSet(key: string | undefined, value: string | undefined, profileName?: string): void {\n if (!key || value === undefined) {\n errorLine(\"Usage: bithumb config set <key> <value> [--profile <name>]\");\n errorLine(\"Keys: access_key, secret_key, base_url, timeout_ms\");\n process.exitCode = 1;\n return;\n }\n const validKeys = new Set([\"access_key\", \"secret_key\", \"base_url\", \"timeout_ms\"]);\n if (!validKeys.has(key)) {\n errorLine(`Invalid key: ${key}. Valid keys: ${[...validKeys].join(\", \")}`);\n process.exitCode = 1;\n return;\n }\n const config = readFullConfig();\n const name = profileName ?? config.default_profile ?? \"default\";\n if (!config.profiles[name]) {\n config.profiles[name] = {};\n }\n if (key === \"timeout_ms\") {\n (config.profiles[name] as Record<string, unknown>)[key] = Number(value);\n } else {\n (config.profiles[name] as Record<string, unknown>)[key] = value;\n }\n writeFullConfig(config);\n outputLine(`Set ${name}.${key}`);\n}\n\nfunction cmdConfigAddProfile(rest: string[], _v: CliValues): void {\n const name = rest[0];\n if (!name) {\n errorLine(\"Usage: bithumb config add-profile <name>\");\n process.exitCode = 1;\n return;\n }\n const config = readFullConfig();\n if (config.profiles[name]) {\n errorLine(`Profile '${name}' already exists.`);\n process.exitCode = 1;\n return;\n }\n config.profiles[name] = {\n access_key: \"\",\n secret_key: \"\",\n };\n writeFullConfig(config);\n outputLine(`Profile '${name}' added. Edit ${configFilePath()} to set credentials.`);\n}\n\nfunction cmdConfigListProfiles(json: boolean): void {\n const config = readFullConfig();\n const profiles = Object.entries(config.profiles).map(([name, p]) => ({\n name,\n default: name === (config.default_profile ?? \"default\") ? \"*\" : \"\",\n has_credentials: p.access_key && p.secret_key ? \"yes\" : \"no\",\n }));\n if (json) return printJson(profiles);\n if (profiles.length === 0) {\n outputLine(\"No profiles configured.\");\n return;\n }\n printTable(profiles);\n}\n\nfunction cmdConfigUse(profileName: string | undefined): void {\n if (!profileName) {\n errorLine(\"Usage: bithumb config use <profile-name>\");\n process.exitCode = 1;\n return;\n }\n const config = readFullConfig();\n if (!config.profiles[profileName]) {\n errorLine(`Profile '${profileName}' not found. Run 'bithumb config list-profiles' to see available profiles.`);\n process.exitCode = 1;\n return;\n }\n config.default_profile = profileName;\n writeFullConfig(config);\n outputLine(`Default profile set to '${profileName}'`);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -32,25 +32,25 @@ async function handleDepositCommand(run, action, v, json) {
|
|
|
32
32
|
case "address":
|
|
33
33
|
return cmdAddress(run, v, json);
|
|
34
34
|
default:
|
|
35
|
-
errorLine(`Unknown deposit command: ${action}. Run 'bithumb
|
|
35
|
+
errorLine(`Unknown deposit command: ${action}. Run 'bithumb deposit --help' for usage.`);
|
|
36
36
|
process.exitCode = 1;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
async function cmdGet(run, v, json) {
|
|
40
40
|
if (v.txids) {
|
|
41
41
|
errorLine("Error: 'deposit get' supports --uuid only. For txid lookup use:");
|
|
42
|
-
errorLine(" bithumb
|
|
42
|
+
errorLine(" bithumb deposit list --txids <txid1,txid2>");
|
|
43
43
|
process.exitCode = 1;
|
|
44
44
|
return;
|
|
45
45
|
}
|
|
46
46
|
if (!v.currency) {
|
|
47
|
-
errorLine("Error: --currency required. Example: bithumb
|
|
47
|
+
errorLine("Error: --currency required. Example: bithumb deposit get --currency BTC --uuid abc-123");
|
|
48
48
|
process.exitCode = 1;
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
51
|
if (!v.uuid) {
|
|
52
|
-
errorLine("Error: --uuid required for 'deposit get'. Example: bithumb
|
|
53
|
-
errorLine("Tip: To search by txid, use 'bithumb
|
|
52
|
+
errorLine("Error: --uuid required for 'deposit get'. Example: bithumb deposit get --currency BTC --uuid abc-123");
|
|
53
|
+
errorLine("Tip: To search by txid, use 'bithumb deposit list --txids <txid>'.");
|
|
54
54
|
process.exitCode = 1;
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
@@ -133,7 +133,7 @@ async function cmdKrw(run, v, json) {
|
|
|
133
133
|
}
|
|
134
134
|
async function cmdGenerateAddress(run, v, json) {
|
|
135
135
|
if (!v.currency || !v.netType) {
|
|
136
|
-
errorLine("Error: --currency and --net-type required. Example: bithumb
|
|
136
|
+
errorLine("Error: --currency and --net-type required. Example: bithumb deposit generate-address --currency BTC --net-type BTC");
|
|
137
137
|
process.exitCode = 1;
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
@@ -154,7 +154,7 @@ async function cmdAddresses(run, json) {
|
|
|
154
154
|
}
|
|
155
155
|
async function cmdAddress(run, v, json) {
|
|
156
156
|
if (!v.currency || !v.netType) {
|
|
157
|
-
errorLine("Error: --currency and --net-type required. Example: bithumb
|
|
157
|
+
errorLine("Error: --currency and --net-type required. Example: bithumb deposit address --currency BTC --net-type BTC");
|
|
158
158
|
process.exitCode = 1;
|
|
159
159
|
return;
|
|
160
160
|
}
|
|
@@ -166,4 +166,4 @@ async function cmdAddress(run, v, json) {
|
|
|
166
166
|
export {
|
|
167
167
|
handleDepositCommand
|
|
168
168
|
};
|
|
169
|
-
//# sourceMappingURL=deposit-
|
|
169
|
+
//# sourceMappingURL=deposit-2DPI346C.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/deposit.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport { BithumbApiError } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber, toArray } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleDepositCommand(\n run: ToolRunner,\n action: string,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"get\":\n return cmdGet(run, v, json);\n case \"list\":\n return cmdList(run, v, json);\n case \"list-krw\":\n return cmdListKrw(run, v, json);\n case \"krw\":\n return cmdKrw(run, v, json);\n case \"generate-address\":\n return cmdGenerateAddress(run, v, json);\n case \"addresses\":\n return cmdAddresses(run, json);\n case \"address\":\n return cmdAddress(run, v, json);\n default:\n errorLine(`Unknown deposit command: ${action}. Run 'bithumb deposit --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdGet(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (v.txids) {\n errorLine(\"Error: 'deposit get' supports --uuid only. For txid lookup use:\");\n errorLine(\" bithumb deposit list --txids <txid1,txid2>\");\n process.exitCode = 1;\n return;\n }\n if (!v.currency) {\n errorLine(\"Error: --currency required. Example: bithumb deposit get --currency BTC --uuid abc-123\");\n process.exitCode = 1;\n return;\n }\n if (!v.uuid) {\n errorLine(\"Error: --uuid required for 'deposit get'. Example: bithumb deposit get --currency BTC --uuid abc-123\");\n errorLine(\"Tip: To search by txid, use 'bithumb deposit list --txids <txid>'.\");\n process.exitCode = 1;\n return;\n }\n const args: Record<string, unknown> = { currency: v.currency, uuid: v.uuid };\n try {\n const result = await run(\"deposit_get\", args);\n const data = result.data as Record<string, unknown> | undefined;\n if (!data || (typeof data === \"object\" && Object.keys(data).length === 0)) {\n outputLine(\"No deposit found.\");\n return;\n }\n if (json) return printJson(data);\n printKv(data);\n } catch (err) {\n // Bithumb API may return 4xx for unknown UUID; render gracefully without the `Fatal:` prefix.\n if (err instanceof BithumbApiError) {\n const codeNum = Number(err.code);\n const codeStr = err.code ?? \"\";\n const errNamePattern = /not.?found|invalid|forbidden|unauthorized|bad.?request/i;\n const messagePattern = /not.?found|invalid/i;\n const isClientError =\n (Number.isFinite(codeNum) && codeNum >= 400 && codeNum < 500) ||\n errNamePattern.test(codeStr) ||\n messagePattern.test(err.message);\n if (isClientError) {\n errorLine(`Error: deposit not found or invalid request (${err.code}). ${err.message}`);\n process.exitCode = 1;\n return;\n }\n // Other Bithumb API errors (5xx, unknown code): still graceful, not Fatal.\n errorLine(`Error: ${err.message}`);\n process.exitCode = 1;\n return;\n }\n throw err;\n }\n}\n\nasync function cmdList(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n const args: Record<string, unknown> = {};\n if (v.currency) args.currency = v.currency;\n if (v.state) args.state = v.state;\n if (v.uuids) args.uuids = toArray(v.uuids);\n if (v.txids) args.txids = toArray(v.txids);\n if (v.limit) args.limit = toNumber(v.limit);\n if (v.page) args.page = toNumber(v.page);\n if (v.orderBy) args.order_by = v.orderBy;\n const result = await run(\"deposit_get_list\", args);\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No deposits found\"); return; }\n printTable(items);\n}\n\nasync function cmdListKrw(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n const args: Record<string, unknown> = {};\n if (v.state) args.state = v.state;\n if (v.uuids) args.uuids = toArray(v.uuids);\n if (v.txids) args.txids = toArray(v.txids);\n if (v.limit) args.limit = toNumber(v.limit);\n if (v.page) args.page = toNumber(v.page);\n if (v.orderBy) args.order_by = v.orderBy;\n const result = await run(\"deposit_get_list_krw\", args);\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No KRW deposits found\"); return; }\n printTable(items);\n}\n\nasync function cmdKrw(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.amount || !v.twoFactorType) {\n errorLine(\"Error: --amount and --two-factor-type required.\");\n errorLine(\"CAUTION: This will initiate a real KRW deposit request!\");\n process.exitCode = 1;\n return;\n }\n outputLine(\"WARNING: Initiating KRW deposit request.\");\n const result = await run(\"deposit_krw\", { amount: v.amount, two_factor_type: v.twoFactorType });\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\n}\n\nasync function cmdGenerateAddress(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.currency || !v.netType) {\n errorLine(\"Error: --currency and --net-type required. Example: bithumb deposit generate-address --currency BTC --net-type BTC\");\n process.exitCode = 1;\n return;\n }\n const result = await run(\"deposit_generate_address\", { currency: v.currency, net_type: v.netType });\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\n}\n\nasync function cmdAddresses(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"deposit_get_addresses\", {});\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No deposit addresses found\"); return; }\n printTable(items);\n}\n\nasync function cmdAddress(run: ToolRunner, v: CliValues, json: boolean): Promise<void> {\n if (!v.currency || !v.netType) {\n errorLine(\"Error: --currency and --net-type required. Example: bithumb deposit address --currency BTC --net-type BTC\");\n process.exitCode = 1;\n return;\n }\n const result = await run(\"deposit_get_address\", { currency: v.currency, net_type: v.netType });\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -20,13 +20,13 @@ import {
|
|
|
20
20
|
} from "./chunk-FYO6WLZI.js";
|
|
21
21
|
|
|
22
22
|
// src/constants.ts
|
|
23
|
-
var CLI_VERSION = "0.1.
|
|
23
|
+
var CLI_VERSION = "0.1.5";
|
|
24
24
|
|
|
25
25
|
// src/help.ts
|
|
26
26
|
var GLOBAL_HELP = `
|
|
27
|
-
bithumb
|
|
27
|
+
bithumb v${CLI_VERSION} \u2014 Bithumb Trade CLI
|
|
28
28
|
|
|
29
|
-
Usage: bithumb
|
|
29
|
+
Usage: bithumb <module> <command> [options]
|
|
30
30
|
|
|
31
31
|
Modules:
|
|
32
32
|
market Market data (ticker, orderbook, candles, trades)
|
|
@@ -50,10 +50,10 @@ Global Options:
|
|
|
50
50
|
-h, --help Show help
|
|
51
51
|
-v, --version Show version
|
|
52
52
|
|
|
53
|
-
Run 'bithumb
|
|
53
|
+
Run 'bithumb <module> --help' for module-specific commands.
|
|
54
54
|
`;
|
|
55
55
|
var MARKET_HELP = `
|
|
56
|
-
Usage: bithumb
|
|
56
|
+
Usage: bithumb market <command> [options]
|
|
57
57
|
|
|
58
58
|
Commands:
|
|
59
59
|
markets List all available markets
|
|
@@ -78,13 +78,13 @@ Market Options:
|
|
|
78
78
|
--converting-price-unit <unit> Price unit: KRW (candles-days only)
|
|
79
79
|
|
|
80
80
|
Examples:
|
|
81
|
-
bithumb
|
|
82
|
-
bithumb
|
|
83
|
-
bithumb
|
|
84
|
-
bithumb
|
|
81
|
+
bithumb market markets
|
|
82
|
+
bithumb market ticker KRW-BTC
|
|
83
|
+
bithumb market orderbook KRW-BTC --json
|
|
84
|
+
bithumb market candles-minutes KRW-BTC --unit 5 --count 10
|
|
85
85
|
`;
|
|
86
86
|
var ACCOUNT_HELP = `
|
|
87
|
-
Usage: bithumb
|
|
87
|
+
Usage: bithumb account <command> [options]
|
|
88
88
|
|
|
89
89
|
Commands:
|
|
90
90
|
balance Get account balances
|
|
@@ -104,12 +104,12 @@ Audit Options:
|
|
|
104
104
|
--level <level> Filter by log level (INFO, WARN, ERROR, DEBUG)
|
|
105
105
|
|
|
106
106
|
Examples:
|
|
107
|
-
bithumb
|
|
108
|
-
bithumb
|
|
109
|
-
bithumb
|
|
107
|
+
bithumb account balance
|
|
108
|
+
bithumb account order-chance --market KRW-BTC
|
|
109
|
+
bithumb account audit --limit 10
|
|
110
110
|
`;
|
|
111
111
|
var TRADE_HELP = `
|
|
112
|
-
Usage: bithumb
|
|
112
|
+
Usage: bithumb trade <command> [options]
|
|
113
113
|
|
|
114
114
|
Commands:
|
|
115
115
|
orders List orders
|
|
@@ -138,14 +138,14 @@ Trade Options:
|
|
|
138
138
|
--file <path> JSON file path (batch-place only)
|
|
139
139
|
|
|
140
140
|
Examples:
|
|
141
|
-
bithumb
|
|
142
|
-
bithumb
|
|
143
|
-
bithumb
|
|
144
|
-
bithumb
|
|
145
|
-
bithumb
|
|
141
|
+
bithumb trade orders --market KRW-BTC --state wait
|
|
142
|
+
bithumb trade get --uuid abc-123
|
|
143
|
+
bithumb trade place --market KRW-BTC --side bid --order-type limit --price 50000000 --volume 0.01
|
|
144
|
+
bithumb trade cancel --uuid abc-123
|
|
145
|
+
bithumb trade batch-place --file orders.json
|
|
146
146
|
`;
|
|
147
147
|
var SETUP_HELP = `
|
|
148
|
-
Usage: bithumb
|
|
148
|
+
Usage: bithumb setup --client <client> [--profile <name>] [--modules <list>]
|
|
149
149
|
|
|
150
150
|
Configure MCP client integration for supported AI coding tools.
|
|
151
151
|
|
|
@@ -155,11 +155,11 @@ Options:
|
|
|
155
155
|
--modules <list> Comma-separated modules to enable
|
|
156
156
|
|
|
157
157
|
Examples:
|
|
158
|
-
bithumb
|
|
159
|
-
bithumb
|
|
158
|
+
bithumb setup --client claude-desktop
|
|
159
|
+
bithumb setup --client cursor --modules market,account
|
|
160
160
|
`;
|
|
161
161
|
var TWAP_HELP = `
|
|
162
|
-
Usage: bithumb
|
|
162
|
+
Usage: bithumb twap <command> [options]
|
|
163
163
|
|
|
164
164
|
Commands:
|
|
165
165
|
place Place a TWAP order
|
|
@@ -181,12 +181,12 @@ TWAP Options:
|
|
|
181
181
|
--order-by <order> Sort order: asc / desc
|
|
182
182
|
|
|
183
183
|
Examples:
|
|
184
|
-
bithumb
|
|
185
|
-
bithumb
|
|
186
|
-
bithumb
|
|
184
|
+
bithumb twap place --market KRW-BTC --side bid --duration 3600 --frequency 60 --price 50000000
|
|
185
|
+
bithumb twap orders --market KRW-BTC
|
|
186
|
+
bithumb twap cancel --algo-order-id abc-123
|
|
187
187
|
`;
|
|
188
188
|
var WITHDRAW_HELP = `
|
|
189
|
-
Usage: bithumb
|
|
189
|
+
Usage: bithumb withdraw <command> [options]
|
|
190
190
|
|
|
191
191
|
Commands:
|
|
192
192
|
chance Get withdrawal availability info
|
|
@@ -221,12 +221,12 @@ Withdraw Options:
|
|
|
221
221
|
--order-by <order> Sort order: asc / desc
|
|
222
222
|
|
|
223
223
|
Examples:
|
|
224
|
-
bithumb
|
|
225
|
-
bithumb
|
|
226
|
-
bithumb
|
|
224
|
+
bithumb withdraw chance --currency BTC --net-type BTC
|
|
225
|
+
bithumb withdraw list --currency BTC
|
|
226
|
+
bithumb withdraw addresses
|
|
227
227
|
`;
|
|
228
228
|
var DEPOSIT_HELP = `
|
|
229
|
-
Usage: bithumb
|
|
229
|
+
Usage: bithumb deposit <command> [options]
|
|
230
230
|
|
|
231
231
|
Commands:
|
|
232
232
|
get Get specific deposit
|
|
@@ -251,12 +251,12 @@ Deposit Options:
|
|
|
251
251
|
--order-by <order> Sort order: asc / desc
|
|
252
252
|
|
|
253
253
|
Examples:
|
|
254
|
-
bithumb
|
|
255
|
-
bithumb
|
|
256
|
-
bithumb
|
|
254
|
+
bithumb deposit list --currency BTC
|
|
255
|
+
bithumb deposit address --currency BTC --net-type BTC
|
|
256
|
+
bithumb deposit addresses
|
|
257
257
|
`;
|
|
258
258
|
var SYSTEM_HELP = `
|
|
259
|
-
Usage: bithumb
|
|
259
|
+
Usage: bithumb system <command> [options]
|
|
260
260
|
|
|
261
261
|
Commands:
|
|
262
262
|
capabilities Server capabilities and module availability for agent planning
|
|
@@ -265,15 +265,15 @@ System Options:
|
|
|
265
265
|
--json Output as JSON
|
|
266
266
|
|
|
267
267
|
Examples:
|
|
268
|
-
bithumb
|
|
269
|
-
bithumb
|
|
268
|
+
bithumb system capabilities
|
|
269
|
+
bithumb system capabilities --json
|
|
270
270
|
|
|
271
271
|
Notes:
|
|
272
|
-
- 'bithumb
|
|
272
|
+
- 'bithumb account capabilities' is an alias for 'bithumb system capabilities'.
|
|
273
273
|
- Use this command to discover which modules are enabled and which require auth.
|
|
274
274
|
`;
|
|
275
275
|
var CONFIG_HELP = `
|
|
276
|
-
Usage: bithumb
|
|
276
|
+
Usage: bithumb config <command> [options]
|
|
277
277
|
|
|
278
278
|
Commands:
|
|
279
279
|
show Show current configuration
|
|
@@ -288,10 +288,10 @@ Options:
|
|
|
288
288
|
--profile <name> Target profile (default: current default)
|
|
289
289
|
|
|
290
290
|
Examples:
|
|
291
|
-
bithumb
|
|
292
|
-
bithumb
|
|
293
|
-
bithumb
|
|
294
|
-
bithumb
|
|
291
|
+
bithumb config init
|
|
292
|
+
bithumb config set access_key your_key --profile trading
|
|
293
|
+
bithumb config use trading
|
|
294
|
+
bithumb config list-profiles
|
|
295
295
|
`;
|
|
296
296
|
function printHelp(positionals) {
|
|
297
297
|
const module = positionals[0];
|
|
@@ -386,7 +386,7 @@ async function main() {
|
|
|
386
386
|
const [module, action, ...rest] = positionals;
|
|
387
387
|
const json = v.json ?? false;
|
|
388
388
|
if (module === "config") {
|
|
389
|
-
const { handleConfigCommand } = await import("./config-
|
|
389
|
+
const { handleConfigCommand } = await import("./config-3DKXMP6T.js");
|
|
390
390
|
return handleConfigCommand(action, rest, v);
|
|
391
391
|
}
|
|
392
392
|
const config = loadConfig({
|
|
@@ -416,36 +416,36 @@ async function main() {
|
|
|
416
416
|
const privateModules = /* @__PURE__ */ new Set(["account", "trade", "twap", "withdraw", "deposit"]);
|
|
417
417
|
if (privateModules.has(module) && !config.hasAuth) {
|
|
418
418
|
errorLine(
|
|
419
|
-
"Error: API credentials required. Run 'bithumb
|
|
419
|
+
"Error: API credentials required. Run 'bithumb setup' or configure ~/.bithumb/config.toml"
|
|
420
420
|
);
|
|
421
421
|
process.exitCode = 1;
|
|
422
422
|
return;
|
|
423
423
|
}
|
|
424
424
|
if (module === "market") {
|
|
425
|
-
const { handleMarketCommand } = await import("./market-
|
|
425
|
+
const { handleMarketCommand } = await import("./market-V7L36QN3.js");
|
|
426
426
|
return handleMarketCommand(run, action, rest, v, json);
|
|
427
427
|
}
|
|
428
428
|
if (module === "account") {
|
|
429
|
-
const { handleAccountCommand } = await import("./account-
|
|
429
|
+
const { handleAccountCommand } = await import("./account-PM4UQZGC.js");
|
|
430
430
|
return handleAccountCommand(run, action, v, json);
|
|
431
431
|
}
|
|
432
432
|
if (module === "trade") {
|
|
433
|
-
const { handleTradeCommand } = await import("./trade-
|
|
433
|
+
const { handleTradeCommand } = await import("./trade-MDOYZ5BW.js");
|
|
434
434
|
return handleTradeCommand(run, action, v, json);
|
|
435
435
|
}
|
|
436
436
|
if (module === "twap") {
|
|
437
|
-
const { handleTwapCommand } = await import("./twap-
|
|
437
|
+
const { handleTwapCommand } = await import("./twap-QGTXCV3U.js");
|
|
438
438
|
return handleTwapCommand(run, action, v, json);
|
|
439
439
|
}
|
|
440
440
|
if (module === "withdraw") {
|
|
441
|
-
const { handleWithdrawCommand } = await import("./withdraw-
|
|
441
|
+
const { handleWithdrawCommand } = await import("./withdraw-PLP3ZC4Q.js");
|
|
442
442
|
return handleWithdrawCommand(run, action, v, json);
|
|
443
443
|
}
|
|
444
444
|
if (module === "deposit") {
|
|
445
|
-
const { handleDepositCommand } = await import("./deposit-
|
|
445
|
+
const { handleDepositCommand } = await import("./deposit-2DPI346C.js");
|
|
446
446
|
return handleDepositCommand(run, action, v, json);
|
|
447
447
|
}
|
|
448
|
-
errorLine(`Unknown command: ${module}. Run 'bithumb
|
|
448
|
+
errorLine(`Unknown command: ${module}. Run 'bithumb --help' for usage.`);
|
|
449
449
|
process.exitCode = 1;
|
|
450
450
|
}
|
|
451
451
|
main().catch((err) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/help.ts","../src/index.ts"],"sourcesContent":["export const CLI_VERSION = \"0.1.4\";\n","import { outputLine } from \"./formatter.js\";\nimport { CLI_VERSION } from \"./constants.js\";\n\nconst GLOBAL_HELP = `\nbithumb-trade v${CLI_VERSION} — Bithumb Trade CLI\n\nUsage: bithumb-trade <module> <command> [options]\n\nModules:\n market Market data (ticker, orderbook, candles, trades)\n account Account balance, wallet status, API keys\n trade Order management (list, place, cancel, batch)\n twap TWAP (Time-Weighted Average Price) orders\n withdraw Cryptocurrency and KRW withdrawals\n deposit Cryptocurrency and KRW deposits\n system Server capabilities and module availability for agent planning\n\nUtility:\n setup Configure MCP client integration\n config Manage CLI configuration profiles\n diagnose Run connectivity diagnostics\n\nGlobal Options:\n --profile <name> Config profile (default: \"default\")\n --json Output as JSON\n --verbose Enable verbose logging\n --read-only Read-only mode (setup only, disables write operations)\n -h, --help Show help\n -v, --version Show version\n\nRun 'bithumb-trade <module> --help' for module-specific commands.\n`;\n\nconst MARKET_HELP = `\nUsage: bithumb-trade market <command> [options]\n\nCommands:\n markets List all available markets\n ticker <market> Get ticker for market(s) (comma-separated)\n orderbook <market> Get orderbook for market(s) (comma-separated)\n trades <market> Get recent trades\n candles-minutes <market> Get minute candles\n candles-days <market> Get daily candles\n candles-weeks <market> Get weekly candles\n candles-months <market> Get monthly candles\n warnings Get virtual asset warning markets\n notices Get notice list\n fee-inout <currency> Get deposit/withdrawal fees\n\nMarket Options:\n --is-details Include detailed market info (markets only)\n --count <n> Number of results to return\n --to <timestamp> Return results before this timestamp\n --unit <n> Minute unit: 1,3,5,10,15,30,60,240 (candles-minutes only)\n --cursor <cursor> Pagination cursor (trades only)\n --days-ago <n> Filter trades by days ago (trades only)\n --converting-price-unit <unit> Price unit: KRW (candles-days only)\n\nExamples:\n bithumb-trade market markets\n bithumb-trade market ticker KRW-BTC\n bithumb-trade market orderbook KRW-BTC --json\n bithumb-trade market candles-minutes KRW-BTC --unit 5 --count 10\n`;\n\nconst ACCOUNT_HELP = `\nUsage: bithumb-trade account <command> [options]\n\nCommands:\n balance Get account balances\n order-chance --market <market> Get order chance for a market\n audit View trade audit log\n wallet-status Get wallet deposit/withdrawal status\n api-keys Get API key list\n capabilities (alias) Server capabilities for agent planning (same as 'system capabilities')\n\nAccount Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n\nAudit Options:\n --limit <n> Number of log entries (default: 20)\n --tool <name> Filter by tool name\n --since <date> Show entries since date (ISO format)\n --level <level> Filter by log level (INFO, WARN, ERROR, DEBUG)\n\nExamples:\n bithumb-trade account balance\n bithumb-trade account order-chance --market KRW-BTC\n bithumb-trade account audit --limit 10\n`;\n\nconst TRADE_HELP = `\nUsage: bithumb-trade trade <command> [options]\n\nCommands:\n orders List orders\n get Get order details\n place Place a new order\n cancel Cancel an order\n batch-place --file <path> Place multiple orders from JSON file (max 20)\n batch-cancel Cancel multiple orders (max 30)\n\nTrade Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n --uuid <uuid> Order UUID\n --client-order-id <id> Client-assigned order ID\n --side <side> Order side: bid (buy) / ask (sell)\n --order-type <type> Order type: limit / price / market (canonical)\n --ord-type <type> (deprecated alias of --order-type)\n --price <price> Order price\n --volume <volume> Order volume\n --state <state> Filter by state: wait / watch / done / cancel\n --states <states> Filter by multiple states (comma-separated)\n --uuids <uuids> Filter by multiple UUIDs (comma-separated)\n --client-order-ids <ids> Filter by multiple client order IDs (comma-separated)\n --order-by <order> Sort order: asc / desc\n --page <n> Page number\n --limit <n> Results per page\n --file <path> JSON file path (batch-place only)\n\nExamples:\n bithumb-trade trade orders --market KRW-BTC --state wait\n bithumb-trade trade get --uuid abc-123\n bithumb-trade trade place --market KRW-BTC --side bid --order-type limit --price 50000000 --volume 0.01\n bithumb-trade trade cancel --uuid abc-123\n bithumb-trade trade batch-place --file orders.json\n`;\n\nconst SETUP_HELP = `\nUsage: bithumb-trade setup --client <client> [--profile <name>] [--modules <list>]\n\nConfigure MCP client integration for supported AI coding tools.\n\nOptions:\n --client <client> Target client: claude-desktop, cursor, windsurf, vscode, claude-code\n --profile <name> Config profile to use (default: \"default\")\n --modules <list> Comma-separated modules to enable\n\nExamples:\n bithumb-trade setup --client claude-desktop\n bithumb-trade setup --client cursor --modules market,account\n`;\n\nconst TWAP_HELP = `\nUsage: bithumb-trade twap <command> [options]\n\nCommands:\n place Place a TWAP order\n orders List TWAP orders\n cancel Cancel a TWAP order\n\nTWAP Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n --side <side> Order side: bid / ask\n --duration <seconds> Duration in seconds (300-43200)\n --frequency <seconds> Frequency: 5,15,20,30,60,120\n --price <price> Order price (required for bid)\n --volume <volume> Order volume (required for ask)\n --algo-order-id <id> TWAP order ID (for cancel)\n --state <state> Order state filter\n --next-key <key> Pagination cursor\n --limit <n> Results per page\n --uuids <uuids> Filter by TWAP order IDs (comma-separated)\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb-trade twap place --market KRW-BTC --side bid --duration 3600 --frequency 60 --price 50000000\n bithumb-trade twap orders --market KRW-BTC\n bithumb-trade twap cancel --algo-order-id abc-123\n`;\n\nconst WITHDRAW_HELP = `\nUsage: bithumb-trade withdraw <command> [options]\n\nCommands:\n chance Get withdrawal availability info\n get Get specific withdrawal\n list List coin withdrawals\n list-krw List KRW withdrawals\n coin Withdraw cryptocurrency (CAUTION)\n krw Withdraw KRW (CAUTION)\n cancel Cancel coin withdrawal\n addresses List allowed withdrawal addresses\n\nWithdraw Options:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n --amount <amount> Withdrawal amount\n --address <addr> Withdrawal address\n --secondary-address <addr> Secondary address (tag/memo)\n --exchange-name <name> Exchange name\n --receiver-type <type> Receiver type: personal / corporation\n --receiver-ko-name <name> Receiver Korean name\n --receiver-en-name <name> Receiver English name\n --receiver-corp-ko-name <name> Corporation Korean name\n --receiver-corp-en-name <name> Corporation English name\n --two-factor-type <type> 2FA type (kakao)\n --uuid <uuid> Withdrawal UUID\n --txids <txids> Transaction ID(s) (comma-separated for list)\n --uuids <uuids> Filter by UUIDs (comma-separated, for list)\n --withdrawal-id <id> Withdrawal ID (for cancel)\n --state <state> State filter (for list)\n --limit <n> Results per page (max 100)\n --page <n> Page number\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb-trade withdraw chance --currency BTC --net-type BTC\n bithumb-trade withdraw list --currency BTC\n bithumb-trade withdraw addresses\n`;\n\nconst DEPOSIT_HELP = `\nUsage: bithumb-trade deposit <command> [options]\n\nCommands:\n get Get specific deposit\n list List coin deposits\n list-krw List KRW deposits\n krw Request KRW deposit (CAUTION)\n generate-address Generate deposit address\n addresses List all deposit addresses\n address Get specific deposit address\n\nDeposit Options:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n --amount <amount> Deposit amount\n --two-factor-type <type> 2FA type (kakao)\n --uuid <uuid> Deposit UUID\n --txids <txids> Transaction ID(s) (comma-separated for list)\n --uuids <uuids> Filter by UUIDs (comma-separated, for list)\n --state <state> State filter (for list)\n --limit <n> Results per page (max 100)\n --page <n> Page number\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb-trade deposit list --currency BTC\n bithumb-trade deposit address --currency BTC --net-type BTC\n bithumb-trade deposit addresses\n`;\n\nconst SYSTEM_HELP = `\nUsage: bithumb-trade system <command> [options]\n\nCommands:\n capabilities Server capabilities and module availability for agent planning\n\nSystem Options:\n --json Output as JSON\n\nExamples:\n bithumb-trade system capabilities\n bithumb-trade system capabilities --json\n\nNotes:\n - 'bithumb-trade account capabilities' is an alias for 'bithumb-trade system capabilities'.\n - Use this command to discover which modules are enabled and which require auth.\n`;\n\nconst CONFIG_HELP = `\nUsage: bithumb-trade config <command> [options]\n\nCommands:\n show Show current configuration\n init Create config file\n set <key> <value> Set a config value (access_key, secret_key, base_url, timeout_ms)\n add-profile <name> Add a new profile\n list-profiles List all profiles\n use <name> Set default profile\n path Show config file path\n\nOptions:\n --profile <name> Target profile (default: current default)\n\nExamples:\n bithumb-trade config init\n bithumb-trade config set access_key your_key --profile trading\n bithumb-trade config use trading\n bithumb-trade config list-profiles\n`;\n\nexport function printHelp(positionals: string[]): void {\n const module = positionals[0];\n switch (module) {\n case \"market\":\n outputLine(MARKET_HELP.trim());\n break;\n case \"account\":\n outputLine(ACCOUNT_HELP.trim());\n break;\n case \"trade\":\n outputLine(TRADE_HELP.trim());\n break;\n case \"twap\":\n outputLine(TWAP_HELP.trim());\n break;\n case \"withdraw\":\n outputLine(WITHDRAW_HELP.trim());\n break;\n case \"deposit\":\n outputLine(DEPOSIT_HELP.trim());\n break;\n case \"system\":\n outputLine(SYSTEM_HELP.trim());\n break;\n case \"setup\":\n outputLine(SETUP_HELP.trim());\n break;\n case \"config\":\n outputLine(CONFIG_HELP.trim());\n break;\n default:\n outputLine(GLOBAL_HELP.trim());\n break;\n }\n}\n","import {\n loadConfig,\n BithumbRestClient,\n createToolRunner,\n TradeLogger,\n checkForUpdates,\n runSetup,\n printSetupUsage,\n SUPPORTED_CLIENTS,\n} from \"@bithumb-tradekit/core\";\nimport type { ToolRunner, ClientId } from \"@bithumb-tradekit/core\";\nimport { parseCli } from \"./parser.js\";\nimport type { CliValues } from \"./parser.js\";\nimport { outputLine, errorLine, printJson, printKv } from \"./formatter.js\";\nimport { printHelp } from \"./help.js\";\nimport { CLI_VERSION } from \"./constants.js\";\n\nfunction wrapRunnerWithLogger(\n baseRunner: ToolRunner,\n logger: TradeLogger,\n): ToolRunner {\n return async (toolName, args) => {\n const start = Date.now();\n try {\n const result = await baseRunner(toolName, args);\n logger.logTool(\"info\", toolName, args, { status: \"ok\" }, Date.now() - start);\n return result;\n } catch (error) {\n logger.logTool(\"error\", toolName, args, error, Date.now() - start);\n throw error;\n }\n };\n}\n\nfunction handleSetup(argv: string[]): void {\n const idx = argv.indexOf(\"setup\");\n const rest = argv.slice(idx + 1);\n\n let client: string | undefined;\n let profile: string | undefined;\n let modules: string | undefined;\n\n for (let i = 0; i < rest.length; i++) {\n if (rest[i] === \"--client\" && rest[i + 1]) {\n client = rest[++i];\n } else if (rest[i] === \"--profile\" && rest[i + 1]) {\n profile = rest[++i];\n } else if (rest[i] === \"--modules\" && rest[i + 1]) {\n modules = rest[++i];\n } else if (rest[i] === \"--help\" || rest[i] === \"-h\") {\n printSetupUsage();\n return;\n }\n }\n\n if (!client || !SUPPORTED_CLIENTS.includes(client as ClientId)) {\n errorLine(`Error: --client is required. Supported: ${SUPPORTED_CLIENTS.join(\", \")}`);\n process.exitCode = 1;\n return;\n }\n\n runSetup({ client: client as ClientId, profile, modules });\n}\n\nasync function main(): Promise<void> {\n checkForUpdates(\"@bithumb-tradekit/cli\", CLI_VERSION);\n\n // 1. Setup subcommand (before parseCli)\n if (process.argv[2] === \"setup\") {\n handleSetup(process.argv);\n return;\n }\n\n // 2. Parse arguments\n const { values: v, positionals } = parseCli(process.argv.slice(2));\n\n if (v.version) {\n outputLine(CLI_VERSION);\n return;\n }\n\n if (v.help || positionals.length === 0) {\n printHelp(positionals);\n return;\n }\n\n const [module, action, ...rest] = positionals;\n const json = v.json ?? false;\n\n // 3. Config command (no auth needed, no runner needed)\n if (module === \"config\") {\n const { handleConfigCommand } = await import(\"./commands/config.js\");\n return handleConfigCommand(action, rest, v);\n }\n\n // 4. Load config + create runner\n const config = loadConfig({\n modules: v.modules,\n readOnly: v.readOnly,\n verbose: v.verbose,\n profile: v.profile,\n });\n const client = new BithumbRestClient(config);\n const baseRunner = createToolRunner(client, config);\n const logger = new TradeLogger(v.verbose ? \"debug\" : \"info\");\n const run = wrapRunnerWithLogger(baseRunner, logger);\n\n // 5. Diagnose (needs config but no auth)\n if (module === \"diagnose\") {\n const result = await run(\"system_diagnose\", {});\n const data = result.data ?? result;\n if (json) return printJson(data);\n printKv(data as Record<string, unknown>);\n return;\n }\n\n // 5b. System capabilities (no auth needed)\n // Accept both `system capabilities` (canonical) and `account capabilities` (alias)\n if (\n (module === \"system\" && action === \"capabilities\") ||\n (module === \"account\" && action === \"capabilities\")\n ) {\n const result = await run(\"system_get_capabilities\", {});\n const data = result.data ?? result;\n if (json) return printJson(data);\n printKv(data as Record<string, unknown>);\n return;\n }\n\n // 6. Private API auth guard\n const privateModules = new Set([\"account\", \"trade\", \"twap\", \"withdraw\", \"deposit\"]);\n if (privateModules.has(module) && !config.hasAuth) {\n errorLine(\n \"Error: API credentials required. Run 'bithumb-trade setup' or configure ~/.bithumb/config.toml\",\n );\n process.exitCode = 1;\n return;\n }\n\n // 7. Module routing\n if (module === \"market\") {\n const { handleMarketCommand } = await import(\"./commands/market.js\");\n return handleMarketCommand(run, action, rest, v, json);\n }\n if (module === \"account\") {\n const { handleAccountCommand } = await import(\"./commands/account.js\");\n return handleAccountCommand(run, action, v, json);\n }\n if (module === \"trade\") {\n const { handleTradeCommand } = await import(\"./commands/trade.js\");\n return handleTradeCommand(run, action, v, json);\n }\n if (module === \"twap\") {\n const { handleTwapCommand } = await import(\"./commands/twap.js\");\n return handleTwapCommand(run, action, v, json);\n }\n if (module === \"withdraw\") {\n const { handleWithdrawCommand } = await import(\"./commands/withdraw.js\");\n return handleWithdrawCommand(run, action, v, json);\n }\n if (module === \"deposit\") {\n const { handleDepositCommand } = await import(\"./commands/deposit.js\");\n return handleDepositCommand(run, action, v, json);\n }\n\n errorLine(`Unknown command: ${module}. Run 'bithumb-trade --help' for usage.`);\n process.exitCode = 1;\n}\n\nmain().catch((err) => {\n errorLine(`Fatal: ${err instanceof Error ? err.message : String(err)}`);\n process.exitCode = 1;\n});\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/help.ts","../src/index.ts"],"sourcesContent":["export const CLI_VERSION = \"0.1.5\";\n","import { outputLine } from \"./formatter.js\";\nimport { CLI_VERSION } from \"./constants.js\";\n\nconst GLOBAL_HELP = `\nbithumb v${CLI_VERSION} — Bithumb Trade CLI\n\nUsage: bithumb <module> <command> [options]\n\nModules:\n market Market data (ticker, orderbook, candles, trades)\n account Account balance, wallet status, API keys\n trade Order management (list, place, cancel, batch)\n twap TWAP (Time-Weighted Average Price) orders\n withdraw Cryptocurrency and KRW withdrawals\n deposit Cryptocurrency and KRW deposits\n system Server capabilities and module availability for agent planning\n\nUtility:\n setup Configure MCP client integration\n config Manage CLI configuration profiles\n diagnose Run connectivity diagnostics\n\nGlobal Options:\n --profile <name> Config profile (default: \"default\")\n --json Output as JSON\n --verbose Enable verbose logging\n --read-only Read-only mode (setup only, disables write operations)\n -h, --help Show help\n -v, --version Show version\n\nRun 'bithumb <module> --help' for module-specific commands.\n`;\n\nconst MARKET_HELP = `\nUsage: bithumb market <command> [options]\n\nCommands:\n markets List all available markets\n ticker <market> Get ticker for market(s) (comma-separated)\n orderbook <market> Get orderbook for market(s) (comma-separated)\n trades <market> Get recent trades\n candles-minutes <market> Get minute candles\n candles-days <market> Get daily candles\n candles-weeks <market> Get weekly candles\n candles-months <market> Get monthly candles\n warnings Get virtual asset warning markets\n notices Get notice list\n fee-inout <currency> Get deposit/withdrawal fees\n\nMarket Options:\n --is-details Include detailed market info (markets only)\n --count <n> Number of results to return\n --to <timestamp> Return results before this timestamp\n --unit <n> Minute unit: 1,3,5,10,15,30,60,240 (candles-minutes only)\n --cursor <cursor> Pagination cursor (trades only)\n --days-ago <n> Filter trades by days ago (trades only)\n --converting-price-unit <unit> Price unit: KRW (candles-days only)\n\nExamples:\n bithumb market markets\n bithumb market ticker KRW-BTC\n bithumb market orderbook KRW-BTC --json\n bithumb market candles-minutes KRW-BTC --unit 5 --count 10\n`;\n\nconst ACCOUNT_HELP = `\nUsage: bithumb account <command> [options]\n\nCommands:\n balance Get account balances\n order-chance --market <market> Get order chance for a market\n audit View trade audit log\n wallet-status Get wallet deposit/withdrawal status\n api-keys Get API key list\n capabilities (alias) Server capabilities for agent planning (same as 'system capabilities')\n\nAccount Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n\nAudit Options:\n --limit <n> Number of log entries (default: 20)\n --tool <name> Filter by tool name\n --since <date> Show entries since date (ISO format)\n --level <level> Filter by log level (INFO, WARN, ERROR, DEBUG)\n\nExamples:\n bithumb account balance\n bithumb account order-chance --market KRW-BTC\n bithumb account audit --limit 10\n`;\n\nconst TRADE_HELP = `\nUsage: bithumb trade <command> [options]\n\nCommands:\n orders List orders\n get Get order details\n place Place a new order\n cancel Cancel an order\n batch-place --file <path> Place multiple orders from JSON file (max 20)\n batch-cancel Cancel multiple orders (max 30)\n\nTrade Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n --uuid <uuid> Order UUID\n --client-order-id <id> Client-assigned order ID\n --side <side> Order side: bid (buy) / ask (sell)\n --order-type <type> Order type: limit / price / market (canonical)\n --ord-type <type> (deprecated alias of --order-type)\n --price <price> Order price\n --volume <volume> Order volume\n --state <state> Filter by state: wait / watch / done / cancel\n --states <states> Filter by multiple states (comma-separated)\n --uuids <uuids> Filter by multiple UUIDs (comma-separated)\n --client-order-ids <ids> Filter by multiple client order IDs (comma-separated)\n --order-by <order> Sort order: asc / desc\n --page <n> Page number\n --limit <n> Results per page\n --file <path> JSON file path (batch-place only)\n\nExamples:\n bithumb trade orders --market KRW-BTC --state wait\n bithumb trade get --uuid abc-123\n bithumb trade place --market KRW-BTC --side bid --order-type limit --price 50000000 --volume 0.01\n bithumb trade cancel --uuid abc-123\n bithumb trade batch-place --file orders.json\n`;\n\nconst SETUP_HELP = `\nUsage: bithumb setup --client <client> [--profile <name>] [--modules <list>]\n\nConfigure MCP client integration for supported AI coding tools.\n\nOptions:\n --client <client> Target client: claude-desktop, cursor, windsurf, vscode, claude-code\n --profile <name> Config profile to use (default: \"default\")\n --modules <list> Comma-separated modules to enable\n\nExamples:\n bithumb setup --client claude-desktop\n bithumb setup --client cursor --modules market,account\n`;\n\nconst TWAP_HELP = `\nUsage: bithumb twap <command> [options]\n\nCommands:\n place Place a TWAP order\n orders List TWAP orders\n cancel Cancel a TWAP order\n\nTWAP Options:\n --market <market> Market identifier (e.g., KRW-BTC)\n --side <side> Order side: bid / ask\n --duration <seconds> Duration in seconds (300-43200)\n --frequency <seconds> Frequency: 5,15,20,30,60,120\n --price <price> Order price (required for bid)\n --volume <volume> Order volume (required for ask)\n --algo-order-id <id> TWAP order ID (for cancel)\n --state <state> Order state filter\n --next-key <key> Pagination cursor\n --limit <n> Results per page\n --uuids <uuids> Filter by TWAP order IDs (comma-separated)\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb twap place --market KRW-BTC --side bid --duration 3600 --frequency 60 --price 50000000\n bithumb twap orders --market KRW-BTC\n bithumb twap cancel --algo-order-id abc-123\n`;\n\nconst WITHDRAW_HELP = `\nUsage: bithumb withdraw <command> [options]\n\nCommands:\n chance Get withdrawal availability info\n get Get specific withdrawal\n list List coin withdrawals\n list-krw List KRW withdrawals\n coin Withdraw cryptocurrency (CAUTION)\n krw Withdraw KRW (CAUTION)\n cancel Cancel coin withdrawal\n addresses List allowed withdrawal addresses\n\nWithdraw Options:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n --amount <amount> Withdrawal amount\n --address <addr> Withdrawal address\n --secondary-address <addr> Secondary address (tag/memo)\n --exchange-name <name> Exchange name\n --receiver-type <type> Receiver type: personal / corporation\n --receiver-ko-name <name> Receiver Korean name\n --receiver-en-name <name> Receiver English name\n --receiver-corp-ko-name <name> Corporation Korean name\n --receiver-corp-en-name <name> Corporation English name\n --two-factor-type <type> 2FA type (kakao)\n --uuid <uuid> Withdrawal UUID\n --txids <txids> Transaction ID(s) (comma-separated for list)\n --uuids <uuids> Filter by UUIDs (comma-separated, for list)\n --withdrawal-id <id> Withdrawal ID (for cancel)\n --state <state> State filter (for list)\n --limit <n> Results per page (max 100)\n --page <n> Page number\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb withdraw chance --currency BTC --net-type BTC\n bithumb withdraw list --currency BTC\n bithumb withdraw addresses\n`;\n\nconst DEPOSIT_HELP = `\nUsage: bithumb deposit <command> [options]\n\nCommands:\n get Get specific deposit\n list List coin deposits\n list-krw List KRW deposits\n krw Request KRW deposit (CAUTION)\n generate-address Generate deposit address\n addresses List all deposit addresses\n address Get specific deposit address\n\nDeposit Options:\n --currency <code> Currency code (e.g., BTC)\n --net-type <type> Network type (e.g., BTC)\n --amount <amount> Deposit amount\n --two-factor-type <type> 2FA type (kakao)\n --uuid <uuid> Deposit UUID\n --txids <txids> Transaction ID(s) (comma-separated for list)\n --uuids <uuids> Filter by UUIDs (comma-separated, for list)\n --state <state> State filter (for list)\n --limit <n> Results per page (max 100)\n --page <n> Page number\n --order-by <order> Sort order: asc / desc\n\nExamples:\n bithumb deposit list --currency BTC\n bithumb deposit address --currency BTC --net-type BTC\n bithumb deposit addresses\n`;\n\nconst SYSTEM_HELP = `\nUsage: bithumb system <command> [options]\n\nCommands:\n capabilities Server capabilities and module availability for agent planning\n\nSystem Options:\n --json Output as JSON\n\nExamples:\n bithumb system capabilities\n bithumb system capabilities --json\n\nNotes:\n - 'bithumb account capabilities' is an alias for 'bithumb system capabilities'.\n - Use this command to discover which modules are enabled and which require auth.\n`;\n\nconst CONFIG_HELP = `\nUsage: bithumb config <command> [options]\n\nCommands:\n show Show current configuration\n init Create config file\n set <key> <value> Set a config value (access_key, secret_key, base_url, timeout_ms)\n add-profile <name> Add a new profile\n list-profiles List all profiles\n use <name> Set default profile\n path Show config file path\n\nOptions:\n --profile <name> Target profile (default: current default)\n\nExamples:\n bithumb config init\n bithumb config set access_key your_key --profile trading\n bithumb config use trading\n bithumb config list-profiles\n`;\n\nexport function printHelp(positionals: string[]): void {\n const module = positionals[0];\n switch (module) {\n case \"market\":\n outputLine(MARKET_HELP.trim());\n break;\n case \"account\":\n outputLine(ACCOUNT_HELP.trim());\n break;\n case \"trade\":\n outputLine(TRADE_HELP.trim());\n break;\n case \"twap\":\n outputLine(TWAP_HELP.trim());\n break;\n case \"withdraw\":\n outputLine(WITHDRAW_HELP.trim());\n break;\n case \"deposit\":\n outputLine(DEPOSIT_HELP.trim());\n break;\n case \"system\":\n outputLine(SYSTEM_HELP.trim());\n break;\n case \"setup\":\n outputLine(SETUP_HELP.trim());\n break;\n case \"config\":\n outputLine(CONFIG_HELP.trim());\n break;\n default:\n outputLine(GLOBAL_HELP.trim());\n break;\n }\n}\n","import {\n loadConfig,\n BithumbRestClient,\n createToolRunner,\n TradeLogger,\n checkForUpdates,\n runSetup,\n printSetupUsage,\n SUPPORTED_CLIENTS,\n} from \"@bithumb-tradekit/core\";\nimport type { ToolRunner, ClientId } from \"@bithumb-tradekit/core\";\nimport { parseCli } from \"./parser.js\";\nimport type { CliValues } from \"./parser.js\";\nimport { outputLine, errorLine, printJson, printKv } from \"./formatter.js\";\nimport { printHelp } from \"./help.js\";\nimport { CLI_VERSION } from \"./constants.js\";\n\nfunction wrapRunnerWithLogger(\n baseRunner: ToolRunner,\n logger: TradeLogger,\n): ToolRunner {\n return async (toolName, args) => {\n const start = Date.now();\n try {\n const result = await baseRunner(toolName, args);\n logger.logTool(\"info\", toolName, args, { status: \"ok\" }, Date.now() - start);\n return result;\n } catch (error) {\n logger.logTool(\"error\", toolName, args, error, Date.now() - start);\n throw error;\n }\n };\n}\n\nfunction handleSetup(argv: string[]): void {\n const idx = argv.indexOf(\"setup\");\n const rest = argv.slice(idx + 1);\n\n let client: string | undefined;\n let profile: string | undefined;\n let modules: string | undefined;\n\n for (let i = 0; i < rest.length; i++) {\n if (rest[i] === \"--client\" && rest[i + 1]) {\n client = rest[++i];\n } else if (rest[i] === \"--profile\" && rest[i + 1]) {\n profile = rest[++i];\n } else if (rest[i] === \"--modules\" && rest[i + 1]) {\n modules = rest[++i];\n } else if (rest[i] === \"--help\" || rest[i] === \"-h\") {\n printSetupUsage();\n return;\n }\n }\n\n if (!client || !SUPPORTED_CLIENTS.includes(client as ClientId)) {\n errorLine(`Error: --client is required. Supported: ${SUPPORTED_CLIENTS.join(\", \")}`);\n process.exitCode = 1;\n return;\n }\n\n runSetup({ client: client as ClientId, profile, modules });\n}\n\nasync function main(): Promise<void> {\n checkForUpdates(\"@bithumb-tradekit/cli\", CLI_VERSION);\n\n // 1. Setup subcommand (before parseCli)\n if (process.argv[2] === \"setup\") {\n handleSetup(process.argv);\n return;\n }\n\n // 2. Parse arguments\n const { values: v, positionals } = parseCli(process.argv.slice(2));\n\n if (v.version) {\n outputLine(CLI_VERSION);\n return;\n }\n\n if (v.help || positionals.length === 0) {\n printHelp(positionals);\n return;\n }\n\n const [module, action, ...rest] = positionals;\n const json = v.json ?? false;\n\n // 3. Config command (no auth needed, no runner needed)\n if (module === \"config\") {\n const { handleConfigCommand } = await import(\"./commands/config.js\");\n return handleConfigCommand(action, rest, v);\n }\n\n // 4. Load config + create runner\n const config = loadConfig({\n modules: v.modules,\n readOnly: v.readOnly,\n verbose: v.verbose,\n profile: v.profile,\n });\n const client = new BithumbRestClient(config);\n const baseRunner = createToolRunner(client, config);\n const logger = new TradeLogger(v.verbose ? \"debug\" : \"info\");\n const run = wrapRunnerWithLogger(baseRunner, logger);\n\n // 5. Diagnose (needs config but no auth)\n if (module === \"diagnose\") {\n const result = await run(\"system_diagnose\", {});\n const data = result.data ?? result;\n if (json) return printJson(data);\n printKv(data as Record<string, unknown>);\n return;\n }\n\n // 5b. System capabilities (no auth needed)\n // Accept both `system capabilities` (canonical) and `account capabilities` (alias)\n if (\n (module === \"system\" && action === \"capabilities\") ||\n (module === \"account\" && action === \"capabilities\")\n ) {\n const result = await run(\"system_get_capabilities\", {});\n const data = result.data ?? result;\n if (json) return printJson(data);\n printKv(data as Record<string, unknown>);\n return;\n }\n\n // 6. Private API auth guard\n const privateModules = new Set([\"account\", \"trade\", \"twap\", \"withdraw\", \"deposit\"]);\n if (privateModules.has(module) && !config.hasAuth) {\n errorLine(\n \"Error: API credentials required. Run 'bithumb setup' or configure ~/.bithumb/config.toml\",\n );\n process.exitCode = 1;\n return;\n }\n\n // 7. Module routing\n if (module === \"market\") {\n const { handleMarketCommand } = await import(\"./commands/market.js\");\n return handleMarketCommand(run, action, rest, v, json);\n }\n if (module === \"account\") {\n const { handleAccountCommand } = await import(\"./commands/account.js\");\n return handleAccountCommand(run, action, v, json);\n }\n if (module === \"trade\") {\n const { handleTradeCommand } = await import(\"./commands/trade.js\");\n return handleTradeCommand(run, action, v, json);\n }\n if (module === \"twap\") {\n const { handleTwapCommand } = await import(\"./commands/twap.js\");\n return handleTwapCommand(run, action, v, json);\n }\n if (module === \"withdraw\") {\n const { handleWithdrawCommand } = await import(\"./commands/withdraw.js\");\n return handleWithdrawCommand(run, action, v, json);\n }\n if (module === \"deposit\") {\n const { handleDepositCommand } = await import(\"./commands/deposit.js\");\n return handleDepositCommand(run, action, v, json);\n }\n\n errorLine(`Unknown command: ${module}. Run 'bithumb --help' for usage.`);\n process.exitCode = 1;\n}\n\nmain().catch((err) => {\n errorLine(`Fatal: ${err instanceof Error ? err.message : String(err)}`);\n process.exitCode = 1;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAO,IAAM,cAAc;;;ACG3B,IAAM,cAAc;AAAA,WACT,WAAW;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;AA6BtB,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAgCpB,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BrB,IAAM,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;AAqCnB,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAenB,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;AA4BlB,IAAM,gBAAgB;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;AAAA;AAAA;AAyCtB,IAAM,eAAe;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;AA+BrB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBpB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBb,SAAS,UAAU,aAA6B;AACrD,QAAM,SAAS,YAAY,CAAC;AAC5B,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,iBAAW,YAAY,KAAK,CAAC;AAC7B;AAAA,IACF,KAAK;AACH,iBAAW,aAAa,KAAK,CAAC;AAC9B;AAAA,IACF,KAAK;AACH,iBAAW,WAAW,KAAK,CAAC;AAC5B;AAAA,IACF,KAAK;AACH,iBAAW,UAAU,KAAK,CAAC;AAC3B;AAAA,IACF,KAAK;AACH,iBAAW,cAAc,KAAK,CAAC;AAC/B;AAAA,IACF,KAAK;AACH,iBAAW,aAAa,KAAK,CAAC;AAC9B;AAAA,IACF,KAAK;AACH,iBAAW,YAAY,KAAK,CAAC;AAC7B;AAAA,IACF,KAAK;AACH,iBAAW,WAAW,KAAK,CAAC;AAC5B;AAAA,IACF,KAAK;AACH,iBAAW,YAAY,KAAK,CAAC;AAC7B;AAAA,IACF;AACE,iBAAW,YAAY,KAAK,CAAC;AAC7B;AAAA,EACJ;AACF;;;AC5SA,SAAS,qBACP,YACA,QACY;AACZ,SAAO,OAAO,UAAU,SAAS;AAC/B,UAAM,QAAQ,KAAK,IAAI;AACvB,QAAI;AACF,YAAM,SAAS,MAAM,WAAW,UAAU,IAAI;AAC9C,aAAO,QAAQ,QAAQ,UAAU,MAAM,EAAE,QAAQ,KAAK,GAAG,KAAK,IAAI,IAAI,KAAK;AAC3E,aAAO;AAAA,IACT,SAAS,OAAO;AACd,aAAO,QAAQ,SAAS,UAAU,MAAM,OAAO,KAAK,IAAI,IAAI,KAAK;AACjE,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,YAAY,MAAsB;AACzC,QAAM,MAAM,KAAK,QAAQ,OAAO;AAChC,QAAM,OAAO,KAAK,MAAM,MAAM,CAAC;AAE/B,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAI,KAAK,CAAC,MAAM,cAAc,KAAK,IAAI,CAAC,GAAG;AACzC,eAAS,KAAK,EAAE,CAAC;AAAA,IACnB,WAAW,KAAK,CAAC,MAAM,eAAe,KAAK,IAAI,CAAC,GAAG;AACjD,gBAAU,KAAK,EAAE,CAAC;AAAA,IACpB,WAAW,KAAK,CAAC,MAAM,eAAe,KAAK,IAAI,CAAC,GAAG;AACjD,gBAAU,KAAK,EAAE,CAAC;AAAA,IACpB,WAAW,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,MAAM,MAAM;AACnD,sBAAgB;AAChB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,UAAU,CAAC,kBAAkB,SAAS,MAAkB,GAAG;AAC9D,cAAU,2CAA2C,kBAAkB,KAAK,IAAI,CAAC,EAAE;AACnF,YAAQ,WAAW;AACnB;AAAA,EACF;AAEA,WAAS,EAAE,QAA4B,SAAS,QAAQ,CAAC;AAC3D;AAEA,eAAe,OAAsB;AACnC,kBAAgB,yBAAyB,WAAW;AAGpD,MAAI,QAAQ,KAAK,CAAC,MAAM,SAAS;AAC/B,gBAAY,QAAQ,IAAI;AACxB;AAAA,EACF;AAGA,QAAM,EAAE,QAAQ,GAAG,YAAY,IAAI,SAAS,QAAQ,KAAK,MAAM,CAAC,CAAC;AAEjE,MAAI,EAAE,SAAS;AACb,eAAW,WAAW;AACtB;AAAA,EACF;AAEA,MAAI,EAAE,QAAQ,YAAY,WAAW,GAAG;AACtC,cAAU,WAAW;AACrB;AAAA,EACF;AAEA,QAAM,CAAC,QAAQ,QAAQ,GAAG,IAAI,IAAI;AAClC,QAAM,OAAO,EAAE,QAAQ;AAGvB,MAAI,WAAW,UAAU;AACvB,UAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,sBAAsB;AACnE,WAAO,oBAAoB,QAAQ,MAAM,CAAC;AAAA,EAC5C;AAGA,QAAM,SAAS,WAAW;AAAA,IACxB,SAAS,EAAE;AAAA,IACX,UAAU,EAAE;AAAA,IACZ,SAAS,EAAE;AAAA,IACX,SAAS,EAAE;AAAA,EACb,CAAC;AACD,QAAM,SAAS,IAAI,kBAAkB,MAAM;AAC3C,QAAM,aAAa,iBAAiB,QAAQ,MAAM;AAClD,QAAM,SAAS,IAAI,YAAY,EAAE,UAAU,UAAU,MAAM;AAC3D,QAAM,MAAM,qBAAqB,YAAY,MAAM;AAGnD,MAAI,WAAW,YAAY;AACzB,UAAM,SAAS,MAAM,IAAI,mBAAmB,CAAC,CAAC;AAC9C,UAAM,OAAO,OAAO,QAAQ;AAC5B,QAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,YAAQ,IAA+B;AACvC;AAAA,EACF;AAIA,MACG,WAAW,YAAY,WAAW,kBAClC,WAAW,aAAa,WAAW,gBACpC;AACA,UAAM,SAAS,MAAM,IAAI,2BAA2B,CAAC,CAAC;AACtD,UAAM,OAAO,OAAO,QAAQ;AAC5B,QAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,YAAQ,IAA+B;AACvC;AAAA,EACF;AAGA,QAAM,iBAAiB,oBAAI,IAAI,CAAC,WAAW,SAAS,QAAQ,YAAY,SAAS,CAAC;AAClF,MAAI,eAAe,IAAI,MAAM,KAAK,CAAC,OAAO,SAAS;AACjD;AAAA,MACE;AAAA,IACF;AACA,YAAQ,WAAW;AACnB;AAAA,EACF;AAGA,MAAI,WAAW,UAAU;AACvB,UAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,sBAAsB;AACnE,WAAO,oBAAoB,KAAK,QAAQ,MAAM,GAAG,IAAI;AAAA,EACvD;AACA,MAAI,WAAW,WAAW;AACxB,UAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,uBAAuB;AACrE,WAAO,qBAAqB,KAAK,QAAQ,GAAG,IAAI;AAAA,EAClD;AACA,MAAI,WAAW,SAAS;AACtB,UAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,qBAAqB;AACjE,WAAO,mBAAmB,KAAK,QAAQ,GAAG,IAAI;AAAA,EAChD;AACA,MAAI,WAAW,QAAQ;AACrB,UAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,oBAAoB;AAC/D,WAAO,kBAAkB,KAAK,QAAQ,GAAG,IAAI;AAAA,EAC/C;AACA,MAAI,WAAW,YAAY;AACzB,UAAM,EAAE,sBAAsB,IAAI,MAAM,OAAO,wBAAwB;AACvE,WAAO,sBAAsB,KAAK,QAAQ,GAAG,IAAI;AAAA,EACnD;AACA,MAAI,WAAW,WAAW;AACxB,UAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,uBAAuB;AACrE,WAAO,qBAAqB,KAAK,QAAQ,GAAG,IAAI;AAAA,EAClD;AAEA,YAAU,oBAAoB,MAAM,mCAAmC;AACvE,UAAQ,WAAW;AACrB;AAEA,KAAK,EAAE,MAAM,CAAC,QAAQ;AACpB,YAAU,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,EAAE;AACtE,UAAQ,WAAW;AACrB,CAAC;","names":[]}
|
|
@@ -59,7 +59,7 @@ async function handleMarketCommand(run, action, rest, v, json) {
|
|
|
59
59
|
case "fee-inout":
|
|
60
60
|
return cmdFeeInout(run, rest[0] ?? v.currency, json);
|
|
61
61
|
default:
|
|
62
|
-
errorLine(`Unknown market command: ${action}. Run 'bithumb
|
|
62
|
+
errorLine(`Unknown market command: ${action}. Run 'bithumb market --help' for usage.`);
|
|
63
63
|
process.exitCode = 1;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -82,7 +82,7 @@ async function cmdMarkets(run, opts) {
|
|
|
82
82
|
}
|
|
83
83
|
async function cmdTicker(run, markets, json) {
|
|
84
84
|
if (!markets) {
|
|
85
|
-
errorLine("Error: market argument required. Example: bithumb
|
|
85
|
+
errorLine("Error: market argument required. Example: bithumb market ticker KRW-BTC");
|
|
86
86
|
process.exitCode = 1;
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
@@ -104,7 +104,7 @@ async function cmdTicker(run, markets, json) {
|
|
|
104
104
|
}
|
|
105
105
|
async function cmdOrderbook(run, markets, json) {
|
|
106
106
|
if (!markets) {
|
|
107
|
-
errorLine("Error: market argument required. Example: bithumb
|
|
107
|
+
errorLine("Error: market argument required. Example: bithumb market orderbook KRW-BTC");
|
|
108
108
|
process.exitCode = 1;
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
@@ -133,7 +133,7 @@ async function cmdOrderbook(run, markets, json) {
|
|
|
133
133
|
}
|
|
134
134
|
async function cmdTrades(run, market, opts) {
|
|
135
135
|
if (!market) {
|
|
136
|
-
errorLine("Error: market argument required. Example: bithumb
|
|
136
|
+
errorLine("Error: market argument required. Example: bithumb market trades KRW-BTC");
|
|
137
137
|
process.exitCode = 1;
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
@@ -284,7 +284,7 @@ async function cmdNotices(run, opts) {
|
|
|
284
284
|
}
|
|
285
285
|
async function cmdFeeInout(run, currency, json) {
|
|
286
286
|
if (!currency) {
|
|
287
|
-
errorLine("Error: currency argument required. Example: bithumb
|
|
287
|
+
errorLine("Error: currency argument required. Example: bithumb market fee-inout BTC");
|
|
288
288
|
process.exitCode = 1;
|
|
289
289
|
return;
|
|
290
290
|
}
|
|
@@ -301,4 +301,4 @@ async function cmdFeeInout(run, currency, json) {
|
|
|
301
301
|
export {
|
|
302
302
|
handleMarketCommand
|
|
303
303
|
};
|
|
304
|
-
//# sourceMappingURL=market-
|
|
304
|
+
//# sourceMappingURL=market-V7L36QN3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/market.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleMarketCommand(\n run: ToolRunner,\n action: string,\n rest: string[],\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"markets\":\n return cmdMarkets(run, { isDetails: v.isDetails, json });\n case \"ticker\":\n return cmdTicker(run, rest[0] ?? v.market, json);\n case \"orderbook\":\n return cmdOrderbook(run, rest[0] ?? v.market, json);\n case \"trades\":\n return cmdTrades(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n cursor: v.cursor,\n daysAgo: toNumber(v.daysAgo),\n json,\n });\n case \"candles-minutes\":\n return cmdCandlesMinutes(run, rest[0] ?? v.market, {\n unit: toNumber(v.unit) ?? 1,\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"candles-days\":\n return cmdCandlesDays(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n convertingPriceUnit: v.convertingPriceUnit,\n json,\n });\n case \"candles-weeks\":\n return cmdCandlesWeeks(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"candles-months\":\n return cmdCandlesMonths(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"warnings\":\n return cmdWarnings(run, json);\n case \"notices\":\n return cmdNotices(run, { count: toNumber(v.count), json });\n case \"fee-inout\":\n return cmdFeeInout(run, rest[0] ?? v.currency, json);\n default:\n errorLine(`Unknown market command: ${action}. Run 'bithumb market --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdMarkets(\n run: ToolRunner,\n opts: { isDetails?: boolean; json: boolean },\n): Promise<void> {\n const result = await run(\"market_get_markets\", {\n ...(opts.isDetails !== undefined && { isDetails: opts.isDetails }),\n });\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No markets found\"); return; }\n printTable(items.map((m) => ({\n market: m[\"market\"],\n korean_name: m[\"korean_name\"],\n english_name: m[\"english_name\"],\n ...(opts.isDetails ? { market_warning: m[\"market_warning\"] ?? \"\" } : {}),\n })));\n}\n\nasync function cmdTicker(run: ToolRunner, markets: string | undefined, json: boolean): Promise<void> {\n if (!markets) { errorLine(\"Error: market argument required. Example: bithumb market ticker KRW-BTC\"); process.exitCode = 1; return; }\n const result = await run(\"market_get_ticker\", { markets });\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No ticker data\"); return; }\n printTable(items.map((t) => ({\n market: t[\"market\"],\n trade_price: t[\"trade_price\"],\n signed_change_rate: t[\"signed_change_rate\"],\n acc_trade_volume_24h: t[\"acc_trade_volume_24h\"],\n high_price: t[\"high_price\"],\n low_price: t[\"low_price\"],\n })));\n}\n\nasync function cmdOrderbook(run: ToolRunner, markets: string | undefined, json: boolean): Promise<void> {\n if (!markets) { errorLine(\"Error: market argument required. Example: bithumb market orderbook KRW-BTC\"); process.exitCode = 1; return; }\n const result = await run(\"market_get_orderbook\", { markets });\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No orderbook data\"); return; }\n for (const book of items) {\n outputLine(`\\n--- ${book[\"market\"]} ---`);\n outputLine(`Total Ask Size: ${book[\"total_ask_size\"]}`);\n outputLine(`Total Bid Size: ${book[\"total_bid_size\"]}`);\n const units = book[\"orderbook_units\"] as Record<string, unknown>[];\n if (units?.length) {\n printTable(units.slice(0, 10).map((u) => ({\n ask_price: u[\"ask_price\"],\n ask_size: u[\"ask_size\"],\n bid_price: u[\"bid_price\"],\n bid_size: u[\"bid_size\"],\n })));\n }\n }\n}\n\nasync function cmdTrades(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; cursor?: string; daysAgo?: number; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required. Example: bithumb market trades KRW-BTC\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n if (opts.cursor !== undefined) args.cursor = opts.cursor;\n if (opts.daysAgo !== undefined) args.daysAgo = opts.daysAgo;\n const result = await run(\"market_get_trades\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No trades found\"); return; }\n printTable(items.map((t) => ({\n trade_date_utc: t[\"trade_date_utc\"],\n trade_time_utc: t[\"trade_time_utc\"],\n trade_price: t[\"trade_price\"],\n trade_volume: t[\"trade_volume\"],\n ask_bid: t[\"ask_bid\"],\n })));\n}\n\nasync function cmdCandlesMinutes(\n run: ToolRunner,\n market: string | undefined,\n opts: { unit: number; count?: number; to?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market, unit: opts.unit };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n const result = await run(\"market_get_candles_minutes\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdCandlesDays(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; convertingPriceUnit?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n if (opts.convertingPriceUnit !== undefined) args.convertingPriceUnit = opts.convertingPriceUnit;\n const result = await run(\"market_get_candles_days\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdCandlesWeeks(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n const result = await run(\"market_get_candles_weeks\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdCandlesMonths(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n const result = await run(\"market_get_candles_months\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdWarnings(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"market_get_warnings\", {});\n const data = result.data;\n if (json) return printJson(data);\n const items = data as Record<string, unknown>[];\n if (!items?.length) { outputLine(\"No warnings found\"); return; }\n printTable(items);\n}\n\nasync function cmdNotices(run: ToolRunner, opts: { count?: number; json: boolean }): Promise<void> {\n const args: Record<string, unknown> = {};\n if (opts.count !== undefined) args.count = opts.count;\n const result = await run(\"market_get_notices\", args);\n const data = result.data;\n if (opts.json) return printJson(data);\n const items = data as Record<string, unknown>[];\n if (!items?.length) { outputLine(\"No notices found\"); return; }\n printTable(items);\n}\n\nasync function cmdFeeInout(run: ToolRunner, currency: string | undefined, json: boolean): Promise<void> {\n if (!currency) { errorLine(\"Error: currency argument required. Example: bithumb market fee-inout BTC\"); process.exitCode = 1; return; }\n const result = await run(\"market_get_fee_inout\", { currency });\n const data = result.data;\n if (json) return printJson(data);\n const items = data as Record<string, unknown>[];\n if (Array.isArray(items) && items.length) { printTable(items); return; }\n printJson(data);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -56,7 +56,7 @@ async function handleTradeCommand(run, action, v, json) {
|
|
|
56
56
|
case "batch-cancel":
|
|
57
57
|
return cmdBatchCancel(run, v, json);
|
|
58
58
|
default:
|
|
59
|
-
errorLine(`Unknown trade command: ${action}. Run 'bithumb
|
|
59
|
+
errorLine(`Unknown trade command: ${action}. Run 'bithumb trade --help' for usage.`);
|
|
60
60
|
process.exitCode = 1;
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -90,7 +90,7 @@ async function cmdOrders(run, opts) {
|
|
|
90
90
|
}
|
|
91
91
|
async function cmdGet(run, opts) {
|
|
92
92
|
if (!opts.uuid && !opts.clientOrderId) {
|
|
93
|
-
errorLine("Error: --uuid or --client-order-id is required. Example: bithumb
|
|
93
|
+
errorLine("Error: --uuid or --client-order-id is required. Example: bithumb trade get --uuid abc-123");
|
|
94
94
|
process.exitCode = 1;
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
@@ -105,7 +105,7 @@ async function cmdGet(run, opts) {
|
|
|
105
105
|
async function cmdPlace(run, opts) {
|
|
106
106
|
if (!opts.market || !opts.side || !opts.ordType) {
|
|
107
107
|
errorLine("Error: --market, --side, and --order-type are required.");
|
|
108
|
-
errorLine("Example: bithumb
|
|
108
|
+
errorLine("Example: bithumb trade place --market KRW-BTC --side bid --order-type limit --price 50000000 --volume 0.01");
|
|
109
109
|
errorLine("Note: --ord-type is accepted as a deprecated alias of --order-type.");
|
|
110
110
|
process.exitCode = 1;
|
|
111
111
|
return;
|
|
@@ -126,7 +126,7 @@ async function cmdPlace(run, opts) {
|
|
|
126
126
|
}
|
|
127
127
|
async function cmdCancel(run, opts) {
|
|
128
128
|
if (!opts.uuid && !opts.clientOrderId) {
|
|
129
|
-
errorLine("Error: --uuid or --client-order-id is required. Example: bithumb
|
|
129
|
+
errorLine("Error: --uuid or --client-order-id is required. Example: bithumb trade cancel --uuid abc-123");
|
|
130
130
|
process.exitCode = 1;
|
|
131
131
|
return;
|
|
132
132
|
}
|
|
@@ -142,7 +142,7 @@ async function cmdCancel(run, opts) {
|
|
|
142
142
|
async function cmdBatchPlace(run, v, json) {
|
|
143
143
|
if (!v.file) {
|
|
144
144
|
errorLine("Error: --file is required. Provide a JSON file with batch orders.");
|
|
145
|
-
errorLine("Example: bithumb
|
|
145
|
+
errorLine("Example: bithumb trade batch-place --file orders.json");
|
|
146
146
|
errorLine('File format: [{"market":"KRW-BTC","side":"bid","order_type":"limit","price":"50000000","volume":"0.01"}]');
|
|
147
147
|
process.exitCode = 1;
|
|
148
148
|
return;
|
|
@@ -218,7 +218,7 @@ async function cmdBatchCancel(run, v, json) {
|
|
|
218
218
|
if (v.uuids) args.order_ids = toArray(v.uuids);
|
|
219
219
|
if (v.clientOrderIds) args.client_order_ids = toArray(v.clientOrderIds);
|
|
220
220
|
if (!args.order_ids && !args.client_order_ids) {
|
|
221
|
-
errorLine("Error: --uuids or --client-order-ids required. Example: bithumb
|
|
221
|
+
errorLine("Error: --uuids or --client-order-ids required. Example: bithumb trade batch-cancel --uuids id1,id2");
|
|
222
222
|
process.exitCode = 1;
|
|
223
223
|
return;
|
|
224
224
|
}
|
|
@@ -230,4 +230,4 @@ async function cmdBatchCancel(run, v, json) {
|
|
|
230
230
|
export {
|
|
231
231
|
handleTradeCommand
|
|
232
232
|
};
|
|
233
|
-
//# sourceMappingURL=trade-
|
|
233
|
+
//# sourceMappingURL=trade-MDOYZ5BW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/trade.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport type { ToolRunner } from \"@bithumb-tradekit/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, { uuid: v.uuid, 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[\"uuid\"]}`);\n printKv(data);\n}\n\nasync function cmdCancel(\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 cancel --uuid abc-123\");\n process.exitCode = 1;\n return;\n }\n const args: Record<string, unknown> = {};\n if (opts.uuid) args.order_id = opts.uuid;\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[\"uuid\"] ?? opts.uuid ?? 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.uuids) args.order_ids = toArray(v.uuids);\n if (v.clientOrderIds) args.client_order_ids = toArray(v.clientOrderIds);\n if (!args.order_ids && !args.client_order_ids) {\n errorLine(\"Error: --uuids or --client-order-ids required. Example: bithumb trade batch-cancel --uuids 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":[]}
|
|
@@ -21,7 +21,7 @@ async function handleTwapCommand(run, action, v, json) {
|
|
|
21
21
|
case "cancel":
|
|
22
22
|
return cmdCancel(run, v, json);
|
|
23
23
|
default:
|
|
24
|
-
errorLine(`Unknown twap command: ${action}. Run 'bithumb
|
|
24
|
+
errorLine(`Unknown twap command: ${action}. Run 'bithumb twap --help' for usage.`);
|
|
25
25
|
process.exitCode = 1;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -63,7 +63,7 @@ async function cmdOrders(run, v, json) {
|
|
|
63
63
|
}
|
|
64
64
|
async function cmdCancel(run, v, json) {
|
|
65
65
|
if (!v.algoOrderId) {
|
|
66
|
-
errorLine("Error: --algo-order-id required. Example: bithumb
|
|
66
|
+
errorLine("Error: --algo-order-id required. Example: bithumb twap cancel --algo-order-id abc-123");
|
|
67
67
|
process.exitCode = 1;
|
|
68
68
|
return;
|
|
69
69
|
}
|
|
@@ -75,4 +75,4 @@ async function cmdCancel(run, v, json) {
|
|
|
75
75
|
export {
|
|
76
76
|
handleTwapCommand
|
|
77
77
|
};
|
|
78
|
-
//# sourceMappingURL=twap-
|
|
78
|
+
//# sourceMappingURL=twap-QGTXCV3U.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/twap.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber, toArray } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function 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 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 const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\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,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;AAChD,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,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":[]}
|
|
@@ -31,13 +31,13 @@ async function handleWithdrawCommand(run, action, v, json) {
|
|
|
31
31
|
case "addresses":
|
|
32
32
|
return cmdAddresses(run, json);
|
|
33
33
|
default:
|
|
34
|
-
errorLine(`Unknown withdraw command: ${action}. Run 'bithumb
|
|
34
|
+
errorLine(`Unknown withdraw command: ${action}. Run 'bithumb withdraw --help' for usage.`);
|
|
35
35
|
process.exitCode = 1;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
async function cmdChance(run, v, json) {
|
|
39
39
|
if (!v.currency || !v.netType) {
|
|
40
|
-
errorLine("Error: --currency and --net-type required. Example: bithumb
|
|
40
|
+
errorLine("Error: --currency and --net-type required. Example: bithumb withdraw chance --currency BTC --net-type BTC");
|
|
41
41
|
process.exitCode = 1;
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
@@ -48,7 +48,7 @@ async function cmdChance(run, v, json) {
|
|
|
48
48
|
}
|
|
49
49
|
async function cmdGet(run, v, json) {
|
|
50
50
|
if (!v.currency) {
|
|
51
|
-
errorLine("Error: --currency required. Example: bithumb
|
|
51
|
+
errorLine("Error: --currency required. Example: bithumb withdraw get --currency BTC --uuid abc-123");
|
|
52
52
|
process.exitCode = 1;
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
@@ -136,7 +136,7 @@ async function cmdKrw(run, v, json) {
|
|
|
136
136
|
}
|
|
137
137
|
async function cmdCancel(run, v, json) {
|
|
138
138
|
if (!v.withdrawalId) {
|
|
139
|
-
errorLine("Error: --withdrawal-id required. Example: bithumb
|
|
139
|
+
errorLine("Error: --withdrawal-id required. Example: bithumb withdraw cancel --withdrawal-id abc-123");
|
|
140
140
|
process.exitCode = 1;
|
|
141
141
|
return;
|
|
142
142
|
}
|
|
@@ -158,4 +158,4 @@ async function cmdAddresses(run, json) {
|
|
|
158
158
|
export {
|
|
159
159
|
handleWithdrawCommand
|
|
160
160
|
};
|
|
161
|
-
//# sourceMappingURL=withdraw-
|
|
161
|
+
//# sourceMappingURL=withdraw-PLP3ZC4Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/withdraw.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber, toArray } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function 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":[]}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/account.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleAccountCommand(\n run: ToolRunner,\n action: string,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"balance\":\n return cmdBalance(run, json);\n case \"order-chance\":\n return cmdOrderChance(run, v.market, json);\n case \"audit\":\n return cmdAudit(run, {\n limit: toNumber(v.limit),\n tool: v.tool,\n since: v.since,\n level: v.level,\n json,\n });\n case \"wallet-status\":\n return cmdWalletStatus(run, json);\n case \"api-keys\":\n return cmdApiKeys(run, json);\n default:\n errorLine(`Unknown account command: ${action}. Run 'bithumb-trade account --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdBalance(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"account_get_balance\", {});\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No balances found\"); return; }\n printTable(items.map((b) => ({\n currency: b[\"currency\"],\n balance: b[\"balance\"],\n locked: b[\"locked\"],\n avg_buy_price: b[\"avg_buy_price\"],\n unit_currency: b[\"unit_currency\"],\n })));\n}\n\nasync function cmdOrderChance(run: ToolRunner, market: string | undefined, json: boolean): Promise<void> {\n if (!market) {\n errorLine(\"Error: --market is required. Example: bithumb-trade account order-chance --market KRW-BTC\");\n process.exitCode = 1;\n return;\n }\n const result = await run(\"account_get_order_chance\", { market });\n const data = result.data as Record<string, unknown>;\n if (json) return printJson(data);\n printKv(data);\n}\n\nasync function cmdAudit(\n run: ToolRunner,\n opts: { limit?: number; tool?: string; since?: string; level?: string; json: boolean },\n): Promise<void> {\n const args: Record<string, unknown> = {};\n if (opts.limit !== undefined) args.limit = opts.limit;\n if (opts.tool !== undefined) args.tool = opts.tool;\n if (opts.since !== undefined) args.since = opts.since;\n if (opts.level !== undefined) args.level = opts.level;\n const result = await run(\"trade_get_history\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No audit entries found\"); return; }\n printTable(items.map((entry) => ({\n timestamp: entry[\"ts\"],\n level: entry[\"level\"],\n tool: entry[\"tool\"],\n message: entry[\"message\"],\n elapsed_ms: entry[\"elapsed\"],\n })));\n}\n\nasync function cmdWalletStatus(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"account_get_wallet_status\", {});\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 wallet status data\"); return; }\n printTable(items);\n}\n\nasync function cmdApiKeys(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"account_get_api_keys\", {});\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 API keys found\"); return; }\n printTable(items);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/config.ts"],"sourcesContent":["import {\n configFilePath,\n readFullConfig,\n writeFullConfig,\n} from \"@bithumb-tradekit/core\";\nimport type { BithumbTomlConfig } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printKv, printTable } from \"../formatter.js\";\nimport { existsSync, mkdirSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\n\nexport function handleConfigCommand(\n action: string,\n rest: string[],\n v: CliValues,\n): void {\n const json = v.json ?? false;\n switch (action) {\n case \"show\":\n return cmdConfigShow(json);\n case \"init\":\n return cmdConfigInit();\n case \"set\":\n return cmdConfigSet(rest[0], rest[1], v.profile);\n case \"add-profile\":\n return cmdConfigAddProfile(rest, v);\n case \"list-profiles\":\n return cmdConfigListProfiles(json);\n case \"use\":\n return cmdConfigUse(rest[0]);\n case \"path\":\n outputLine(configFilePath());\n return;\n default:\n if (!action) {\n return cmdConfigShow(json);\n }\n errorLine(`Unknown config command: ${action}. Available: show, init, set, add-profile, list-profiles, use, path`);\n process.exitCode = 1;\n }\n}\n\nfunction cmdConfigShow(json: boolean): void {\n const config = readFullConfig();\n if (json) return printJson(config);\n outputLine(`Config file: ${configFilePath()}`);\n if (config.default_profile) {\n outputLine(`Default profile: ${config.default_profile}`);\n }\n outputLine(\"\");\n const profileNames = Object.keys(config.profiles);\n if (profileNames.length === 0) {\n outputLine(\"No profiles configured. Run 'bithumb-trade config init' to create one.\");\n return;\n }\n for (const name of profileNames) {\n const p = config.profiles[name];\n outputLine(`[${name}]`);\n printKv({\n access_key: p.access_key ? `${p.access_key.slice(0, 8)}...` : \"(not set)\",\n secret_key: p.secret_key ? \"***\" : \"(not set)\",\n ...(p.base_url ? { base_url: p.base_url } : {}),\n ...(p.timeout_ms ? { timeout_ms: p.timeout_ms } : {}),\n });\n outputLine(\"\");\n }\n}\n\nfunction cmdConfigInit(): void {\n const path = configFilePath();\n if (existsSync(path)) {\n outputLine(`Config file already exists: ${path}`);\n outputLine(\"Use 'bithumb-trade config add-profile' to add a new profile.\");\n return;\n }\n const dir = dirname(path);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n const config: BithumbTomlConfig = {\n default_profile: \"default\",\n profiles: {\n default: {\n access_key: \"\",\n secret_key: \"\",\n },\n },\n };\n writeFullConfig(config);\n outputLine(`Config file created: ${path}`);\n outputLine(\"Edit it to add your API credentials.\");\n}\n\nfunction cmdConfigSet(key: string | undefined, value: string | undefined, profileName?: string): void {\n if (!key || value === undefined) {\n errorLine(\"Usage: bithumb-trade 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-trade 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-trade 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-trade 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/deposit.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport { BithumbApiError } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber, toArray } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleDepositCommand(\n run: ToolRunner,\n action: string,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"get\":\n return cmdGet(run, v, json);\n case \"list\":\n return cmdList(run, v, json);\n case \"list-krw\":\n return cmdListKrw(run, v, json);\n case \"krw\":\n return cmdKrw(run, v, json);\n case \"generate-address\":\n return cmdGenerateAddress(run, v, json);\n case \"addresses\":\n return cmdAddresses(run, json);\n case \"address\":\n return cmdAddress(run, v, json);\n default:\n errorLine(`Unknown deposit command: ${action}. Run 'bithumb-trade 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-trade deposit list --txids <txid1,txid2>\");\n process.exitCode = 1;\n return;\n }\n if (!v.currency) {\n errorLine(\"Error: --currency required. Example: bithumb-trade 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-trade deposit get --currency BTC --uuid abc-123\");\n errorLine(\"Tip: To search by txid, use 'bithumb-trade 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-trade 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-trade 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":";;;;;;;;;;;;;;;;;AAMA,eAAsB,qBACpB,KACA,QACA,GACA,MACe;AACf,UAAQ,QAAQ;AAAA,IACd,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,OAAO,KAAK,GAAG,IAAI;AAAA,IAC5B,KAAK;AACH,aAAO,mBAAmB,KAAK,GAAG,IAAI;AAAA,IACxC,KAAK;AACH,aAAO,aAAa,KAAK,IAAI;AAAA,IAC/B,KAAK;AACH,aAAO,WAAW,KAAK,GAAG,IAAI;AAAA,IAChC;AACE,gBAAU,4BAA4B,MAAM,iDAAiD;AAC7F,cAAQ,WAAW;AAAA,EACvB;AACF;AAEA,eAAe,OAAO,KAAiB,GAAc,MAA8B;AACjF,MAAI,EAAE,OAAO;AACX,cAAU,iEAAiE;AAC3E,cAAU,oDAAoD;AAC9D,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,MAAI,CAAC,EAAE,UAAU;AACf,cAAU,8FAA8F;AACxG,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,MAAI,CAAC,EAAE,MAAM;AACX,cAAU,4GAA4G;AACtH,cAAU,0EAA0E;AACpF,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,QAAM,OAAgC,EAAE,UAAU,EAAE,UAAU,MAAM,EAAE,KAAK;AAC3E,MAAI;AACF,UAAM,SAAS,MAAM,IAAI,eAAe,IAAI;AAC5C,UAAM,OAAO,OAAO;AACpB,QAAI,CAAC,QAAS,OAAO,SAAS,YAAY,OAAO,KAAK,IAAI,EAAE,WAAW,GAAI;AACzE,iBAAW,mBAAmB;AAC9B;AAAA,IACF;AACA,QAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,YAAQ,IAAI;AAAA,EACd,SAAS,KAAK;AAEZ,QAAI,eAAe,iBAAiB;AAClC,YAAM,UAAU,OAAO,IAAI,IAAI;AAC/B,YAAM,UAAU,IAAI,QAAQ;AAC5B,YAAM,iBAAiB;AACvB,YAAM,iBAAiB;AACvB,YAAM,gBACH,OAAO,SAAS,OAAO,KAAK,WAAW,OAAO,UAAU,OACzD,eAAe,KAAK,OAAO,KAC3B,eAAe,KAAK,IAAI,OAAO;AACjC,UAAI,eAAe;AACjB,kBAAU,gDAAgD,IAAI,IAAI,MAAM,IAAI,OAAO,EAAE;AACrF,gBAAQ,WAAW;AACnB;AAAA,MACF;AAEA,gBAAU,UAAU,IAAI,OAAO,EAAE;AACjC,cAAQ,WAAW;AACnB;AAAA,IACF;AACA,UAAM;AAAA,EACR;AACF;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,oBAAoB,IAAI;AACjD,QAAM,QAAQ,OAAO;AACrB,MAAI,KAAM,QAAO,UAAU,KAAK;AAChC,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,mBAAmB;AAAG;AAAA,EAAQ;AAC/D,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,wBAAwB,IAAI;AACrD,QAAM,QAAQ,OAAO;AACrB,MAAI,KAAM,QAAO,UAAU,KAAK;AAChC,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,uBAAuB;AAAG;AAAA,EAAQ;AACnE,aAAW,KAAK;AAClB;AAEA,eAAe,OAAO,KAAiB,GAAc,MAA8B;AACjF,MAAI,CAAC,EAAE,UAAU,CAAC,EAAE,eAAe;AACjC,cAAU,iDAAiD;AAC3D,cAAU,yDAAyD;AACnE,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,aAAW,0CAA0C;AACrD,QAAM,SAAS,MAAM,IAAI,eAAe,EAAE,QAAQ,EAAE,QAAQ,iBAAiB,EAAE,cAAc,CAAC;AAC9F,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAAI;AACd;AAEA,eAAe,mBAAmB,KAAiB,GAAc,MAA8B;AAC7F,MAAI,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS;AAC7B,cAAU,0HAA0H;AACpI,YAAQ,WAAW;AACnB;AAAA,EACF;AACA,QAAM,SAAS,MAAM,IAAI,4BAA4B,EAAE,UAAU,EAAE,UAAU,UAAU,EAAE,QAAQ,CAAC;AAClG,QAAM,OAAO,OAAO;AACpB,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAAI;AACd;AAEA,eAAe,aAAa,KAAiB,MAA8B;AACzE,QAAM,SAAS,MAAM,IAAI,yBAAyB,CAAC,CAAC;AACpD,QAAM,QAAQ,OAAO;AACrB,MAAI,KAAM,QAAO,UAAU,KAAK;AAChC,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,4BAA4B;AAAG;AAAA,EAAQ;AACxE,aAAW,KAAK;AAClB;AAEA,eAAe,WAAW,KAAiB,GAAc,MAA8B;AACrF,MAAI,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS;AAC7B,cAAU,iHAAiH;AAC3H,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;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/market.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleMarketCommand(\n run: ToolRunner,\n action: string,\n rest: string[],\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"markets\":\n return cmdMarkets(run, { isDetails: v.isDetails, json });\n case \"ticker\":\n return cmdTicker(run, rest[0] ?? v.market, json);\n case \"orderbook\":\n return cmdOrderbook(run, rest[0] ?? v.market, json);\n case \"trades\":\n return cmdTrades(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n cursor: v.cursor,\n daysAgo: toNumber(v.daysAgo),\n json,\n });\n case \"candles-minutes\":\n return cmdCandlesMinutes(run, rest[0] ?? v.market, {\n unit: toNumber(v.unit) ?? 1,\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"candles-days\":\n return cmdCandlesDays(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n convertingPriceUnit: v.convertingPriceUnit,\n json,\n });\n case \"candles-weeks\":\n return cmdCandlesWeeks(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"candles-months\":\n return cmdCandlesMonths(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"warnings\":\n return cmdWarnings(run, json);\n case \"notices\":\n return cmdNotices(run, { count: toNumber(v.count), json });\n case \"fee-inout\":\n return cmdFeeInout(run, rest[0] ?? v.currency, json);\n default:\n errorLine(`Unknown market command: ${action}. Run 'bithumb-trade 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-trade 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-trade 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-trade 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-trade 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/commands/trade.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport type { ToolRunner } from \"@bithumb-tradekit/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, { uuid: v.uuid, 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 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 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 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[\"uuid\"]}`);\n printKv(data);\n}\n\nasync function cmdCancel(\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 trade cancel --uuid abc-123\");\n process.exitCode = 1;\n return;\n }\n const args: Record<string, unknown> = {};\n if (opts.uuid) args.order_id = opts.uuid;\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[\"uuid\"] ?? opts.uuid ?? 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 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.uuids) args.order_ids = toArray(v.uuids);\n if (v.clientOrderIds) args.client_order_ids = toArray(v.clientOrderIds);\n if (!args.order_ids && !args.client_order_ids) {\n errorLine(\"Error: --uuids or --client-order-ids required. Example: bithumb-trade trade batch-cancel --uuids 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/commands/twap.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber, toArray } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function 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-trade 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 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 const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\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-trade 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,8CAA8C;AACvF,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,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;AAChD,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,UAAU,KAAiB,GAAc,MAA8B;AACpF,MAAI,CAAC,EAAE,aAAa;AAClB,cAAU,6FAA6F;AACvG,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/commands/withdraw.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-tradekit/core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber, toArray } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function 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-trade 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-trade 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-trade 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-trade 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,kDAAkD;AAC/F,cAAQ,WAAW;AAAA,EACvB;AACF;AAEA,eAAe,UAAU,KAAiB,GAAc,MAA8B;AACpF,MAAI,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS;AAC7B,cAAU,iHAAiH;AAC3H,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,+FAA+F;AACzG,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,iGAAiG;AAC3G,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":[]}
|