@paylobster/cli 4.0.2 → 4.2.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.
Files changed (64) hide show
  1. package/IMPLEMENTATION_SUMMARY.md +288 -0
  2. package/NEW_FEATURES.md +228 -0
  3. package/dist/src/commands/bridge.d.ts +6 -0
  4. package/dist/src/commands/bridge.d.ts.map +1 -0
  5. package/dist/src/commands/bridge.js +273 -0
  6. package/dist/src/commands/bridge.js.map +1 -0
  7. package/dist/src/commands/cascade.d.ts +3 -0
  8. package/dist/src/commands/cascade.d.ts.map +1 -0
  9. package/dist/src/commands/cascade.js +242 -0
  10. package/dist/src/commands/cascade.js.map +1 -0
  11. package/dist/src/commands/compliance.d.ts +3 -0
  12. package/dist/src/commands/compliance.d.ts.map +1 -0
  13. package/dist/src/commands/compliance.js +121 -0
  14. package/dist/src/commands/compliance.js.map +1 -0
  15. package/dist/src/commands/credit-score.d.ts +3 -0
  16. package/dist/src/commands/credit-score.d.ts.map +1 -0
  17. package/dist/src/commands/credit-score.js +174 -0
  18. package/dist/src/commands/credit-score.js.map +1 -0
  19. package/dist/src/commands/dispute.d.ts +3 -0
  20. package/dist/src/commands/dispute.d.ts.map +1 -0
  21. package/dist/src/commands/dispute.js +241 -0
  22. package/dist/src/commands/dispute.js.map +1 -0
  23. package/dist/src/commands/intent.d.ts +3 -0
  24. package/dist/src/commands/intent.d.ts.map +1 -0
  25. package/dist/src/commands/intent.js +227 -0
  26. package/dist/src/commands/intent.js.map +1 -0
  27. package/dist/src/commands/oracle.d.ts +3 -0
  28. package/dist/src/commands/oracle.d.ts.map +1 -0
  29. package/dist/src/commands/oracle.js +114 -0
  30. package/dist/src/commands/oracle.js.map +1 -0
  31. package/dist/src/commands/portfolio.d.ts +6 -0
  32. package/dist/src/commands/portfolio.d.ts.map +1 -0
  33. package/dist/src/commands/portfolio.js +179 -0
  34. package/dist/src/commands/portfolio.js.map +1 -0
  35. package/dist/src/commands/revenue-share.d.ts +3 -0
  36. package/dist/src/commands/revenue-share.d.ts.map +1 -0
  37. package/dist/src/commands/revenue-share.js +185 -0
  38. package/dist/src/commands/revenue-share.js.map +1 -0
  39. package/dist/src/commands/stream.d.ts +3 -0
  40. package/dist/src/commands/stream.d.ts.map +1 -0
  41. package/dist/src/commands/stream.js +213 -0
  42. package/dist/src/commands/stream.js.map +1 -0
  43. package/dist/src/commands/swap.d.ts +6 -0
  44. package/dist/src/commands/swap.d.ts.map +1 -0
  45. package/dist/src/commands/swap.js +278 -0
  46. package/dist/src/commands/swap.js.map +1 -0
  47. package/dist/src/index.js +23 -1
  48. package/dist/src/index.js.map +1 -1
  49. package/dist/src/lib/types.d.ts +1 -0
  50. package/dist/src/lib/types.d.ts.map +1 -1
  51. package/package.json +1 -1
  52. package/src/commands/bridge.ts +443 -0
  53. package/src/commands/cascade.ts +280 -0
  54. package/src/commands/compliance.ts +123 -0
  55. package/src/commands/credit-score.ts +193 -0
  56. package/src/commands/dispute.ts +274 -0
  57. package/src/commands/intent.ts +261 -0
  58. package/src/commands/oracle.ts +116 -0
  59. package/src/commands/portfolio.ts +227 -0
  60. package/src/commands/revenue-share.ts +213 -0
  61. package/src/commands/stream.ts +244 -0
  62. package/src/commands/swap.ts +365 -0
  63. package/src/index.ts +23 -1
  64. package/src/lib/types.ts +1 -0
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCascadeCommand(): Command;
3
+ //# sourceMappingURL=cascade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../../../src/commands/cascade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,oBAAoB,IAAI,OAAO,CAmR9C"}
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCascadeCommand = createCascadeCommand;
4
+ const commander_1 = require("commander");
5
+ const display_1 = require("../lib/display");
6
+ function createCascadeCommand() {
7
+ const cmd = new commander_1.Command('cascade')
8
+ .description('Manage cascading payments');
9
+ // plob cascade create
10
+ cmd
11
+ .command('create')
12
+ .description('Create a cascading payment')
13
+ .requiredOption('--stages <number>', 'Number of stages')
14
+ .requiredOption('--amount <amount>', 'Total amount in USDC')
15
+ .requiredOption('--recipients <addresses>', 'Comma-separated recipient addresses')
16
+ .option('--json', 'Output as JSON')
17
+ .action(async (options) => {
18
+ try {
19
+ const stages = parseInt(options.stages);
20
+ if (isNaN(stages) || stages < 2) {
21
+ (0, display_1.error)('Invalid stages. Must be at least 2');
22
+ process.exit(1);
23
+ }
24
+ const amount = parseFloat(options.amount);
25
+ if (isNaN(amount) || amount <= 0) {
26
+ (0, display_1.error)('Invalid amount. Must be a positive number');
27
+ process.exit(1);
28
+ }
29
+ const recipients = options.recipients.split(',').map(r => r.trim());
30
+ // Validate all addresses
31
+ for (const recipient of recipients) {
32
+ if (!recipient.startsWith('0x') || recipient.length !== 42) {
33
+ (0, display_1.error)(`Invalid recipient address: ${recipient}`);
34
+ process.exit(1);
35
+ }
36
+ }
37
+ if (recipients.length !== stages) {
38
+ (0, display_1.error)(`Number of recipients (${recipients.length}) must match stages (${stages})`);
39
+ process.exit(1);
40
+ }
41
+ (0, display_1.info)(`Creating ${stages}-stage cascade`);
42
+ (0, display_1.info)(`Total amount: ${options.amount} USDC`);
43
+ (0, display_1.info)(`Recipients: ${recipients.map(display_1.formatAddress).join(' → ')}`);
44
+ const cascadeId = Math.floor(Math.random() * 1000000);
45
+ const txHash = await (0, display_1.withSpinner)('Creating cascade payment...', async () => {
46
+ // Placeholder - implement actual contract call
47
+ await new Promise(resolve => setTimeout(resolve, 2000));
48
+ return '0x' + Math.random().toString(16).substring(2, 66);
49
+ });
50
+ if ((0, display_1.outputJSON)({
51
+ cascadeId,
52
+ stages,
53
+ amount: options.amount,
54
+ recipients,
55
+ txHash,
56
+ }, options)) {
57
+ return;
58
+ }
59
+ (0, display_1.success)('Cascade payment created!');
60
+ (0, display_1.info)(`Cascade ID: ${cascadeId}`);
61
+ (0, display_1.info)(`Transaction: ${txHash}`);
62
+ }
63
+ catch (err) {
64
+ (0, display_1.error)(`Failed to create cascade: ${err}`);
65
+ process.exit(1);
66
+ }
67
+ });
68
+ // plob cascade release
69
+ cmd
70
+ .command('release')
71
+ .description('Release a specific cascade level')
72
+ .argument('<cascadeId>', 'Cascade ID')
73
+ .requiredOption('--level <level>', 'Level to release (1-based)')
74
+ .option('--yes', 'Skip confirmation')
75
+ .option('--json', 'Output as JSON')
76
+ .action(async (cascadeId, options) => {
77
+ try {
78
+ const level = parseInt(options.level);
79
+ if (isNaN(level) || level < 1) {
80
+ (0, display_1.error)('Invalid level. Must be at least 1');
81
+ process.exit(1);
82
+ }
83
+ if (!options.yes) {
84
+ const confirmed = await (0, display_1.confirm)(`Release level ${level} of cascade ${cascadeId}?`);
85
+ if (!confirmed) {
86
+ (0, display_1.info)('Cancelled');
87
+ process.exit(0);
88
+ }
89
+ }
90
+ const txHash = await (0, display_1.withSpinner)(`Releasing cascade level ${level}...`, async () => {
91
+ // Placeholder - implement actual contract call
92
+ await new Promise(resolve => setTimeout(resolve, 1500));
93
+ return '0x' + Math.random().toString(16).substring(2, 66);
94
+ });
95
+ if ((0, display_1.outputJSON)({
96
+ cascadeId,
97
+ level,
98
+ txHash,
99
+ }, options)) {
100
+ return;
101
+ }
102
+ (0, display_1.success)(`Cascade level ${level} released!`);
103
+ (0, display_1.info)(`Cascade ID: ${cascadeId}`);
104
+ (0, display_1.info)(`Transaction: ${txHash}`);
105
+ }
106
+ catch (err) {
107
+ (0, display_1.error)(`Failed to release cascade: ${err}`);
108
+ process.exit(1);
109
+ }
110
+ });
111
+ // plob cascade release-all
112
+ cmd
113
+ .command('release-all')
114
+ .description('Release all remaining cascade levels')
115
+ .argument('<cascadeId>', 'Cascade ID')
116
+ .option('--yes', 'Skip confirmation')
117
+ .option('--json', 'Output as JSON')
118
+ .action(async (cascadeId, options) => {
119
+ try {
120
+ if (!options.yes) {
121
+ const confirmed = await (0, display_1.confirm)(`Release ALL levels of cascade ${cascadeId}?`);
122
+ if (!confirmed) {
123
+ (0, display_1.info)('Cancelled');
124
+ process.exit(0);
125
+ }
126
+ }
127
+ const txHash = await (0, display_1.withSpinner)('Releasing all cascade levels...', async () => {
128
+ // Placeholder - implement actual contract call
129
+ await new Promise(resolve => setTimeout(resolve, 2000));
130
+ return '0x' + Math.random().toString(16).substring(2, 66);
131
+ });
132
+ if ((0, display_1.outputJSON)({
133
+ cascadeId,
134
+ txHash,
135
+ }, options)) {
136
+ return;
137
+ }
138
+ (0, display_1.success)('All cascade levels released!');
139
+ (0, display_1.info)(`Cascade ID: ${cascadeId}`);
140
+ (0, display_1.info)(`Transaction: ${txHash}`);
141
+ }
142
+ catch (err) {
143
+ (0, display_1.error)(`Failed to release cascade: ${err}`);
144
+ process.exit(1);
145
+ }
146
+ });
147
+ // plob cascade get
148
+ cmd
149
+ .command('get')
150
+ .description('Get cascade details')
151
+ .argument('<cascadeId>', 'Cascade ID')
152
+ .option('--json', 'Output as JSON')
153
+ .action(async (cascadeId, options) => {
154
+ try {
155
+ // Placeholder data
156
+ const cascade = {
157
+ id: cascadeId,
158
+ creator: '0x1234567890123456789012345678901234567890',
159
+ totalAmount: '1000 USDC',
160
+ stages: 3,
161
+ currentStage: 1,
162
+ recipients: [
163
+ { address: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb', released: true },
164
+ { address: '0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199', released: false },
165
+ { address: '0x1111111111111111111111111111111111111111', released: false },
166
+ ],
167
+ };
168
+ if ((0, display_1.outputJSON)(cascade, options)) {
169
+ return;
170
+ }
171
+ console.log();
172
+ console.log('Cascade ID: ', cascade.id);
173
+ console.log('Creator: ', cascade.creator);
174
+ console.log('Total Amount: ', cascade.totalAmount);
175
+ console.log('Stages: ', cascade.stages);
176
+ console.log('Current Stage: ', cascade.currentStage);
177
+ console.log();
178
+ console.log('Recipients:');
179
+ cascade.recipients.forEach((r, i) => {
180
+ const status = r.released ? '✅ Released' : '⏳ Pending';
181
+ console.log(` ${i + 1}. ${(0, display_1.formatAddress)(r.address)} - ${status}`);
182
+ });
183
+ console.log();
184
+ }
185
+ catch (err) {
186
+ (0, display_1.error)(`Failed to get cascade: ${err}`);
187
+ process.exit(1);
188
+ }
189
+ });
190
+ // plob cascade list
191
+ cmd
192
+ .command('list')
193
+ .description('List your cascades')
194
+ .option('--json', 'Output as JSON')
195
+ .action(async (options) => {
196
+ try {
197
+ // Placeholder data
198
+ const cascades = [
199
+ {
200
+ id: 1,
201
+ amount: '1000 USDC',
202
+ stages: 3,
203
+ currentStage: 1,
204
+ status: 'active',
205
+ },
206
+ {
207
+ id: 2,
208
+ amount: '500 USDC',
209
+ stages: 2,
210
+ currentStage: 2,
211
+ status: 'completed',
212
+ },
213
+ ];
214
+ if ((0, display_1.outputJSON)(cascades, options)) {
215
+ return;
216
+ }
217
+ if (cascades.length === 0) {
218
+ (0, display_1.info)('No cascades found');
219
+ return;
220
+ }
221
+ const table = (0, display_1.createTable)({
222
+ head: ['ID', 'Amount', 'Stages', 'Current', 'Status'],
223
+ });
224
+ for (const cascade of cascades) {
225
+ table.push([
226
+ cascade.id,
227
+ cascade.amount,
228
+ cascade.stages,
229
+ cascade.currentStage,
230
+ cascade.status,
231
+ ]);
232
+ }
233
+ console.log(table.toString());
234
+ }
235
+ catch (err) {
236
+ (0, display_1.error)(`Failed to list cascades: ${err}`);
237
+ process.exit(1);
238
+ }
239
+ });
240
+ return cmd;
241
+ }
242
+ //# sourceMappingURL=cascade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascade.js","sourceRoot":"","sources":["../../../src/commands/cascade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createComplianceCommand(): Command;
3
+ //# sourceMappingURL=compliance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.d.ts","sourceRoot":"","sources":["../../../src/commands/compliance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,uBAAuB,IAAI,OAAO,CAqHjD"}