@123456btc/123456btc-cli 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/README.md +182 -39
  2. package/README.zh-CN.md +78 -0
  3. package/dist/api/client.d.ts +4 -0
  4. package/dist/api/client.d.ts.map +1 -1
  5. package/dist/api/client.js +74 -16
  6. package/dist/api/client.js.map +1 -1
  7. package/dist/api/provider.d.ts +163 -0
  8. package/dist/api/provider.d.ts.map +1 -0
  9. package/dist/api/provider.js +123 -0
  10. package/dist/api/provider.js.map +1 -0
  11. package/dist/api/signal-crypto.d.ts +17 -0
  12. package/dist/api/signal-crypto.d.ts.map +1 -0
  13. package/dist/api/signal-crypto.js +48 -0
  14. package/dist/api/signal-crypto.js.map +1 -0
  15. package/dist/api/signals.d.ts +47 -0
  16. package/dist/api/signals.d.ts.map +1 -0
  17. package/dist/api/signals.js +34 -0
  18. package/dist/api/signals.js.map +1 -0
  19. package/dist/api/strategy-stream.d.ts +59 -0
  20. package/dist/api/strategy-stream.d.ts.map +1 -0
  21. package/dist/api/strategy-stream.js +136 -0
  22. package/dist/api/strategy-stream.js.map +1 -0
  23. package/dist/api/strategy.d.ts +66 -20
  24. package/dist/api/strategy.d.ts.map +1 -1
  25. package/dist/api/strategy.js +15 -18
  26. package/dist/api/strategy.js.map +1 -1
  27. package/dist/api/token-manager.d.ts +37 -0
  28. package/dist/api/token-manager.d.ts.map +1 -0
  29. package/dist/api/token-manager.js +191 -0
  30. package/dist/api/token-manager.js.map +1 -0
  31. package/dist/api/wallet.d.ts +38 -0
  32. package/dist/api/wallet.d.ts.map +1 -0
  33. package/dist/api/wallet.js +23 -0
  34. package/dist/api/wallet.js.map +1 -0
  35. package/dist/cli.js +12 -2
  36. package/dist/cli.js.map +1 -1
  37. package/dist/commands/auth.d.ts.map +1 -1
  38. package/dist/commands/auth.js +149 -3
  39. package/dist/commands/auth.js.map +1 -1
  40. package/dist/commands/health.d.ts +3 -0
  41. package/dist/commands/health.d.ts.map +1 -0
  42. package/dist/commands/health.js +77 -0
  43. package/dist/commands/health.js.map +1 -0
  44. package/dist/commands/install.d.ts.map +1 -1
  45. package/dist/commands/install.js +127 -24
  46. package/dist/commands/install.js.map +1 -1
  47. package/dist/commands/provider.d.ts +3 -0
  48. package/dist/commands/provider.d.ts.map +1 -0
  49. package/dist/commands/provider.js +371 -0
  50. package/dist/commands/provider.js.map +1 -0
  51. package/dist/commands/signals.d.ts +3 -0
  52. package/dist/commands/signals.d.ts.map +1 -0
  53. package/dist/commands/signals.js +104 -0
  54. package/dist/commands/signals.js.map +1 -0
  55. package/dist/commands/strategy.d.ts.map +1 -1
  56. package/dist/commands/strategy.js +147 -59
  57. package/dist/commands/strategy.js.map +1 -1
  58. package/dist/commands/tier.d.ts +3 -0
  59. package/dist/commands/tier.d.ts.map +1 -0
  60. package/dist/commands/tier.js +105 -0
  61. package/dist/commands/tier.js.map +1 -0
  62. package/dist/commands/vault.d.ts +7 -0
  63. package/dist/commands/vault.d.ts.map +1 -0
  64. package/dist/commands/vault.js +377 -0
  65. package/dist/commands/vault.js.map +1 -0
  66. package/dist/commands/wallet.d.ts +3 -0
  67. package/dist/commands/wallet.d.ts.map +1 -0
  68. package/dist/commands/wallet.js +74 -0
  69. package/dist/commands/wallet.js.map +1 -0
  70. package/dist/config.d.ts +1 -0
  71. package/dist/config.d.ts.map +1 -1
  72. package/dist/config.js +16 -2
  73. package/dist/config.js.map +1 -1
  74. package/dist/index.d.ts +12 -4
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +22 -6
  77. package/dist/index.js.map +1 -1
  78. package/dist/providers/executor.d.ts +55 -20
  79. package/dist/providers/executor.d.ts.map +1 -1
  80. package/dist/providers/executor.js +260 -58
  81. package/dist/providers/executor.js.map +1 -1
  82. package/dist/providers/risk.d.ts +17 -0
  83. package/dist/providers/risk.d.ts.map +1 -0
  84. package/dist/providers/risk.js +67 -0
  85. package/dist/providers/risk.js.map +1 -0
  86. package/dist/providers/state.d.ts +30 -0
  87. package/dist/providers/state.d.ts.map +1 -0
  88. package/dist/providers/state.js +190 -0
  89. package/dist/providers/state.js.map +1 -0
  90. package/dist/types/strategy.d.ts +65 -1
  91. package/dist/types/strategy.d.ts.map +1 -1
  92. package/dist/types/strategy.js +1 -0
  93. package/dist/types/strategy.js.map +1 -1
  94. package/dist/utils/auth.d.ts +1 -0
  95. package/dist/utils/auth.d.ts.map +1 -1
  96. package/dist/utils/device.d.ts +13 -0
  97. package/dist/utils/device.d.ts.map +1 -0
  98. package/dist/utils/device.js +104 -0
  99. package/dist/utils/device.js.map +1 -0
  100. package/dist/vault/backends/file.d.ts +15 -0
  101. package/dist/vault/backends/file.d.ts.map +1 -0
  102. package/dist/vault/backends/file.js +39 -0
  103. package/dist/vault/backends/file.js.map +1 -0
  104. package/dist/vault/backends/os-keychain.d.ts +13 -0
  105. package/dist/vault/backends/os-keychain.d.ts.map +1 -0
  106. package/dist/vault/backends/os-keychain.js +60 -0
  107. package/dist/vault/backends/os-keychain.js.map +1 -0
  108. package/dist/vault/backends/os-secret.d.ts +13 -0
  109. package/dist/vault/backends/os-secret.d.ts.map +1 -0
  110. package/dist/vault/backends/os-secret.js +57 -0
  111. package/dist/vault/backends/os-secret.js.map +1 -0
  112. package/dist/vault/backends/os-win-cred.d.ts +13 -0
  113. package/dist/vault/backends/os-win-cred.d.ts.map +1 -0
  114. package/dist/vault/backends/os-win-cred.js +76 -0
  115. package/dist/vault/backends/os-win-cred.js.map +1 -0
  116. package/dist/vault/crypto.d.ts +49 -0
  117. package/dist/vault/crypto.d.ts.map +1 -0
  118. package/dist/vault/crypto.js +122 -0
  119. package/dist/vault/crypto.js.map +1 -0
  120. package/dist/vault/index.d.ts +88 -0
  121. package/dist/vault/index.d.ts.map +1 -0
  122. package/dist/vault/index.js +276 -0
  123. package/dist/vault/index.js.map +1 -0
  124. package/dist/vault/storage.d.ts +14 -0
  125. package/dist/vault/storage.d.ts.map +1 -0
  126. package/dist/vault/storage.js +68 -0
  127. package/dist/vault/storage.js.map +1 -0
  128. package/dist/vault/types.d.ts +41 -0
  129. package/dist/vault/types.d.ts.map +1 -0
  130. package/dist/vault/types.js +6 -0
  131. package/dist/vault/types.js.map +1 -0
  132. package/package.json +5 -2
