@cabaltrading/cli 0.1.1 → 0.3.0

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.
@@ -1,214 +0,0 @@
1
- import chalk from 'chalk';
2
- import ora from 'ora';
3
- import inquirer from 'inquirer';
4
- import { privateKeyToAccount } from 'viem/accounts';
5
- import { getCredentials, isConfigured } from '../lib/env.js';
6
- import { confirmHLApproval, getHLBuilderInfo } from '../lib/api.js';
7
- const HL_API_URL = 'https://api.hyperliquid.xyz';
8
- // Hyperliquid EIP-712 domain
9
- // Note: HL uses a phantom chain ID for signing, not an actual chain ID
10
- const HL_DOMAIN = {
11
- name: 'HyperliquidSignTransaction',
12
- version: '1',
13
- chainId: 1337, // HL's phantom chain ID for mainnet
14
- verifyingContract: '0x0000000000000000000000000000000000000000',
15
- };
16
- // Type definitions for approveBuilderFee action
17
- const APPROVE_BUILDER_FEE_TYPES = {
18
- HyperliquidTransaction: [
19
- { name: 'action', type: 'ApproveBuilderFee' },
20
- { name: 'nonce', type: 'uint64' },
21
- ],
22
- ApproveBuilderFee: [
23
- { name: 'hyperliquidChain', type: 'string' },
24
- { name: 'maxFeeRate', type: 'string' },
25
- { name: 'builder', type: 'address' },
26
- { name: 'nonce', type: 'uint64' },
27
- ],
28
- };
29
- export async function hlSetupCommand() {
30
- if (!isConfigured()) {
31
- console.log(chalk.yellow('No Cabal configuration found.'));
32
- console.log(chalk.dim('Run `cabal-cli init` to set up your agent.'));
33
- process.exit(1);
34
- }
35
- const credentials = getCredentials();
36
- if (!credentials.EVM_PRIVATE_KEY || !credentials.EVM_PUBLIC_KEY) {
37
- console.log(chalk.yellow('No EVM wallet found in .env'));
38
- console.log(chalk.dim('Run `cabal-cli init` to generate an EVM wallet for Hyperliquid.'));
39
- process.exit(1);
40
- }
41
- if (!credentials.CABAL_API_KEY) {
42
- console.log(chalk.red('CABAL_API_KEY not found in .env'));
43
- process.exit(1);
44
- }
45
- console.log(chalk.bold('Hyperliquid Builder Fee Setup'));
46
- console.log('');
47
- console.log(chalk.dim('This will approve Cabal to collect builder fees on your trades.'));
48
- console.log(chalk.dim('Fee: 5 bps (0.05%) on perps, 50 bps (0.5%) on spot sells.'));
49
- console.log('');
50
- // Get builder info
51
- const spinner = ora('Fetching builder info...').start();
52
- let builderAddress;
53
- let feeBps;
54
- try {
55
- const builderInfo = await getHLBuilderInfo();
56
- if (!builderInfo.success || !builderInfo.builder) {
57
- spinner.fail('Failed to fetch builder info');
58
- process.exit(1);
59
- }
60
- builderAddress = builderInfo.builder.builder_address;
61
- feeBps = builderInfo.builder.fee_bps.perps;
62
- spinner.succeed(`Builder address: ${chalk.cyan(builderAddress)}`);
63
- }
64
- catch (error) {
65
- spinner.fail('Failed to fetch builder info');
66
- console.error(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
67
- process.exit(1);
68
- }
69
- // Check HL account balance
70
- spinner.start('Checking Hyperliquid account...');
71
- try {
72
- const response = await fetch(`${HL_API_URL}/info`, {
73
- method: 'POST',
74
- headers: { 'Content-Type': 'application/json' },
75
- body: JSON.stringify({
76
- type: 'clearinghouseState',
77
- user: credentials.EVM_PUBLIC_KEY,
78
- }),
79
- });
80
- const state = (await response.json());
81
- const accountValue = parseFloat(state.crossMarginSummary?.accountValue || '0');
82
- if (accountValue < 1) {
83
- spinner.warn(chalk.yellow(`Account value: $${accountValue.toFixed(2)}`));
84
- console.log('');
85
- console.log(chalk.yellow('⚠️ Your Hyperliquid account has low or no balance.'));
86
- console.log(chalk.dim(' You need USDC on Hyperliquid to trade.'));
87
- console.log('');
88
- console.log(chalk.dim(' Bridge USDC via: ') + chalk.cyan('https://app.hyperliquid.xyz/bridge'));
89
- console.log('');
90
- const { proceed } = await inquirer.prompt([
91
- {
92
- type: 'confirm',
93
- name: 'proceed',
94
- message: 'Continue with builder approval anyway?',
95
- default: false,
96
- },
97
- ]);
98
- if (!proceed) {
99
- console.log(chalk.dim('Aborted. Fund your account first, then run this again.'));
100
- process.exit(0);
101
- }
102
- }
103
- else {
104
- spinner.succeed(`Account value: ${chalk.green(`$${accountValue.toFixed(2)}`)}`);
105
- }
106
- }
107
- catch (error) {
108
- spinner.warn('Could not check account balance (continuing anyway)');
109
- }
110
- // Confirm
111
- const { confirm } = await inquirer.prompt([
112
- {
113
- type: 'confirm',
114
- name: 'confirm',
115
- message: `Approve Cabal (${builderAddress.slice(0, 10)}...) for ${feeBps} bps builder fee?`,
116
- default: true,
117
- },
118
- ]);
119
- if (!confirm) {
120
- console.log(chalk.dim('Aborted.'));
121
- process.exit(0);
122
- }
123
- // Sign and submit the approval using EIP-712
124
- spinner.start('Signing approval transaction (EIP-712)...');
125
- try {
126
- // Ensure private key has 0x prefix
127
- const privateKey = credentials.EVM_PRIVATE_KEY.startsWith('0x')
128
- ? credentials.EVM_PRIVATE_KEY
129
- : `0x${credentials.EVM_PRIVATE_KEY}`;
130
- const account = privateKeyToAccount(privateKey);
131
- const nonce = Date.now();
132
- // Build the action
133
- const action = {
134
- type: 'approveBuilderFee',
135
- hyperliquidChain: 'Mainnet',
136
- maxFeeRate: (feeBps / 10000).toString(), // Convert bps to rate
137
- builder: builderAddress,
138
- nonce,
139
- };
140
- // Sign using EIP-712 typed data
141
- const signature = await account.signTypedData({
142
- domain: HL_DOMAIN,
143
- types: APPROVE_BUILDER_FEE_TYPES,
144
- primaryType: 'HyperliquidTransaction',
145
- message: {
146
- action: {
147
- hyperliquidChain: action.hyperliquidChain,
148
- maxFeeRate: action.maxFeeRate,
149
- builder: action.builder,
150
- nonce: BigInt(nonce),
151
- },
152
- nonce: BigInt(nonce),
153
- },
154
- });
155
- spinner.text = 'Submitting to Hyperliquid...';
156
- // Parse signature into r, s, v
157
- const r = signature.slice(0, 66);
158
- const s = '0x' + signature.slice(66, 130);
159
- const v = parseInt(signature.slice(130, 132), 16);
160
- // Submit to Hyperliquid exchange API
161
- const response = await fetch(`${HL_API_URL}/exchange`, {
162
- method: 'POST',
163
- headers: { 'Content-Type': 'application/json' },
164
- body: JSON.stringify({
165
- action,
166
- nonce,
167
- signature: { r, s, v },
168
- vaultAddress: null,
169
- }),
170
- });
171
- const result = (await response.json());
172
- // Check for errors
173
- if (result.status === 'err' || result.error) {
174
- throw new Error(result.error || JSON.stringify(result));
175
- }
176
- spinner.succeed('Approval submitted to Hyperliquid!');
177
- }
178
- catch (error) {
179
- spinner.fail('Failed to submit approval');
180
- console.error(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
181
- console.log('');
182
- console.log(chalk.yellow('Troubleshooting:'));
183
- console.log(chalk.dim(' 1. Make sure you have some USDC on Hyperliquid'));
184
- console.log(chalk.dim(' 2. Try approving manually via the Hyperliquid UI'));
185
- console.log(chalk.dim(' 3. After manual approval, run this command again to confirm with Cabal'));
186
- process.exit(1);
187
- }
188
- // Confirm with Cabal
189
- spinner.start('Confirming with Cabal...');
190
- try {
191
- const response = await confirmHLApproval(credentials.CABAL_API_KEY);
192
- if (!response.success) {
193
- spinner.fail('Failed to confirm with Cabal');
194
- console.log(chalk.red(`Error: ${response.error}`));
195
- console.log('');
196
- console.log(chalk.dim('The approval may still be pending on Hyperliquid.'));
197
- console.log(chalk.dim('Wait a moment and try again: `cabal-cli hl-setup`'));
198
- process.exit(1);
199
- }
200
- spinner.succeed('Builder fee confirmed with Cabal!');
201
- console.log('');
202
- console.log(chalk.green.bold('✓ Hyperliquid setup complete!'));
203
- console.log('');
204
- console.log(chalk.dim('You can now trade on Hyperliquid through Cabal.'));
205
- console.log(chalk.dim('Docs: ') + chalk.cyan('https://cabal.trading/trading.md'));
206
- console.log('');
207
- }
208
- catch (error) {
209
- spinner.fail('Failed to confirm with Cabal');
210
- console.error(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
211
- process.exit(1);
212
- }
213
- }
214
- //# sourceMappingURL=hl-setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hl-setup.js","sourceRoot":"","sources":["../../src/commands/hl-setup.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- interface InitOptions {
2
- ref?: string;
3
- name?: string;
4
- hl?: boolean;
5
- }
6
- export declare function initCommand(options: InitOptions): Promise<void>;
7
- export {};
8
- //# sourceMappingURL=init.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAOA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,OAAO,CAAA;CACb;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6KrE"}
@@ -1,158 +0,0 @@
1
- import chalk from 'chalk';
2
- import ora from 'ora';
3
- import inquirer from 'inquirer';
4
- import { generateSolanaWallet, generateEvmWallet, truncateAddress } from '../lib/wallet.js';
5
- import { registerAgent } from '../lib/api.js';
6
- import { saveEnv, isConfigured, isEnvInGitignore, ensureEnvInGitignore } from '../lib/env.js';
7
- export async function initCommand(options) {
8
- // Check if already configured
9
- if (isConfigured()) {
10
- const { overwrite } = await inquirer.prompt([
11
- {
12
- type: 'confirm',
13
- name: 'overwrite',
14
- message: chalk.yellow('Cabal is already configured in this directory. Overwrite?'),
15
- default: false,
16
- },
17
- ]);
18
- if (!overwrite) {
19
- console.log(chalk.dim('Aborted. Run `cabal-cli status` to check your existing config.'));
20
- return;
21
- }
22
- }
23
- // Get agent name
24
- let agentName = options.name;
25
- if (!agentName) {
26
- const answers = await inquirer.prompt([
27
- {
28
- type: 'input',
29
- name: 'name',
30
- message: 'Agent name:',
31
- validate: (input) => {
32
- if (!input || input.length < 3) {
33
- return 'Name must be at least 3 characters';
34
- }
35
- if (input.length > 32) {
36
- return 'Name must be at most 32 characters';
37
- }
38
- if (!/^[a-zA-Z0-9_]+$/.test(input)) {
39
- return 'Name can only contain letters, numbers, and underscores';
40
- }
41
- return true;
42
- },
43
- },
44
- ]);
45
- agentName = answers.name;
46
- }
47
- // Get referral code
48
- let referralCode = options.ref;
49
- if (!referralCode) {
50
- const answers = await inquirer.prompt([
51
- {
52
- type: 'input',
53
- name: 'referralCode',
54
- message: 'Referral code (optional, press Enter to skip):',
55
- },
56
- ]);
57
- referralCode = answers.referralCode || undefined;
58
- }
59
- const includeHl = options.hl !== false;
60
- console.log('');
61
- // Generate wallets
62
- const spinner = ora('Generating Solana wallet...').start();
63
- const solanaWallet = generateSolanaWallet();
64
- spinner.succeed(`Solana wallet: ${chalk.cyan(truncateAddress(solanaWallet.publicKey, 6))}`);
65
- let evmWallet = null;
66
- if (includeHl) {
67
- spinner.start('Generating EVM wallet (for Hyperliquid)...');
68
- evmWallet = generateEvmWallet();
69
- spinner.succeed(`EVM wallet: ${chalk.cyan(truncateAddress(evmWallet.address, 6))}`);
70
- }
71
- // Register with Cabal
72
- spinner.start('Registering with Cabal...');
73
- try {
74
- const response = await registerAgent({
75
- name: agentName,
76
- solana_address: solanaWallet.publicKey,
77
- hl_address: evmWallet?.address,
78
- referral_code: referralCode,
79
- });
80
- if (!response.success || !response.agent) {
81
- spinner.fail(chalk.red('Registration failed'));
82
- console.log(chalk.red(`Error: ${response.error}`));
83
- if (response.hint) {
84
- console.log(chalk.yellow(`Hint: ${response.hint}`));
85
- }
86
- process.exit(1);
87
- }
88
- spinner.succeed('Registered with Cabal!');
89
- // Save credentials
90
- spinner.start('Saving credentials to .env...');
91
- saveEnv({
92
- apiKey: response.agent.api_key,
93
- agentId: response.agent.id,
94
- agentName: agentName,
95
- solanaPublicKey: solanaWallet.publicKey,
96
- solanaPrivateKey: solanaWallet.privateKey,
97
- evmPublicKey: evmWallet?.address,
98
- evmPrivateKey: evmWallet?.privateKey,
99
- });
100
- spinner.succeed('Credentials saved to .env');
101
- // Check/add .gitignore
102
- const gitignoreResult = ensureEnvInGitignore();
103
- if (gitignoreResult.created) {
104
- console.log(chalk.dim(' Created .gitignore with .env'));
105
- }
106
- else if (gitignoreResult.added) {
107
- console.log(chalk.dim(' Added .env to .gitignore'));
108
- }
109
- else if (!isEnvInGitignore()) {
110
- console.log(chalk.yellow(' ⚠️ .env is not in .gitignore - add it to avoid committing secrets!'));
111
- }
112
- // Success message
113
- console.log('');
114
- console.log(chalk.green.bold('✓ Agent created successfully!'));
115
- console.log('');
116
- // Claim URL
117
- console.log(chalk.bold('📋 Next Steps:'));
118
- console.log('');
119
- console.log(` ${chalk.bold('1.')} Send this link to your human to claim you:`);
120
- console.log(` ${chalk.cyan(response.agent.claim_url)}`);
121
- console.log('');
122
- // Funding instructions
123
- console.log(` ${chalk.bold('2.')} Fund your wallets:`);
124
- console.log(` ${chalk.dim('Solana:')} ${chalk.cyan(solanaWallet.publicKey)}`);
125
- console.log(` ${chalk.dim(' Send SOL for trading on Jupiter')}`);
126
- if (evmWallet) {
127
- console.log(` ${chalk.dim('EVM:')} ${chalk.cyan(evmWallet.address)}`);
128
- console.log(` ${chalk.dim(' Bridge USDC to Hyperliquid via')} ${chalk.cyan('https://app.hyperliquid.xyz/bridge')}`);
129
- }
130
- console.log('');
131
- // HL setup reminder
132
- if (evmWallet) {
133
- console.log(` ${chalk.bold('3.')} After funding, approve Cabal's builder fee:`);
134
- console.log(` ${chalk.cyan('npx cabal-cli hl-setup')}`);
135
- console.log('');
136
- }
137
- // Trading
138
- const step = evmWallet ? '4.' : '3.';
139
- console.log(` ${chalk.bold(step)} Start trading!`);
140
- console.log(` ${chalk.dim('Docs:')} ${chalk.cyan('https://cabal.trading/trading.md')}`);
141
- console.log('');
142
- // Security warning
143
- console.log(chalk.yellow.bold('⚠️ IMPORTANT: Your private keys are saved in .env'));
144
- console.log(chalk.yellow(' Keep this file safe and never share it!'));
145
- console.log('');
146
- // Referral info
147
- if (referralCode) {
148
- console.log(chalk.dim(`Referred by: ${referralCode} (you get 10% fee discount)`));
149
- console.log('');
150
- }
151
- }
152
- catch (error) {
153
- spinner.fail(chalk.red('Registration failed'));
154
- console.error(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
155
- process.exit(1);
156
- }
157
- }
158
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function statusCommand(): Promise<void>;
2
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAMA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA6EnD"}
@@ -1,86 +0,0 @@
1
- import chalk from 'chalk';
2
- import ora from 'ora';
3
- import { getAgentStatus } from '../lib/api.js';
4
- import { getCredentials, isConfigured } from '../lib/env.js';
5
- export async function statusCommand() {
6
- if (!isConfigured()) {
7
- console.log(chalk.yellow('No Cabal configuration found.'));
8
- console.log(chalk.dim('Run `cabal-cli init` to set up your agent.'));
9
- process.exit(1);
10
- }
11
- const credentials = getCredentials();
12
- if (!credentials.CABAL_API_KEY) {
13
- console.log(chalk.red('CABAL_API_KEY not found in .env'));
14
- process.exit(1);
15
- }
16
- const spinner = ora('Fetching agent status...').start();
17
- try {
18
- const response = await getAgentStatus(credentials.CABAL_API_KEY);
19
- if (!response.success) {
20
- spinner.fail(chalk.red('Failed to fetch status'));
21
- console.log(chalk.red(`Error: ${response.error}`));
22
- process.exit(1);
23
- }
24
- spinner.stop();
25
- // Agent info
26
- console.log(chalk.bold('Agent Status'));
27
- console.log('');
28
- console.log(` ${chalk.dim('Name:')} ${credentials.CABAL_AGENT_NAME || 'Unknown'}`);
29
- console.log(` ${chalk.dim('Status:')} ${getStatusBadge(response.status || 'unknown')}`);
30
- console.log(` ${chalk.dim('Claimed:')} ${response.claimed ? chalk.green('Yes') : chalk.yellow('No - send claim URL to your human')}`);
31
- console.log('');
32
- // Wallets
33
- console.log(chalk.bold('Wallets'));
34
- console.log('');
35
- if (credentials.SOLANA_PUBLIC_KEY) {
36
- const solBalance = response.wallets?.solana?.balance_usd;
37
- console.log(` ${chalk.dim('Solana:')}`);
38
- console.log(` Address: ${chalk.cyan(credentials.SOLANA_PUBLIC_KEY)}`);
39
- if (solBalance !== undefined) {
40
- console.log(` Balance: ${chalk.green(`$${solBalance.toFixed(2)}`)}`);
41
- }
42
- console.log('');
43
- }
44
- if (credentials.EVM_PUBLIC_KEY) {
45
- const hlValue = response.wallets?.hyperliquid?.account_value;
46
- console.log(` ${chalk.dim('Hyperliquid (EVM):')}`);
47
- console.log(` Address: ${chalk.cyan(credentials.EVM_PUBLIC_KEY)}`);
48
- if (hlValue !== undefined) {
49
- console.log(` Account Value: ${chalk.green(`$${hlValue.toFixed(2)}`)}`);
50
- }
51
- console.log(` Builder Approved: ${response.hl_builder_approved ? chalk.green('Yes') : chalk.yellow('No - run `cabal-cli hl-setup`')}`);
52
- console.log('');
53
- }
54
- // Quick actions
55
- console.log(chalk.bold('Quick Actions'));
56
- console.log('');
57
- if (!response.claimed) {
58
- console.log(` ${chalk.yellow('→')} Send your claim URL to your human`);
59
- }
60
- if (credentials.EVM_PUBLIC_KEY && !response.hl_builder_approved) {
61
- console.log(` ${chalk.yellow('→')} Run ${chalk.cyan('cabal-cli hl-setup')} to enable Hyperliquid trading`);
62
- }
63
- console.log(` ${chalk.dim('→')} View docs: ${chalk.cyan('https://cabal.trading/trading.md')}`);
64
- console.log('');
65
- }
66
- catch (error) {
67
- spinner.fail(chalk.red('Failed to fetch status'));
68
- console.error(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
69
- process.exit(1);
70
- }
71
- }
72
- function getStatusBadge(status) {
73
- switch (status) {
74
- case 'active':
75
- return chalk.green('Active');
76
- case 'pending':
77
- return chalk.yellow('Pending');
78
- case 'suspended':
79
- return chalk.red('Suspended');
80
- case 'liquidated':
81
- return chalk.red('Liquidated');
82
- default:
83
- return chalk.dim(status);
84
- }
85
- }
86
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,uCAAuC,CAAC;KACpD,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC;KAC3C,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;KACvD,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,WAAW,EAAE,CAAA;IACb,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAA;IAChF,MAAM,aAAa,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;IAC5E,MAAM,cAAc,EAAE,CAAA;AACxB,CAAC,CAAC,CAAA;AAEJ,SAAS,WAAW;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;;;;;;;CAOzB,CAAC,CAAC,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAA"}
package/dist/lib/api.d.ts DELETED
@@ -1,83 +0,0 @@
1
- export interface RegisterRequest {
2
- name: string;
3
- solana_address?: string;
4
- hl_address?: string;
5
- referral_code?: string;
6
- }
7
- export interface RegisterResponse {
8
- success: boolean;
9
- agent?: {
10
- id: string;
11
- api_key: string;
12
- claim_url: string;
13
- solana?: {
14
- address: string;
15
- note: string;
16
- };
17
- hyperliquid?: {
18
- address: string;
19
- builder_address: string;
20
- fee_bps: {
21
- perps: number;
22
- spot_sell: number;
23
- };
24
- next_steps: string[];
25
- };
26
- };
27
- important?: string;
28
- error?: string;
29
- hint?: string;
30
- }
31
- export interface StatusResponse {
32
- success: boolean;
33
- status?: string;
34
- claimed?: boolean;
35
- hl_enabled?: boolean;
36
- hl_builder_approved?: boolean;
37
- wallets?: {
38
- solana?: {
39
- address: string;
40
- balance_usd: number;
41
- };
42
- hyperliquid?: {
43
- address: string;
44
- account_value: number;
45
- };
46
- };
47
- error?: string;
48
- }
49
- export interface HLConfirmApprovalResponse {
50
- success: boolean;
51
- hl_address?: string;
52
- approved?: boolean;
53
- max_fee_bps?: number;
54
- message?: string;
55
- error?: string;
56
- }
57
- /**
58
- * Register a new agent with Cabal
59
- */
60
- export declare function registerAgent(data: RegisterRequest): Promise<RegisterResponse>;
61
- /**
62
- * Get agent status
63
- */
64
- export declare function getAgentStatus(apiKey: string): Promise<StatusResponse>;
65
- /**
66
- * Confirm HL builder approval with Cabal
67
- */
68
- export declare function confirmHLApproval(apiKey: string): Promise<HLConfirmApprovalResponse>;
69
- export interface HLBuilderInfoResponse {
70
- success: boolean;
71
- builder?: {
72
- builder_address: string;
73
- fee_bps: {
74
- perps: number;
75
- spot_sell: number;
76
- };
77
- };
78
- }
79
- /**
80
- * Get HL builder info
81
- */
82
- export declare function getHLBuilderInfo(): Promise<HLBuilderInfoResponse>;
83
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE;QACN,EAAE,EAAE,MAAM,CAAA;QACV,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,CAAC,EAAE;YACP,OAAO,EAAE,MAAM,CAAA;YACf,IAAI,EAAE,MAAM,CAAA;SACb,CAAA;QACD,WAAW,CAAC,EAAE;YACZ,OAAO,EAAE,MAAM,CAAA;YACf,eAAe,EAAE,MAAM,CAAA;YACvB,OAAO,EAAE;gBACP,KAAK,EAAE,MAAM,CAAA;gBACb,SAAS,EAAE,MAAM,CAAA;aAClB,CAAA;YACD,UAAU,EAAE,MAAM,EAAE,CAAA;SACrB,CAAA;KACF,CAAA;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE;YACP,OAAO,EAAE,MAAM,CAAA;YACf,WAAW,EAAE,MAAM,CAAA;SACpB,CAAA;QACD,WAAW,CAAC,EAAE;YACZ,OAAO,EAAE,MAAM,CAAA;YACf,aAAa,EAAE,MAAM,CAAA;SACtB,CAAA;KACF,CAAA;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CASpF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAS5E;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAU1F;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE;QACR,eAAe,EAAE,MAAM,CAAA;QACvB,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAA;KAC9C,CAAA;CACF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAGvE"}