@cabaltrading/cli 0.2.0 → 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.
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;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,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,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAA;IAC7E,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAA;AAC/B,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,102 +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
- verification_code?: string;
14
- tweet_template?: string;
15
- referral_url?: string;
16
- expires_at?: string;
17
- solana?: {
18
- address: string;
19
- note: string;
20
- };
21
- hyperliquid?: {
22
- address: string;
23
- builder_address: string;
24
- fee_bps: {
25
- perps: number;
26
- spot_sell: number;
27
- };
28
- next_steps: string[];
29
- };
30
- };
31
- important?: string;
32
- error?: string;
33
- hint?: string;
34
- }
35
- export interface VerifyTweetResponse {
36
- success: boolean;
37
- message?: string;
38
- agent?: {
39
- id: string;
40
- name: string;
41
- claimed_by: string;
42
- };
43
- error?: string;
44
- hint?: string;
45
- }
46
- export interface StatusResponse {
47
- success: boolean;
48
- status?: string;
49
- claimed?: boolean;
50
- hl_enabled?: boolean;
51
- hl_builder_approved?: boolean;
52
- wallets?: {
53
- solana?: {
54
- address: string;
55
- balance_usd: number;
56
- };
57
- hyperliquid?: {
58
- address: string;
59
- account_value: number;
60
- };
61
- };
62
- error?: string;
63
- }
64
- export interface HLConfirmApprovalResponse {
65
- success: boolean;
66
- hl_address?: string;
67
- approved?: boolean;
68
- max_fee_bps?: number;
69
- message?: string;
70
- error?: string;
71
- }
72
- /**
73
- * Register a new agent with Cabal
74
- */
75
- export declare function registerAgent(data: RegisterRequest): Promise<RegisterResponse>;
76
- /**
77
- * Get agent status
78
- */
79
- export declare function getAgentStatus(apiKey: string): Promise<StatusResponse>;
80
- /**
81
- * Confirm HL builder approval with Cabal
82
- */
83
- export declare function confirmHLApproval(apiKey: string): Promise<HLConfirmApprovalResponse>;
84
- export interface HLBuilderInfoResponse {
85
- success: boolean;
86
- builder?: {
87
- builder_address: string;
88
- fee_bps: {
89
- perps: number;
90
- spot_sell: number;
91
- };
92
- };
93
- }
94
- /**
95
- * Get HL builder info
96
- */
97
- export declare function getHLBuilderInfo(): Promise<HLBuilderInfoResponse>;
98
- /**
99
- * Verify agent claim via tweet
100
- */
101
- export declare function verifyTweet(apiKey: string, tweetUrl: string): Promise<VerifyTweetResponse>;
102
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
package/dist/lib/api.js DELETED
@@ -1,74 +0,0 @@
1
- const API_BASE = process.env.CABAL_API_URL || 'https://cabal.trading/api/v1';
2
- async function handleResponse(response) {
3
- if (!response.ok) {
4
- let errorMessage = `HTTP ${response.status}`;
5
- try {
6
- const data = await response.json();
7
- errorMessage = data.error || data.message || errorMessage;
8
- }
9
- catch {
10
- // Response wasn't JSON
11
- }
12
- throw new Error(errorMessage);
13
- }
14
- return response.json();
15
- }
16
- /**
17
- * Register a new agent with Cabal
18
- */
19
- export async function registerAgent(data) {
20
- const response = await fetch(`${API_BASE}/agents/register`, {
21
- method: 'POST',
22
- headers: { 'Content-Type': 'application/json' },
23
- body: JSON.stringify(data),
24
- });
25
- // Registration returns success: false for validation errors, so don't throw
26
- return response.json();
27
- }
28
- /**
29
- * Get agent status
30
- */
31
- export async function getAgentStatus(apiKey) {
32
- const response = await fetch(`${API_BASE}/agents/me`, {
33
- headers: {
34
- 'Authorization': `Bearer ${apiKey}`,
35
- 'Content-Type': 'application/json',
36
- },
37
- });
38
- return handleResponse(response);
39
- }
40
- /**
41
- * Confirm HL builder approval with Cabal
42
- */
43
- export async function confirmHLApproval(apiKey) {
44
- const response = await fetch(`${API_BASE}/hyperliquid/confirm-approval`, {
45
- method: 'POST',
46
- headers: {
47
- 'Authorization': `Bearer ${apiKey}`,
48
- 'Content-Type': 'application/json',
49
- },
50
- });
51
- return handleResponse(response);
52
- }
53
- /**
54
- * Get HL builder info
55
- */
56
- export async function getHLBuilderInfo() {
57
- const response = await fetch(`${API_BASE}/hyperliquid/builder-info`);
58
- return handleResponse(response);
59
- }
60
- /**
61
- * Verify agent claim via tweet
62
- */
63
- export async function verifyTweet(apiKey, tweetUrl) {
64
- const response = await fetch(`${API_BASE}/claim/verify-tweet`, {
65
- method: 'POST',
66
- headers: {
67
- 'Authorization': `Bearer ${apiKey}`,
68
- 'Content-Type': 'application/json',
69
- },
70
- body: JSON.stringify({ tweet_url: tweetUrl }),
71
- });
72
- return handleResponse(response);
73
- }
74
- //# sourceMappingURL=api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,8BAA8B,CAAA;AAE5E,KAAK,UAAU,cAAc,CAAI,QAAkB;IACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,YAAY,GAAG,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAA;QAC5C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0C,CAAA;YAC1E,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,YAAY,CAAA;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAA;AACtC,CAAC;AA8ED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAqB;IACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,kBAAkB,EAAE;QAC1D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAA;IAEF,4EAA4E;IAC5E,OAAO,QAAQ,CAAC,IAAI,EAA+B,CAAA;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc;IACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,YAAY,EAAE;QACpD,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,MAAM,EAAE;YACnC,cAAc,EAAE,kBAAkB;SACnC;KACF,CAAC,CAAA;IAEF,OAAO,cAAc,CAAiB,QAAQ,CAAC,CAAA;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc;IACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,+BAA+B,EAAE;QACvE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,MAAM,EAAE;YACnC,cAAc,EAAE,kBAAkB;SACnC;KACF,CAAC,CAAA;IAEF,OAAO,cAAc,CAA4B,QAAQ,CAAC,CAAA;AAC5D,CAAC;AAUD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,2BAA2B,CAAC,CAAA;IACpE,OAAO,cAAc,CAAwB,QAAQ,CAAC,CAAA;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,QAAgB;IAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,qBAAqB,EAAE;QAC7D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,MAAM,EAAE;YACnC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;KAC9C,CAAC,CAAA;IAEF,OAAO,cAAc,CAAsB,QAAQ,CAAC,CAAA;AACtD,CAAC"}
package/dist/lib/env.d.ts DELETED
@@ -1,45 +0,0 @@
1
- export interface CabalEnv {
2
- CABAL_API_KEY?: string;
3
- CABAL_AGENT_ID?: string;
4
- CABAL_AGENT_NAME?: string;
5
- SOLANA_PUBLIC_KEY?: string;
6
- SOLANA_PRIVATE_KEY?: string;
7
- EVM_PUBLIC_KEY?: string;
8
- EVM_PRIVATE_KEY?: string;
9
- }
10
- /**
11
- * Load existing .env file
12
- */
13
- export declare function loadEnv(): CabalEnv;
14
- /**
15
- * Check if Cabal is already configured
16
- */
17
- export declare function isConfigured(): boolean;
18
- /**
19
- * Save credentials to .env file
20
- */
21
- export declare function saveEnv(credentials: {
22
- apiKey: string;
23
- agentId: string;
24
- agentName: string;
25
- solanaPublicKey?: string;
26
- solanaPrivateKey?: string;
27
- evmPublicKey?: string;
28
- evmPrivateKey?: string;
29
- }): void;
30
- /**
31
- * Get credentials from env
32
- */
33
- export declare function getCredentials(): CabalEnv;
34
- /**
35
- * Check if .env is in .gitignore
36
- */
37
- export declare function isEnvInGitignore(): boolean;
38
- /**
39
- * Add .env to .gitignore if it exists
40
- */
41
- export declare function ensureEnvInGitignore(): {
42
- added: boolean;
43
- created: boolean;
44
- };
45
- //# sourceMappingURL=env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,QAAQ,CASlC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAGtC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,WAAW,EAAE;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GAAG,IAAI,CAqDP;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAgBzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAkB1C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAmB3E"}
package/dist/lib/env.js DELETED
@@ -1,128 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import dotenv from 'dotenv';
4
- const ENV_FILE = '.env';
5
- const GITIGNORE_FILE = '.gitignore';
6
- /**
7
- * Load existing .env file
8
- */
9
- export function loadEnv() {
10
- const envPath = path.resolve(process.cwd(), ENV_FILE);
11
- if (fs.existsSync(envPath)) {
12
- const result = dotenv.config({ path: envPath });
13
- return (result.parsed || {});
14
- }
15
- return {};
16
- }
17
- /**
18
- * Check if Cabal is already configured
19
- */
20
- export function isConfigured() {
21
- const env = loadEnv();
22
- return !!env.CABAL_API_KEY;
23
- }
24
- /**
25
- * Save credentials to .env file
26
- */
27
- export function saveEnv(credentials) {
28
- const envPath = path.resolve(process.cwd(), ENV_FILE);
29
- // Load existing env to preserve other variables
30
- let existingContent = '';
31
- if (fs.existsSync(envPath)) {
32
- existingContent = fs.readFileSync(envPath, 'utf-8');
33
- // Remove old Cabal-related lines
34
- const cabalKeys = [
35
- 'CABAL_API_KEY',
36
- 'CABAL_AGENT_ID',
37
- 'CABAL_AGENT_NAME',
38
- 'SOLANA_PUBLIC_KEY',
39
- 'SOLANA_PRIVATE_KEY',
40
- 'EVM_PUBLIC_KEY',
41
- 'EVM_PRIVATE_KEY',
42
- ];
43
- const lines = existingContent.split('\n').filter(line => {
44
- const key = line.split('=')[0]?.trim();
45
- return !cabalKeys.includes(key);
46
- });
47
- existingContent = lines.join('\n').trim();
48
- if (existingContent)
49
- existingContent += '\n\n';
50
- }
51
- // Build new Cabal section
52
- let cabalSection = `# Cabal Agent Credentials
53
- # Generated by cabal-cli - DO NOT SHARE THESE!
54
- CABAL_API_KEY=${credentials.apiKey}
55
- CABAL_AGENT_ID=${credentials.agentId}
56
- CABAL_AGENT_NAME=${credentials.agentName}
57
- `;
58
- if (credentials.solanaPublicKey && credentials.solanaPrivateKey) {
59
- cabalSection += `
60
- # Solana Wallet (for Jupiter swaps on Solana)
61
- SOLANA_PUBLIC_KEY=${credentials.solanaPublicKey}
62
- SOLANA_PRIVATE_KEY=${credentials.solanaPrivateKey}
63
- `;
64
- }
65
- if (credentials.evmPublicKey && credentials.evmPrivateKey) {
66
- cabalSection += `
67
- # EVM Wallet (for Hyperliquid perps/spot)
68
- EVM_PUBLIC_KEY=${credentials.evmPublicKey}
69
- EVM_PRIVATE_KEY=${credentials.evmPrivateKey}
70
- `;
71
- }
72
- fs.writeFileSync(envPath, existingContent + cabalSection);
73
- }
74
- /**
75
- * Get credentials from env
76
- */
77
- export function getCredentials() {
78
- // First try process.env (for already loaded vars)
79
- const fromProcess = {
80
- CABAL_API_KEY: process.env.CABAL_API_KEY,
81
- CABAL_AGENT_ID: process.env.CABAL_AGENT_ID,
82
- CABAL_AGENT_NAME: process.env.CABAL_AGENT_NAME,
83
- SOLANA_PUBLIC_KEY: process.env.SOLANA_PUBLIC_KEY,
84
- SOLANA_PRIVATE_KEY: process.env.SOLANA_PRIVATE_KEY,
85
- EVM_PUBLIC_KEY: process.env.EVM_PUBLIC_KEY,
86
- EVM_PRIVATE_KEY: process.env.EVM_PRIVATE_KEY,
87
- };
88
- // Then try loading from .env file
89
- const fromFile = loadEnv();
90
- return { ...fromFile, ...fromProcess };
91
- }
92
- /**
93
- * Check if .env is in .gitignore
94
- */
95
- export function isEnvInGitignore() {
96
- const gitignorePath = path.resolve(process.cwd(), GITIGNORE_FILE);
97
- if (!fs.existsSync(gitignorePath)) {
98
- return false;
99
- }
100
- const content = fs.readFileSync(gitignorePath, 'utf-8');
101
- const lines = content.split('\n').map(line => line.trim());
102
- // Check for common .env patterns
103
- return lines.some(line => line === '.env' ||
104
- line === '.env*' ||
105
- line === '.env.local' ||
106
- line === '*.env' ||
107
- line.startsWith('.env'));
108
- }
109
- /**
110
- * Add .env to .gitignore if it exists
111
- */
112
- export function ensureEnvInGitignore() {
113
- const gitignorePath = path.resolve(process.cwd(), GITIGNORE_FILE);
114
- if (!fs.existsSync(gitignorePath)) {
115
- // Create .gitignore with .env
116
- fs.writeFileSync(gitignorePath, '.env\n');
117
- return { added: true, created: true };
118
- }
119
- if (isEnvInGitignore()) {
120
- return { added: false, created: false };
121
- }
122
- // Append .env to existing .gitignore
123
- const content = fs.readFileSync(gitignorePath, 'utf-8');
124
- const newContent = content.endsWith('\n') ? `${content}.env\n` : `${content}\n.env\n`;
125
- fs.writeFileSync(gitignorePath, newContent);
126
- return { added: true, created: false };
127
- }
128
- //# sourceMappingURL=env.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- export interface SolanaWallet {
2
- publicKey: string;
3
- privateKey: string;
4
- }
5
- export interface EvmWallet {
6
- address: string;
7
- privateKey: string;
8
- }
9
- /**
10
- * Generate a new Solana keypair
11
- */
12
- export declare function generateSolanaWallet(): SolanaWallet;
13
- /**
14
- * Generate a new EVM wallet (for Hyperliquid)
15
- */
16
- export declare function generateEvmWallet(): EvmWallet;
17
- /**
18
- * Validate a Solana public key
19
- */
20
- export declare function isValidSolanaAddress(address: string): boolean;
21
- /**
22
- * Validate an EVM address
23
- */
24
- export declare function isValidEvmAddress(address: string): boolean;
25
- /**
26
- * Truncate address for display
27
- */
28
- export declare function truncateAddress(address: string, chars?: number): string;
29
- //# sourceMappingURL=wallet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/lib/wallet.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,YAAY,CAMnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,SAAS,CAM7C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,MAAM,CAGlE"}
@@ -1,50 +0,0 @@
1
- import { Keypair } from '@solana/web3.js';
2
- import { Wallet } from 'ethers';
3
- import bs58 from 'bs58';
4
- /**
5
- * Generate a new Solana keypair
6
- */
7
- export function generateSolanaWallet() {
8
- const keypair = Keypair.generate();
9
- return {
10
- publicKey: keypair.publicKey.toBase58(),
11
- privateKey: bs58.encode(keypair.secretKey),
12
- };
13
- }
14
- /**
15
- * Generate a new EVM wallet (for Hyperliquid)
16
- */
17
- export function generateEvmWallet() {
18
- const wallet = Wallet.createRandom();
19
- return {
20
- address: wallet.address,
21
- privateKey: wallet.privateKey,
22
- };
23
- }
24
- /**
25
- * Validate a Solana public key
26
- */
27
- export function isValidSolanaAddress(address) {
28
- try {
29
- const decoded = bs58.decode(address);
30
- return decoded.length === 32;
31
- }
32
- catch {
33
- return false;
34
- }
35
- }
36
- /**
37
- * Validate an EVM address
38
- */
39
- export function isValidEvmAddress(address) {
40
- return /^0x[a-fA-F0-9]{40}$/.test(address);
41
- }
42
- /**
43
- * Truncate address for display
44
- */
45
- export function truncateAddress(address, chars = 4) {
46
- if (address.length <= chars * 2 + 3)
47
- return address;
48
- return `${address.slice(0, chars + 2)}...${address.slice(-chars)}`;
49
- }
50
- //# sourceMappingURL=wallet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/lib/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAA;AAYvB;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;IAClC,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;QACvC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;KAC3C,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,CAAA;IACpC,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACpC,OAAO,OAAO,CAAC,MAAM,KAAK,EAAE,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,KAAK,GAAG,CAAC;IACxD,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IACnD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAA;AACpE,CAAC"}