@@ -4,10 +4,11 @@ exports.createStrategyCommand = createStrategyCommand;
4
4
  const commander_1 = require("commander");
5
5
  const client_1 = require("../api/client");
6
6
  const strategy_1 = require("../api/strategy");
7
+ const signals_1 = require("../api/signals");
8
+ const strategy_stream_1 = require("../api/strategy-stream");
7
9
  const auth_1 = require("../utils/auth");
8
10
  function createStrategyCommand(program) {
9
11
  const strategyCmd = new commander_1.Command('strategy');
10
- // Helper to get authenticated client
11
12
  function getClient() {
12
13
  const creds = (0, auth_1.checkAuth)();
13
14
  return new client_1.ApiClient(creds.baseUrl, creds.apiKey);
@@ -15,104 +16,148 @@ function createStrategyCommand(program) {
15
16
  // List strategies
16
17
  strategyCmd
17
18
  .command('list')
18
- .description('List available strategies')
19
- .option('--tier <tier>', 'Filter by tier')
20
- .option('--limit <number>', 'Limit results', '10')
19
+ .description('List available strategies (filtered by your BBT balance)')
20
+ .option('--status <status>', 'Filter by status', 'live')
21
+ .option('--market <market_type>', 'Filter by market type: crypto, stock, commodity, futures, forex')
22
+ .option('--min-bbt <number>', 'Filter by minimum BBT tier')
23
+ .option('--limit <number>', 'Limit results', '20')
21
24
  .action(async (options) => {
22
25
  const client = getClient();
23
26
  const strategyApi = new strategy_1.StrategyApi(client);
24
27
  const response = await strategyApi.list({
25
- tier: options.tier,
28
+ status: options.status,
29
+ market_type: options.market,
30
+ min_bbt_tier: options.minBbt ? parseInt(options.minBbt) : undefined,
26
31
  limit: parseInt(options.limit),
27
32
  });
28
33
  if (response.success && response.data) {
29
34
  console.log('Available Strategies:');
30
- console.log('='.repeat(60));
31
- response.data.forEach((strategy) => {
32
- console.log(` ${strategy.id}`);
35
+ console.log('='.repeat(70));
36
+ console.log(`Your BBT Balance: ${response.data.user_bbt}`);
37
+ console.log('');
38
+ if (response.data.strategies.length === 0) {
39
+ console.log('No strategies available. Increase your BBT balance to unlock more.');
40
+ return;
41
+ }
42
+ response.data.strategies.forEach((strategy) => {
43
+ const pricing = strategy.pricing_model === 'free'
44
+ ? 'Free'
45
+ : strategy.pricing_model === 'daily_bbt'
46
+ ? `${strategy.price_per_day} BBT/day`
47
+ : `${strategy.price_per_signal} BBT/signal`;
48
+ console.log(` ${strategy.id}${strategy.subscribed ? ' [SUBSCRIBED]' : ''}`);
33
49
  console.log(` Name: ${strategy.name}`);
34
- console.log(` Version: ${strategy.version}`);
35
- console.log(` Tier: ${strategy.requiredTier || 'any'}`);
36
- console.log(` Gas Estimate: ${strategy.gasEstimate || 'N/A'}`);
50
+ console.log(` Provider: ${strategy.provider_name || 'N/A'}`);
51
+ console.log(` Market: ${strategy.market_type}${strategy.exchange ? ` (${strategy.exchange})` : ''}`);
52
+ console.log(` Symbol: ${strategy.symbol_pattern || 'N/A'}`);
53
+ console.log(` Pricing: ${pricing}`);
54
+ console.log(` Min BBT Tier: ${strategy.min_bbt_tier}`);
37
55
  console.log('');
38
56
  });
57
+ console.log(`Total: ${response.data.total}`);
39
58
  }
40
59
  else {
41
60
  console.error('Error:', response.error?.message);
42
61
  }
43
62
  });
44
- // Dispatch strategy
63
+ // Get strategy details
45
64
  strategyCmd
46
- .command('dispatch <strategyId>')
47
- .description('Dispatch a strategy for local execution')
48
- .option('--param <key=value>', 'Strategy parameter (can be used multiple times)', (value, acc) => {
49
- const [key, val] = value.split('=');
50
- return { ...acc, [key]: val };
51
- }, {})
52
- .action(async (strategyId, options) => {
65
+ .command('show <strategyId>')
66
+ .description('Show strategy details')
67
+ .action(async (strategyId) => {
53
68
  const client = getClient();
54
69
  const strategyApi = new strategy_1.StrategyApi(client);
55
- // Get strategy details first
56
- const details = await strategyApi.get(strategyId);
57
- if (!details.success) {
58
- console.error('Strategy not found:', details.error?.message);
59
- return;
60
- }
61
- // Dispatch
62
- const response = await strategyApi.dispatch({
63
- strategyId,
64
- params: options.param,
65
- });
70
+ const response = await strategyApi.get(strategyId);
66
71
  if (response.success && response.data) {
67
- console.log('✓ Strategy dispatched:');
68
- console.log(` Dispatch ID: ${response.data.dispatchId}`);
69
- console.log(` Status: ${response.data.status}`);
70
- if (response.data.estimatedDuration) {
71
- console.log(` Estimated Duration: ${response.data.estimatedDuration}s`);
72
+ const s = response.data;
73
+ console.log('Strategy Details:');
74
+ console.log('='.repeat(60));
75
+ console.log(` ID: ${s.id}`);
76
+ console.log(` Name: ${s.name}`);
77
+ console.log(` Provider: ${s.provider_name || 'N/A'}`);
78
+ console.log(` Description: ${s.description || 'N/A'}`);
79
+ console.log(` Market: ${s.market_type || 'N/A'}`);
80
+ console.log(` Exchange: ${s.exchange || 'N/A'}`);
81
+ console.log(` Symbol: ${s.symbol_pattern || 'N/A'}`);
82
+ console.log(` Status: ${s.status}`);
83
+ console.log(` Pricing Model: ${s.pricing_model}`);
84
+ console.log(` Price/Day: ${s.price_per_day} BBT`);
85
+ console.log(` Price/Signal: ${s.price_per_signal} BBT`);
86
+ console.log(` Min BBT Tier: ${s.min_bbt_tier}`);
87
+ console.log(` Your BBT: ${s.user_bbt}`);
88
+ console.log(` Accessible: ${s.accessible ? 'Yes' : 'No'}`);
89
+ if (s.my_subscription) {
90
+ console.log(` Subscribed: Yes (since ${new Date(s.my_subscription.subscribed_at).toISOString()})`);
72
91
  }
73
92
  }
74
93
  else {
75
- console.error('Dispatch failed:', response.error?.message);
94
+ console.error('Error:', response.error?.message);
76
95
  }
77
96
  });
78
- // Status
97
+ // Subscribe to strategy
79
98
  strategyCmd
80
- .command('status <dispatchId>')
81
- .description('Check strategy execution status')
82
- .action(async (dispatchId) => {
99
+ .command('subscribe <strategyId>')
100
+ .description('Subscribe to a strategy')
101
+ .option('--billing-model <model>', 'Billing model: daily_bbt or per_signal_bbt', 'daily_bbt')
102
+ .action(async (strategyId, options) => {
83
103
  const client = getClient();
84
104
  const strategyApi = new strategy_1.StrategyApi(client);
85
- const response = await strategyApi.getStatus(dispatchId);
105
+ console.log(`Subscribing to strategy ${strategyId} (billing: ${options.billingModel})...`);
106
+ const response = await strategyApi.subscribe(strategyId, options.billingModel);
86
107
  if (response.success && response.data) {
87
- console.log('Strategy Status:');
88
- console.log(` Dispatch ID: ${response.data.dispatchId}`);
108
+ console.log(' Subscribed successfully');
109
+ console.log(` Subscription ID: ${response.data.subscription_id}`);
89
110
  console.log(` Status: ${response.data.status}`);
90
- console.log(` Progress: ${response.data.progress || 0}%`);
91
- console.log(` Gas Used: ${response.data.gasUsed || 0}`);
92
- console.log(` Updated: ${response.data.updatedAt}`);
111
+ }
112
+ else {
113
+ console.error('Subscription failed:', response.error?.message);
114
+ if (response.error?.code === 'INSUFFICIENT_BALANCE') {
115
+ console.error('Deposit BBT to subscribe to this strategy.');
116
+ }
117
+ }
118
+ });
119
+ // Unsubscribe from strategy
120
+ strategyCmd
121
+ .command('unsubscribe <strategyId>')
122
+ .description('Unsubscribe from a strategy')
123
+ .action(async (strategyId) => {
124
+ const client = getClient();
125
+ const strategyApi = new strategy_1.StrategyApi(client);
126
+ const response = await strategyApi.unsubscribe(strategyId);
127
+ if (response.success && response.data) {
128
+ console.log('✓ Unsubscribed successfully');
93
129
  }
94
130
  else {
95
131
  console.error('Error:', response.error?.message);
96
132
  }
97
133
  });
98
- // History
134
+ // My subscriptions
99
135
  strategyCmd
100
- .command('history')
101
- .description('Show strategy execution history')
102
- .option('--limit <number>', 'Limit results', '10')
103
- .action(async (options) => {
136
+ .command('my')
137
+ .description('Show my strategy subscriptions')
138
+ .action(async () => {
104
139
  const client = getClient();
105
140
  const strategyApi = new strategy_1.StrategyApi(client);
106
- const response = await strategyApi.getHistory({
107
- limit: parseInt(options.limit),
108
- });
141
+ const response = await strategyApi.mySubscriptions();
109
142
  if (response.success && response.data) {
110
- console.log('Execution History:');
143
+ console.log('My Subscriptions:');
111
144
  console.log('='.repeat(60));
112
- response.data.forEach((status) => {
113
- console.log(` ${status.dispatchId}: ${status.status}`);
114
- console.log(` Updated: ${status.updatedAt}`);
115
- console.log(` Gas Used: ${status.gasUsed || 0}`);
145
+ if (response.data.subscriptions.length === 0) {
146
+ console.log('No active subscriptions.');
147
+ return;
148
+ }
149
+ response.data.subscriptions.forEach((sub) => {
150
+ const pricing = sub.pricing_model === 'free'
151
+ ? 'Free'
152
+ : sub.pricing_model === 'daily_bbt'
153
+ ? `${sub.price_per_day} BBT/day`
154
+ : `${sub.price_per_signal} BBT/signal`;
155
+ console.log(` ${sub.strategy_id} — ${sub.name}`);
156
+ console.log(` Pricing: ${pricing}`);
157
+ console.log(` Subscribed: ${new Date(sub.subscribed_at).toISOString()}`);
158
+ if (sub.next_bill_at) {
159
+ console.log(` Next Bill: ${new Date(sub.next_bill_at).toISOString()}`);
160
+ }
116
161
  console.log('');
117
162
  });
118
163
  }
@@ -120,6 +165,49 @@ function createStrategyCommand(program) {
120
165
  console.error('Error:', response.error?.message);
121
166
  }
122
167
  });
168
+ // Stream strategy signals via WebSocket
169
+ strategyCmd
170
+ .command('stream <strategyId>')
171
+ .description('Stream strategy signals in real-time via WebSocket')
172
+ .option('--no-ack', 'Disable auto-acknowledge (signals will not be charged)')
173
+ .action(async (strategyId, options) => {
174
+ const client = getClient();
175
+ const signalsApi = new signals_1.SignalsApi(client);
176
+ const stream = new strategy_stream_1.StrategyStream(client, { autoAck: options.ack !== false });
177
+ stream.setAckApi(signalsApi);
178
+ stream.onSignal((signal) => {
179
+ if (signal.type === 'connected') {
180
+ console.log(`[Connected] Strategy: ${signal.strategy_id} | Symbol: ${signal.symbol}`);
181
+ return;
182
+ }
183
+ if (signal.type === 'signal') {
184
+ const ts = signal.timestamp ? new Date(signal.timestamp).toISOString() : 'N/A';
185
+ const arrow = signal.decision === 'long' ? '▲' : signal.decision === 'short' ? '▼' : '—';
186
+ console.log(`\n[${ts}] ${arrow} ${signal.decision?.toUpperCase()} ${signal.symbol}`);
187
+ console.log(` Price: ${signal.price} EMA14: ${signal.ema14} Confidence: ${signal.confidence}%`);
188
+ if (stream.isConnected()) {
189
+ console.log(' → Auto-acknowledged');
190
+ }
191
+ }
192
+ });
193
+ stream.onError((err) => {
194
+ console.error('[Stream Error]', err.message);
195
+ });
196
+ stream.onClose(() => {
197
+ console.log('[Stream] Connection closed');
198
+ });
199
+ console.log(`Connecting to strategy stream: ${strategyId}...`);
200
+ const result = await stream.connect(strategyId);
201
+ if (!result.success || !result.data) {
202
+ console.error('Failed to connect:', result.error?.message);
203
+ process.exit(1);
204
+ }
205
+ console.log(`WebSocket URL: ${result.data.ws_url}`);
206
+ console.log(`Pricing: ${result.data.pricing_model}${result.data.price_per_signal > 0 ? ` (${result.data.price_per_signal} BBT/signal)` : ''}`);
207
+ console.log('Press Ctrl+C to stop\n');
208
+ // Keep process alive
209
+ process.stdin.resume();
210
+ });
123
211
  program.addCommand(strategyCmd);
124
212
  }
125
213
  //# sourceMappingURL=strategy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../src/commands/strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../src/commands/strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createTierCommand(program: Command): void;
3
+ //# sourceMappingURL=tier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tier.d.ts","sourceRoot":"","sources":["../../src/commands/tier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,QA0GjD"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTierCommand = createTierCommand;
4
+ const commander_1 = require("commander");
5
+ const client_1 = require("../api/client");
6
+ const auth_1 = require("../api/auth");
7
+ const wallet_1 = require("../api/wallet");
8
+ const auth_2 = require("../utils/auth");
9
+ function createTierCommand(program) {
10
+ const tierCmd = new commander_1.Command('tier');
11
+ function getClient() {
12
+ const creds = (0, auth_2.checkAuth)();
13
+ return new client_1.ApiClient(creds.baseUrl, creds.apiKey);
14
+ }
15
+ // Status command
16
+ tierCmd
17
+ .command('status')
18
+ .description('Show current BBT tier and quota')
19
+ .action(async () => {
20
+ const client = getClient();
21
+ const authApi = new auth_1.AuthApi(client);
22
+ const walletApi = new wallet_1.WalletApi(client);
23
+ const [tierResponse, walletResponse] = await Promise.all([
24
+ authApi.verifyKey(),
25
+ walletApi.getWallet(),
26
+ ]);
27
+ if (tierResponse.success && tierResponse.data) {
28
+ console.log('BBT Tier Status:');
29
+ console.log('='.repeat(50));
30
+ console.log(` Tier: ${tierResponse.data.tier}`);
31
+ console.log(` Level: ${tierResponse.data.level}`);
32
+ console.log(` Daily Limit: ${tierResponse.data.dailyStrategyLimit}`);
33
+ console.log(` Used Today: ${tierResponse.data.usedToday}`);
34
+ console.log(` Remaining Today: ${tierResponse.data.dailyStrategyLimit - tierResponse.data.usedToday}`);
35
+ if (walletResponse.success && walletResponse.data) {
36
+ console.log('');
37
+ console.log(' BBT Balance:');
38
+ console.log(` Platform: ${walletResponse.data.platform_bbt}`);
39
+ if (walletResponse.data.wallet) {
40
+ console.log(` On-chain: ${walletResponse.data.wallet.bbt_balance}`);
41
+ }
42
+ }
43
+ if (tierResponse.data.permissions?.length) {
44
+ console.log('');
45
+ console.log(' Permissions:');
46
+ tierResponse.data.permissions.forEach((perm) => {
47
+ console.log(` - ${perm}`);
48
+ });
49
+ }
50
+ }
51
+ else {
52
+ console.error('Error fetching tier info:', tierResponse.error?.message);
53
+ }
54
+ });
55
+ // Check command
56
+ tierCmd
57
+ .command('check <tier>')
58
+ .description('Check if current tier meets requirement')
59
+ .action(async (requiredTier) => {
60
+ const client = getClient();
61
+ const authApi = new auth_1.AuthApi(client);
62
+ const tierResponse = await authApi.verifyKey();
63
+ if (!tierResponse.success || !tierResponse.data) {
64
+ console.error('Error:', tierResponse.error?.message);
65
+ return;
66
+ }
67
+ const currentTier = tierResponse.data.tier;
68
+ const tierLevels = {
69
+ bronze: 1,
70
+ silver: 2,
71
+ gold: 3,
72
+ diamond: 4,
73
+ };
74
+ const currentLevel = tierLevels[currentTier] || 0;
75
+ const requiredLevel = tierLevels[requiredTier] || 0;
76
+ if (currentLevel >= requiredLevel) {
77
+ console.log(`✓ Current tier (${currentTier}) meets requirement: ${requiredTier}`);
78
+ }
79
+ else {
80
+ console.log(`✗ Current tier (${currentTier}) below requirement: ${requiredTier}`);
81
+ console.log(` Need more BBT balance to upgrade tier.`);
82
+ }
83
+ });
84
+ // Remaining command
85
+ tierCmd
86
+ .command('remaining')
87
+ .description('Show remaining daily signal quota')
88
+ .action(async () => {
89
+ const client = getClient();
90
+ const authApi = new auth_1.AuthApi(client);
91
+ const tierResponse = await authApi.verifyKey();
92
+ if (tierResponse.success && tierResponse.data) {
93
+ const remaining = tierResponse.data.dailyStrategyLimit - tierResponse.data.usedToday;
94
+ console.log('Daily Signal Quota:');
95
+ console.log(` Limit: ${tierResponse.data.dailyStrategyLimit}`);
96
+ console.log(` Used: ${tierResponse.data.usedToday}`);
97
+ console.log(` Remaining: ${remaining}`);
98
+ }
99
+ else {
100
+ console.error('Error:', tierResponse.error?.message);
101
+ }
102
+ });
103
+ program.addCommand(tierCmd);
104
+ }
105
+ //# sourceMappingURL=tier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tier.js","sourceRoot":"","sources":["../../src/commands/tier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Vault CLI commands
3
+ * 123456btc-cli vault <subcommand>
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare function registerVaultCommands(program: Command): void;
7
+ //# sourceMappingURL=vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../src/commands/vault.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8W5D"}