@paylobster/cli 4.1.0 → 4.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.
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createBridgeCommand = createBridgeCommand;
7
+ const commander_1 = require("commander");
8
+ const wallet_1 = require("../lib/wallet");
9
+ const display_1 = require("../lib/display");
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const LIFI_API_URL = 'https://li.quest/v1';
12
+ // Chain name to ID mapping
13
+ const CHAIN_IDS = {
14
+ base: 8453,
15
+ solana: 1151111081099710,
16
+ ethereum: 1,
17
+ polygon: 137,
18
+ arbitrum: 42161,
19
+ optimism: 10,
20
+ avalanche: 43114,
21
+ bsc: 56,
22
+ };
23
+ /**
24
+ * Resolve chain name to chain ID
25
+ */
26
+ function resolveChainId(input) {
27
+ const lowerInput = input.toLowerCase();
28
+ if (CHAIN_IDS[lowerInput]) {
29
+ return CHAIN_IDS[lowerInput];
30
+ }
31
+ // Try to parse as number
32
+ const parsed = parseInt(input, 10);
33
+ if (!isNaN(parsed)) {
34
+ return parsed;
35
+ }
36
+ throw new Error(`Unknown chain: ${input}`);
37
+ }
38
+ /**
39
+ * Format amount with decimals
40
+ */
41
+ function formatTokenAmount(amount, decimals) {
42
+ const num = BigInt(amount);
43
+ const divisor = BigInt(10 ** decimals);
44
+ const whole = num / divisor;
45
+ const fraction = num % divisor;
46
+ if (fraction === 0n) {
47
+ return whole.toString();
48
+ }
49
+ const fractionStr = fraction.toString().padStart(decimals, '0');
50
+ const trimmed = fractionStr.replace(/0+$/, '');
51
+ return `${whole}.${trimmed}`;
52
+ }
53
+ /**
54
+ * Parse amount with decimals
55
+ */
56
+ function parseTokenAmount(amount, decimals) {
57
+ const [whole = '0', fraction = '0'] = amount.split('.');
58
+ const paddedFraction = fraction.padEnd(decimals, '0').slice(0, decimals);
59
+ return (BigInt(whole) * BigInt(10 ** decimals) + BigInt(paddedFraction)).toString();
60
+ }
61
+ /**
62
+ * Call Li.Fi API
63
+ */
64
+ async function callLiFiAPI(endpoint) {
65
+ const response = await fetch(`${LIFI_API_URL}${endpoint}`);
66
+ if (!response.ok) {
67
+ const errorText = await response.text();
68
+ throw new Error(`Li.Fi API error: ${response.status} - ${errorText}`);
69
+ }
70
+ return response.json();
71
+ }
72
+ /**
73
+ * Get bridge quote
74
+ */
75
+ async function getBridgeQuote(fromChain, toChain, fromToken, toToken, amount, fromAddress) {
76
+ const endpoint = `/quote?fromChain=${fromChain}&toChain=${toChain}&fromToken=${fromToken}&toToken=${toToken}&fromAmount=${amount}&fromAddress=${fromAddress}`;
77
+ const response = await callLiFiAPI(endpoint);
78
+ return response;
79
+ }
80
+ /**
81
+ * Get bridge status
82
+ */
83
+ async function getBridgeStatus(txHash) {
84
+ const endpoint = `/status?txHash=${txHash}`;
85
+ return callLiFiAPI(endpoint);
86
+ }
87
+ /**
88
+ * Get supported chains
89
+ */
90
+ async function getChains() {
91
+ const response = await callLiFiAPI('/chains');
92
+ return response.chains;
93
+ }
94
+ /**
95
+ * Create bridge command
96
+ */
97
+ function createBridgeCommand() {
98
+ const cmd = new commander_1.Command('bridge')
99
+ .description('Cross-chain token bridges using Li.Fi');
100
+ // Bridge quote subcommand
101
+ cmd
102
+ .command('quote')
103
+ .description('Get bridge quote')
104
+ .requiredOption('--from <chain>', 'Source chain (e.g., base, ethereum, solana)')
105
+ .requiredOption('--to <chain>', 'Destination chain')
106
+ .requiredOption('--token <token>', 'Token symbol (e.g., USDC)')
107
+ .requiredOption('--amount <amount>', 'Amount to bridge')
108
+ .option('--json', 'Output as JSON')
109
+ .action(async (options) => {
110
+ try {
111
+ const address = (0, wallet_1.getWalletAddress)();
112
+ const fromChainId = resolveChainId(options.from);
113
+ const toChainId = resolveChainId(options.to);
114
+ // Assume 6 decimals for USDC, 18 for others
115
+ const decimals = options.token.toUpperCase() === 'USDC' ? 6 : 18;
116
+ const amount = parseTokenAmount(options.amount, decimals);
117
+ const quote = await (0, display_1.withSpinner)('Fetching bridge quote...', async () => getBridgeQuote(fromChainId, toChainId, options.token, options.token, amount, address));
118
+ const fromAmount = formatTokenAmount(quote.estimate.fromAmount, quote.action.fromToken.decimals);
119
+ const toAmount = formatTokenAmount(quote.estimate.toAmount, quote.action.toToken.decimals);
120
+ // Calculate fee
121
+ const totalFeeUSD = quote.estimate.feeCosts.reduce((sum, fee) => sum + parseFloat(fee.amountUSD || '0'), 0);
122
+ const feeAmount = parseFloat(fromAmount) - parseFloat(toAmount);
123
+ // Format time
124
+ const timeMinutes = Math.ceil(quote.estimate.executionDuration / 60);
125
+ if ((0, display_1.outputJSON)({
126
+ fromChain: options.from,
127
+ toChain: options.to,
128
+ token: options.token.toUpperCase(),
129
+ fromAmount,
130
+ toAmount,
131
+ fee: feeAmount.toFixed(decimals),
132
+ feeUSD: totalFeeUSD.toFixed(2),
133
+ estimatedTime: `${timeMinutes} min`,
134
+ via: quote.toolDetails.name,
135
+ }, options)) {
136
+ return;
137
+ }
138
+ // Pretty output
139
+ console.log();
140
+ console.log(chalk_1.default.bold.cyan('🌉 Bridge Quote'));
141
+ console.log();
142
+ console.log(' From:', chalk_1.default.white.bold(fromAmount), chalk_1.default.gray(`${options.token.toUpperCase()} (${options.from})`));
143
+ console.log(' To: ', chalk_1.default.white.bold(toAmount), chalk_1.default.gray(`${options.token.toUpperCase()} (${options.to})`));
144
+ console.log(' Fee: ', chalk_1.default.yellow(feeAmount.toFixed(decimals)), chalk_1.default.gray(`${options.token.toUpperCase()} (~$${totalFeeUSD.toFixed(2)})`));
145
+ console.log(' Time:', chalk_1.default.gray(`~${timeMinutes} min`));
146
+ console.log(' Via: ', chalk_1.default.gray(quote.toolDetails.name));
147
+ console.log();
148
+ }
149
+ catch (err) {
150
+ (0, display_1.error)(`Failed to get bridge quote: ${err}`);
151
+ process.exit(1);
152
+ }
153
+ });
154
+ // Bridge execute subcommand
155
+ cmd
156
+ .command('execute')
157
+ .description('Execute cross-chain bridge')
158
+ .requiredOption('--from <chain>', 'Source chain (e.g., base, ethereum, solana)')
159
+ .requiredOption('--to <chain>', 'Destination chain')
160
+ .requiredOption('--token <token>', 'Token symbol (e.g., USDC)')
161
+ .requiredOption('--amount <amount>', 'Amount to bridge')
162
+ .option('--yes', 'Skip confirmation')
163
+ .option('--json', 'Output as JSON')
164
+ .action(async (options) => {
165
+ try {
166
+ const address = (0, wallet_1.getWalletAddress)();
167
+ const fromChainId = resolveChainId(options.from);
168
+ const toChainId = resolveChainId(options.to);
169
+ const decimals = options.token.toUpperCase() === 'USDC' ? 6 : 18;
170
+ const amount = parseTokenAmount(options.amount, decimals);
171
+ const quote = await (0, display_1.withSpinner)('Fetching bridge quote...', async () => getBridgeQuote(fromChainId, toChainId, options.token, options.token, amount, address));
172
+ const fromAmount = formatTokenAmount(quote.estimate.fromAmount, quote.action.fromToken.decimals);
173
+ const toAmount = formatTokenAmount(quote.estimate.toAmount, quote.action.toToken.decimals);
174
+ // Show quote and confirm
175
+ if (!options.yes) {
176
+ console.log();
177
+ console.log(chalk_1.default.bold.cyan('🌉 Bridge Quote'));
178
+ console.log();
179
+ console.log(' From:', chalk_1.default.white.bold(fromAmount), chalk_1.default.gray(`${options.token.toUpperCase()} (${options.from})`));
180
+ console.log(' To: ', chalk_1.default.white.bold(toAmount), chalk_1.default.gray(`${options.token.toUpperCase()} (${options.to})`));
181
+ console.log();
182
+ const confirmed = await (0, display_1.confirm)('Confirm bridge?');
183
+ if (!confirmed) {
184
+ (0, display_1.info)('Cancelled');
185
+ process.exit(0);
186
+ }
187
+ }
188
+ (0, display_1.info)('Bridge execution not yet implemented - requires viem integration');
189
+ (0, display_1.info)('Transaction data available in quote response');
190
+ if ((0, display_1.outputJSON)({
191
+ quote,
192
+ note: 'Execute bridge by sending transaction with quote.transactionRequest',
193
+ }, options)) {
194
+ return;
195
+ }
196
+ if (quote.transactionRequest) {
197
+ console.log();
198
+ (0, display_1.info)('To execute this bridge, send a transaction with the following data:');
199
+ console.log(chalk_1.default.gray(' To: '), quote.transactionRequest.to);
200
+ console.log(chalk_1.default.gray(' Data: '), quote.transactionRequest.data.slice(0, 66) + '...');
201
+ console.log();
202
+ }
203
+ }
204
+ catch (err) {
205
+ (0, display_1.error)(`Failed to execute bridge: ${err}`);
206
+ process.exit(1);
207
+ }
208
+ });
209
+ // Bridge status subcommand
210
+ cmd
211
+ .command('status')
212
+ .description('Check bridge transaction status')
213
+ .argument('<txHash>', 'Transaction hash')
214
+ .option('--json', 'Output as JSON')
215
+ .action(async (txHash, options) => {
216
+ try {
217
+ const status = await (0, display_1.withSpinner)('Fetching bridge status...', async () => getBridgeStatus(txHash));
218
+ if ((0, display_1.outputJSON)(status, options)) {
219
+ return;
220
+ }
221
+ console.log();
222
+ console.log(chalk_1.default.bold.cyan('🌉 Bridge Status'));
223
+ console.log();
224
+ console.log(' Status: ', chalk_1.default.white.bold(status.status));
225
+ console.log(' Substatus:', chalk_1.default.gray(status.substatus));
226
+ console.log();
227
+ console.log(' Sending:');
228
+ console.log(' Tx: ', chalk_1.default.gray(status.sending.txHash));
229
+ console.log(' Amount:', chalk_1.default.white(status.sending.amount), chalk_1.default.gray(status.sending.token.symbol));
230
+ if (status.receiving) {
231
+ console.log();
232
+ console.log(' Receiving:');
233
+ console.log(' Tx: ', chalk_1.default.gray(status.receiving.txHash));
234
+ console.log(' Amount:', chalk_1.default.white(status.receiving.amount), chalk_1.default.gray(status.receiving.token.symbol));
235
+ }
236
+ console.log();
237
+ }
238
+ catch (err) {
239
+ (0, display_1.error)(`Failed to get bridge status: ${err}`);
240
+ process.exit(1);
241
+ }
242
+ });
243
+ // List chains subcommand
244
+ cmd
245
+ .command('chains')
246
+ .description('List supported chains')
247
+ .option('--json', 'Output as JSON')
248
+ .action(async (options) => {
249
+ try {
250
+ const chains = await (0, display_1.withSpinner)('Fetching supported chains...', async () => getChains());
251
+ if ((0, display_1.outputJSON)({ chains }, options)) {
252
+ return;
253
+ }
254
+ console.log();
255
+ console.log(chalk_1.default.bold.cyan('🌐 Supported Chains'));
256
+ console.log();
257
+ // Show popular chains first
258
+ const popularChains = chains.filter(c => ['bas', 'eth', 'pol', 'arb', 'opt', 'sol', 'ava', 'bsc'].includes(c.key.toLowerCase()));
259
+ for (const chain of popularChains) {
260
+ console.log(chalk_1.default.white.bold(chain.name.padEnd(15)), chalk_1.default.gray(`ID: ${chain.id}`), chalk_1.default.dim(`(${chain.nativeToken.symbol})`));
261
+ }
262
+ console.log();
263
+ console.log(chalk_1.default.dim(`${chains.length} total chains supported`));
264
+ console.log();
265
+ }
266
+ catch (err) {
267
+ (0, display_1.error)(`Failed to fetch chains: ${err}`);
268
+ process.exit(1);
269
+ }
270
+ });
271
+ return cmd;
272
+ }
273
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/commands/bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Create portfolio command
4
+ */
5
+ export declare function createPortfolioCommand(): Command;
6
+ //# sourceMappingURL=portfolio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../../../src/commands/portfolio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwIpC;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAuFhD"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createPortfolioCommand = createPortfolioCommand;
7
+ const commander_1 = require("commander");
8
+ const wallet_1 = require("../lib/wallet");
9
+ const contracts_1 = require("../lib/contracts");
10
+ const config_1 = require("../lib/config");
11
+ const display_1 = require("../lib/display");
12
+ const chalk_1 = __importDefault(require("chalk"));
13
+ const BASE_TOKENS = [
14
+ { symbol: 'ETH', address: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', decimals: 18, isNative: true },
15
+ { symbol: 'USDC', address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', decimals: 6 },
16
+ { symbol: 'WETH', address: '0x4200000000000000000000000000000000000006', decimals: 18 },
17
+ { symbol: 'DAI', address: '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', decimals: 18 },
18
+ { symbol: 'USDbC', address: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', decimals: 6 },
19
+ ];
20
+ const ERC20_ABI = [
21
+ {
22
+ inputs: [{ name: 'account', type: 'address' }],
23
+ name: 'balanceOf',
24
+ outputs: [{ name: '', type: 'uint256' }],
25
+ stateMutability: 'view',
26
+ type: 'function',
27
+ },
28
+ ];
29
+ /**
30
+ * Format token amount with decimals
31
+ */
32
+ function formatTokenAmount(amount, decimals) {
33
+ const num = amount;
34
+ const divisor = BigInt(10 ** decimals);
35
+ const whole = num / divisor;
36
+ const fraction = num % divisor;
37
+ if (fraction === 0n) {
38
+ return whole.toString();
39
+ }
40
+ const fractionStr = fraction.toString().padStart(decimals, '0');
41
+ const trimmed = fractionStr.replace(/0+$/, '');
42
+ const limited = trimmed.slice(0, 6); // Limit to 6 decimal places for display
43
+ return `${whole}.${limited}`;
44
+ }
45
+ /**
46
+ * Get token price in USD (mock - in production, use price oracle)
47
+ */
48
+ async function getTokenPriceUSD(symbol) {
49
+ // Mock prices - in production, integrate with price oracle
50
+ const prices = {
51
+ ETH: 3000,
52
+ WETH: 3000,
53
+ USDC: 1,
54
+ DAI: 1,
55
+ USDbC: 1,
56
+ };
57
+ return prices[symbol] || 0;
58
+ }
59
+ /**
60
+ * Get token balance
61
+ */
62
+ async function getTokenBalance(address, token) {
63
+ const config = (0, config_1.loadConfig)();
64
+ const publicClient = (0, contracts_1.getPublicClient)(config.network);
65
+ if (token.isNative) {
66
+ // Get native ETH balance
67
+ return await publicClient.getBalance({ address });
68
+ }
69
+ // Get ERC20 token balance
70
+ try {
71
+ const balance = await publicClient.readContract({
72
+ address: token.address,
73
+ abi: ERC20_ABI,
74
+ functionName: 'balanceOf',
75
+ args: [address],
76
+ });
77
+ return balance;
78
+ }
79
+ catch (err) {
80
+ // If token doesn't exist or error, return 0
81
+ return 0n;
82
+ }
83
+ }
84
+ /**
85
+ * Get all token balances
86
+ */
87
+ async function getPortfolioBalances(address, tokens) {
88
+ const balances = await Promise.all(tokens.map(async (token) => {
89
+ const balanceRaw = await getTokenBalance(address, token);
90
+ const balance = formatTokenAmount(balanceRaw, token.decimals);
91
+ const price = await getTokenPriceUSD(token.symbol);
92
+ const valueUSD = parseFloat(balance) * price;
93
+ return {
94
+ symbol: token.symbol,
95
+ balance,
96
+ balanceRaw,
97
+ valueUSD,
98
+ };
99
+ }));
100
+ // Filter out zero balances and sort by USD value
101
+ return balances
102
+ .filter((b) => b.balanceRaw > 0n)
103
+ .sort((a, b) => b.valueUSD - a.valueUSD);
104
+ }
105
+ /**
106
+ * Create portfolio command
107
+ */
108
+ function createPortfolioCommand() {
109
+ const cmd = new commander_1.Command('portfolio')
110
+ .description('View token portfolio and balances')
111
+ .option('--chain <chain>', 'Filter by chain (currently only Base supported)', 'base')
112
+ .option('--json', 'Output as JSON')
113
+ .action(async (options) => {
114
+ try {
115
+ const address = (0, wallet_1.getWalletAddress)();
116
+ if (options.chain.toLowerCase() !== 'base') {
117
+ (0, display_1.error)('Currently only Base chain is supported');
118
+ process.exit(1);
119
+ }
120
+ const balances = await (0, display_1.withSpinner)('Fetching portfolio balances...', async () => getPortfolioBalances(address, BASE_TOKENS));
121
+ if (balances.length === 0) {
122
+ if ((0, display_1.outputJSON)({ balances: [], totalUSD: 0 }, options)) {
123
+ return;
124
+ }
125
+ console.log();
126
+ console.log(chalk_1.default.yellow('No token balances found'));
127
+ console.log();
128
+ return;
129
+ }
130
+ const totalUSD = balances.reduce((sum, b) => sum + b.valueUSD, 0);
131
+ if ((0, display_1.outputJSON)({
132
+ address,
133
+ chain: 'Base',
134
+ balances: balances.map(b => ({
135
+ symbol: b.symbol,
136
+ balance: b.balance,
137
+ valueUSD: b.valueUSD.toFixed(2),
138
+ })),
139
+ totalUSD: totalUSD.toFixed(2),
140
+ }, options)) {
141
+ return;
142
+ }
143
+ // Pretty output
144
+ console.log();
145
+ console.log(chalk_1.default.bold.cyan('💼 Portfolio'));
146
+ console.log(chalk_1.default.gray('─'.repeat(60)));
147
+ console.log(chalk_1.default.gray('Address: ') + chalk_1.default.white(address));
148
+ console.log(chalk_1.default.gray('Chain: ') + chalk_1.default.white('Base'));
149
+ console.log(chalk_1.default.gray('─'.repeat(60)));
150
+ console.log();
151
+ // Create table
152
+ const table = (0, display_1.createTable)({
153
+ head: ['Token', 'Balance', 'Value (USD)'],
154
+ colAligns: ['left', 'right', 'right'],
155
+ });
156
+ for (const token of balances) {
157
+ table.push([
158
+ chalk_1.default.white.bold(token.symbol),
159
+ chalk_1.default.white((0, display_1.formatNumber)(token.balance)),
160
+ chalk_1.default.green('$' + (0, display_1.formatNumber)(token.valueUSD.toFixed(2))),
161
+ ]);
162
+ }
163
+ console.log(table.toString());
164
+ console.log();
165
+ console.log(chalk_1.default.gray('─'.repeat(60)));
166
+ console.log(chalk_1.default.white.bold('Total Portfolio Value:'), chalk_1.default.green.bold('$' + (0, display_1.formatNumber)(totalUSD.toFixed(2))));
167
+ console.log(chalk_1.default.gray('─'.repeat(60)));
168
+ console.log();
169
+ console.log(chalk_1.default.dim('Note: Prices are approximate and for display only.'));
170
+ console.log();
171
+ }
172
+ catch (err) {
173
+ (0, display_1.error)(`Failed to fetch portfolio: ${err}`);
174
+ process.exit(1);
175
+ }
176
+ });
177
+ return cmd;
178
+ }
179
+ //# sourceMappingURL=portfolio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../../src/commands/portfolio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Create swap command
4
+ */
5
+ export declare function createSwapCommand(): Command;
6
+ //# sourceMappingURL=swap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../../src/commands/swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6JpC;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CA4M3C"}